皆さんこんにちは。国井です。
突然ですけど、Azure AD Premiumで提供されている、パスワードリセットライトバック機能って便利ですよね。
外出先にいるユーザーがパスワードを忘れたときに、クラウド上からパスワードをリセットして新しいパスワードに設定し、さらにはディレクトリ同期でオンプレミスのActive Directoryのパスワードまでリセットしてくれるという優れものです。
しかし、ADFSサーバーを利用してSSO環境を構築している場合って、
パスワードリセットするときの下の画面って、ユーザー名を入力すると、勝手に画面推移して、
ADFSサーバーの認証画面に移動してしまうので、パスワードリセットするときのリンクはどこ?ってことになります。
↓こんな感じ
そんな時はADFSサーバーのサインインページをカスタマイズして、[アカウントにアクセスできない場合]リンクを追加しましょう。
[アカウントにアクセスできない場合]リンクをクリックするとアクセスする先となるURLは
https://passwordreset.microsoftonline.com/
なので、このURLリンクを持つ注釈をWebページに追加してあげればいいのです。
設定方法は、、と書こうと思ったら、Active Directory Team Blogに掲載されていたので、参考にしてみましょう。
最初に、ADFSサーバーのサインインページ群がDefaultという名前のプロファイルで作成されているので、
これをコピーして新しいプロファイルを作成します。
New-ADFSWebTheme -Name PasswordReset -SourceName default
Export-ADFSWebTheme -Name PasswordReset -DirectoryPath C:\Theme
ここまでの操作でC:\Themeフォルダーにプロファイルが保存されました。
(C:\Themeフォルダーは先に作成しておいてくださいね)
続いて、C:\Theme\script\onload.jsファイルをメモ帳で開き、最終行から
Active Directory Team Blogの
Step 2: Tweak onload.js to add the linkに掲載されいているスクリプトをそのままコピーしましょう。
コピーできたら、上書き保存。
後は、カスタマイズしたファイルを含むプロファイルをADFSサーバーに適用するだけです。
Set-AdfsWebTheme -TargetName PasswordReset -AdditionalFileResource @{Uri=’/adfs/portal/script/onload.js’;path=”c:\Theme\script\onload.js”}
Set-AdfsWebConfig -ActiveThemeName PasswordReset
これで完成です。
ADFSサーバーのサインインページにアクセスすると、ご覧のとおり。
リンクをクリックすると、ちゃんとパスワードリセットのページにリダイレクトされます。
ここまでのところでお気づきの方もいらしたかと思いますが、
(Office365のSSOの場合)ADFSサーバーのサインインページが表示されるのは、(基本的に)Webアプリケーションプロキシを経由するときだけです。つまり、ADFSサーバーでサインインページのカスタマイズを行えば、その設定はWebアプリケーションプロキシにも反映されるということです。
では次に、せっかくだから表示も「Can’t access your account?」ではなく、[アカウントにアクセスできない場合]にしましょう。
設定は、onload.jsファイルに追加した内容からCan’t access your account?の文字列を[アカウントにアクセスできない場合]に置き換えるだけです。そうすれば、ご覧のように日本語に切り替わります。
このときに気をつけたいのは、onload.jsファイルを保存するときに、名前を付けて保存でUTF-8形式で保存することです。単なる上書き保存してしまうと、ご覧のように文字化けしますので、ご注意ください。