この記事は1年以上前に投稿された記事で現在は正しい情報とは限りません。

これまで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をクリック。

openam-hotp-authmodules

今回はGmailのSMTPサーバを使うので以下のように編集。

ユーザ名/パスワードはそれぞれGmailのユーザ名/パスワードを入力する。

openam-hotpsetting

アクセス制御>対象のレルム>認証 の認証連鎖で新規の認証連鎖を作成

openam-authchain1

対象の認証連鎖の設定を以下のように編集します。

openam-hotp-authchain1

認証設定を以下のように変更します。

openam-hotp-core

上記設定で/openam/UI/LoginでログインするときにはHOTPの認証連鎖設定が適用され

/openam/consoleでログインすると きには通常のID/パスワード認証のみの設定が適用されます。

これにより、設定ミスによってadminがログインできない状態になることを防ぎます。

 

最後に アクセス制御>対象のレルム>対象>対象のユーザ でメールアドレスを設定openam-usermailsetting

 

動作確認

ログイン画面(/openam/UI/Login)でID/パスワード認証後、以下の画面が出てきます。

openam-hotp-authpage

OTPコードの要求をすると対象のユーザ(ログイン失敗したユーザ)のメールアドレスに

ワンタイムパスワードの通知メールが届きます。(自動送信も可能)

openam-otp-mail

あとはこのワンタイムパスワードを「OTPコードの入力」に入れてOTPコードの送信をすれば認証完了。

openam-hotp-authpage2

 

このHOTP認証モジュールではメール送信以外に

SMSを使って携帯電話にワンタイムパスワードを送ることも可能みたいです。