ADFS環境でパスワードリセットを利用する方法

皆さんこんにちは。国井です。

突然ですけど、Azure AD Premiumで提供されている、パスワードリセットライトバック機能って便利ですよね。

外出先にいるユーザーがパスワードを忘れたときに、クラウド上からパスワードをリセットして新しいパスワードに設定し、さらにはディレクトリ同期でオンプレミスのActive Directoryのパスワードまでリセットしてくれるという優れものです。

しかし、ADFSサーバーを利用してSSO環境を構築している場合って、
パスワードリセットするときの下の画面って、ユーザー名を入力すると、勝手に画面推移して、

image

ADFSサーバーの認証画面に移動してしまうので、パスワードリセットするときのリンクはどこ?ってことになります。
↓こんな感じ

image

そんな時は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サーバーのサインインページにアクセスすると、ご覧のとおり。

image

リンクをクリックすると、ちゃんとパスワードリセットのページにリダイレクトされます。

image

ここまでのところでお気づきの方もいらしたかと思いますが、
(Office365のSSOの場合)ADFSサーバーのサインインページが表示されるのは、(基本的に)Webアプリケーションプロキシを経由するときだけです。つまり、ADFSサーバーでサインインページのカスタマイズを行えば、その設定はWebアプリケーションプロキシにも反映されるということです。

では次に、せっかくだから表示も「Can’t access your account?」ではなく、[アカウントにアクセスできない場合]にしましょう。
設定は、onload.jsファイルに追加した内容からCan’t access your account?の文字列を[アカウントにアクセスできない場合]に置き換えるだけです。そうすれば、ご覧のように日本語に切り替わります。

image

このときに気をつけたいのは、onload.jsファイルを保存するときに、名前を付けて保存でUTF-8形式で保存することです。単なる上書き保存してしまうと、ご覧のように文字化けしますので、ご注意ください。

image