これまでOpenAMでシングルサインオンをするためのパターンをいくつか紹介しました。
シングルサインオンは「一回ログインすれば複数のサービスを利用できる」ことが利点ですが
反面、「攻撃者にログインされると複数サービスを利用されてしまう」という欠点もあります。
この欠点を補うのが「多要素認証」になります。
今回は多要素認証の一つであるHOTP認証をOpenAMでやってみたいと思います。
参考URLはこちら
OSSによるアイデンティティ管理(2):不正ログインを食い止めろ! OpenAMで認証強化 (1⁄2) - @IT
OpenAMが提供する様々な認証方式 (1/4):CodeZine
Netforest Developer’s Note - OpenSSOでワンタイムパスワード
Chapter 2. Defining Authentication Services
https://www.osstech.co.jp/_media/techinfo/seminar/openam-shibboleth.pdf
OpenAMの設定
アクセス制御>対象のレルム>認証 のモジュールインスタンスでHOTPをクリック。今回はGmailのSMTPサーバを使うので以下のように編集。
ユーザ名/パスワードはそれぞれGmailのユーザ名/パスワードを入力する。
アクセス制御>対象のレルム>認証 の認証連鎖で新規の認証連鎖を作成
対象の認証連鎖の設定を以下のように編集します。
認証設定を以下のように変更します。
上記設定で/openam/UI/LoginでログインするときにはHOTPの認証連鎖設定が適用され
/openam/consoleでログインすると きには通常のID/パスワード認証のみの設定が適用されます。
これにより、設定ミスによってadminがログインできない状態になることを防ぎます。
最後に アクセス制御>対象のレルム>対象>対象のユーザ でメールアドレスを設定
動作確認
ログイン画面(/openam/UI/Login)でID/パスワード認証後、以下の画面が出てきます。OTPコードの要求をすると対象のユーザ(ログイン失敗したユーザ)のメールアドレスに
ワンタイムパスワードの通知メールが届きます。(自動送信も可能)
あとはこのワンタイムパスワードを「OTPコードの入力」に入れてOTPコードの送信をすれば認証完了。
このHOTP認証モジュールではメール送信以外に
SMSを使って携帯電話にワンタイムパスワードを送ることも可能みたいです。