こんにちは。サイオステクノロジーの服部です。
Shibboleth IdP 4.3で追加された機能であるadministrative logoutを試してみたので、簡単にまとめます。
administrative logoutは、アカウント侵害が確認された際などに、特定時刻以前の既存IdPセッションを失効させるための機能です。
LDAPに格納されたパスワードを変更した場合に、IdPセッションが残っていると、変更後のパスワードを入力することなくSPにログインすることができてしまいます。administrative logoutを使用することで、既存IdPセッションを失効させ、ログイン画面へ遷移させることができます。
設定
administrative logoutにはAttributeベースの失効と、StorageServiceベースの失効の2種がありますが、今回はAttributeベースの失効をLDAPにデータを格納して試してみます。
※StorageServiceベースの失効では、RESTインターフェースを通じて失効情報を確認、変更することができます。
以下、Shibbolethのデフォルト設定からの変更点を記載します。
Shibboleth IdPインストールディレクトリ配下「conf/authn/authn.properties」を以下のように書き換えます。
# Revocation (administrative logout)
#idp.authn.revocation = false
⇒ idp.authn.revocation = true
# Default implementation based on a StorageService bean.
#idp.authn.revocation.StorageService = shibboleth.StorageService
⇒ idp.authn.revocation.StorageService = shibboleth.AttributeRevocationCondition
同ファイルに「idp.auth.revocation.attributeId」を設定することで、使用する属性を指定することができますが、今回は特に指定せずデフォルトの「revocation」を使用します。
idp.authn.revocation.attributeId = CustomAttr
「conf/authn/attribute-filter.xml」にLDAPから「revocation」を取得する設定を追加します。
・・・前略・・・
<DataConnector id="myLDAP" xsi:type="LDAPDirectory"
・・・中略・・・
exportAttributes="... revocation">
・・・中略・・・
<Column columnName="testAttr01" attributeID="revocation" />
</DataConnector>
・・・後略・・・
動作確認
学認フェデレーションのSAML2属性表示サービス(テストSP2)を使用して挙動を試してみます。
administrative logoutなし
まずは、revocationを設定しない場合の挙動を確認します。
SPからログアウトした後もIdP側のセッションが維持されているため、パスワードを確認されることなく再度SPにログインすることができます。
また、LDAP側でパスワードを変更しても、既存のIdPセッションが有効な間は、SPのログイン時にパスワードの確認が行われません。
administrative logoutあり
次に、revocationを設定した際の挙動を確認します。
先ほどの例と同様にLDAP上でパスワード変更を行いますが、その際にrevocationを設定します。
revocationに設定した時間より前のセッションが失効扱いとなるため、今回はパスワード変更を行った時刻を設定しています。
※時刻は秒単位のunixtimeで設定する必要があります。
パスワード変更後にSPにログインを行おうとするとIdPセッションが失効しているため、
パスワードの確認画面が表示され。
まとめ
administrative logoutを使用することで、LDAP側のパスワード変更などのタイミングで、
IdPセッションをログアウト(実際には失効)することができるようになります。
今回はパフォーマンスへの影響は調査できていませんが、問題ないようなら、
LDAPパスワード変更時にrevocationを設定するようにするのもいいかもしれないですね。
参考ページ
- AdministrativeLogoutConfiguration – Identity Provider 4 – Confluence