OpenAM 13のユーザーセルフサービスとGoogle reCAPTCHAを使う

OpenAM 12.0.0では、XUI(※)ベースの「ユーザーセルフサービス」という機能が導入されました。ユーザセルフサービスは、次のようなユーザーの自身の情報を管理するためのサービスです。

  • ユーザー自身によるアカウントの登録
  • ログイン時に使用したデバイスの管理
  • パスワードのリセット

さらにバージョン13.0.0では、UMA(※2)のリソース共有管理機能の追加や、パスワードリセット時にKBA(※3)やGoogle reCAPTCHAで本人性を確認するといったことも可能になっています。

  • ※1:OpenAMから導入された新しいJavaScriptベースのユーザーインターフェイス。
  • ※2:User Managed Access:OAuth 2.0を拡張したアクセス管理プロトコル
  • ※3:Knowledge Based Authentication:ナレッジベース認証

今回は、KBAとGoogle reCAPTCHAを使ったパスワードリセット機能について紹介します。この機能を設定した場合、ユーザーがパスワードをリセットするフローは次のようになります。

flow

概要

KBAとは、いわゆる秘密の質問と回答のことです。ユーザーが設定した秘密の質問を回答することで本人であることを確認する仕組みです。Google reCAPTCHAは、Googleが提供する、ロボットによるなりすましを防止する機能です。パスワードをリセットするプロセスで、KBAとreCAPTCHAを使って、本人性を確認します。

hero-recaptcha-demo

設定

設定は簡単です。まずはGoogle側の設定をします。Googleアカウントでログインしてから、Google reCAPTCHAのページにアクセスし、このページの右上の「Gget reCAPTCHA」ボタンをクリックします。

Screenshot-9

適当なラベル名とOpenAMサーバーのドメインを入力します。私の環境では、OpenAMサーバーのホスト名(FQDN)がopenam09.example.co.jpなので、Domainsには「example.co.jp」と入力します。入力したら「Register」ボタンをクリックします。

Screenshot-10

完了すると、「Site key」と「Secret key」が発行されます。これらの値は、後でOpenAMの設定で使用するので、このページはこのまま開いておいて下さい。

screenshot-8

次に、OpenAMの設定を行います。管理コンソールにamadminでログインして、設定 > グローバル > User Self Service をクリックします。

Screenshot-2

画面の最上部に「Google Re-captcha Site key」と「Google Re-captcha Secret key」の入力欄があるので、先ほど取得した値を入力します。

screenshot-3

画面の中央部に「Forgotten Password」のセクションがあるので、全てのチェックボックスにチェックを入れて、「保存」ボタンをクリックします。

screenshot-4

パスワードをリセットするためのURLはメールでユーザーに通知するため、「電子メールサービス」の設定も必要です。設定 > グローバル > 電子メールサービス をクリックします。

Screenshot-5

送信可能なSMTPサーバーのホスト名、ポート番号、認証ユーザーのIDとパスワードを入力して下さい。

Screenshot-6

これで、基本的な設定は完了です。

パスワードリセットの動作検証するために、適当な名前でユーザーを作成します。作成したら、電子メールアドレスを設定して下さい。

Screenshot-7

管理コンソールからログアウトして、秘密の質問と回答を設定するため、作成したユーザーでOpenAMにログインします。

Screenshot52

適当な質問を選択し、その回答を入力します。今回は秘密の質問はデフォルトで用意されている「What is the name of your favourite restaurant?」(お気に入りのレストランは?)で、回答は「denny’s」(デニーズ)としました。

※日本語で設定して、日本語で回答することも可能です。

Screenshot91

動作確認

それでは、実際に動作確認してみましょう。OpenAMのログイン画面にアクセスして下さい。「Forgotten Password」のチェックがしてある場合(有効の場合)は、以下のように「Forgot Password」のリンクが表示されます。

Screenshot51

このリンクをクリックすると、Google reCAPTCHの画像が表示されます。「私はロボットではありません」にチェックを入れます。

Screenshot-1

すると、次のような画像認証システムが表示されます。画面の指示に従って、画像を選択して「確認」ボタンをクリックして下さい。

Screenshot-2

パスワードリセット画面が表示されるので、メールアドレスを入力して「SUBMIT」ボタンをクリックします。

Screenshot-3

登録したアドレスにメールが送信された旨が表示されるので、メールを確認してみます。

screenshot-41

これまでの設定に問題がなければ、パスワードをリセットするためのページにアクセスするためのリンクを含んだメールが送信されているはずです。

mail

リンクをクリックすると、秘密との質問に対する回答を入力する画面が表示されます。先ほど設定した回答(denny’s)を入力して下さい。

screenshot-61

間違いがなければ、パスワードリセット画面が表示されます。新しいパスワードを入力して、パスワードをリセットして下さい。

Screenshot-7

これでパスワードがリセットされました。

screenshot-81

以上で完了です。

注意事項

一点注意事項があります。OpenAMを11.0.xからアップグレードしてからユーザーセルフサービスを使用する場合は、以下のような「Unable to find account」のメッセージが表示されて、正常に機能しません。

Screenshot54

この場合は、グローバル設定のREST APIsページで、「Default Version」を「Oldest」から「Latest」に変更してみて下さい。

Screenshot53

ユーザーセルフサービスの処理内で実行されるユーザー検索は新しいバージョンのREST APIを使用しているのですが、アップグレード後は下位互換性の保証のために、古いバージョンのREST APIを使用するようになっていて、それによりこのような問題が起こります。


 

今回紹介した以外にも、ユーザーセルフサービス機能やオプションの設定はあります。OpenAM 13.0.0の管理者ガイドのユーザーセルフサービスのセクションを参照して、試してみて下さい。

広告

OpenAM 13のユーザーセルフサービスとGoogle reCAPTCHAを使う」への1件のフィードバック

  1. ピンバック: OpenAM 13のユーザーセルフサービスとGoogle reCAPTCHAを使う | OSS ∞ Lab | ミリオンハイスクール | ネットビジネス | WordPress

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中