Shibboleth IdP administrative logoutを試してみた

logo of shibboleth
◆ Live配信スケジュール ◆
サイオステクノロジーでは、Microsoft MVPの武井による「わかりみの深いシリーズ」など、定期的なLive配信を行っています。
⇒ 詳細スケジュールはこちらから
⇒ 見逃してしまった方はYoutubeチャンネルをご覧ください
【5/21開催】Azure OpenAI ServiceによるRAG実装ガイドを公開しました
生成AIを活用したユースケースで最も一番熱いと言われているRAGの実装ガイドを公開しました。そのガイドの紹介をおこなうイベントです!!
https://tech-lab.connpass.com/event/315703/

こんにちは。サイオステクノロジーの服部です。

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を設定するようにするのもいいかもしれないですね。

参考ページ

About 服部祥大 2 Articles
2022年サイオステクノロジー入社文教・インフラ案件をメインに行っています。

ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

0人がこの投稿は役に立ったと言っています。


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる