2013年12月22日日曜日

OpenAM 11.0.0 インストール

現時点(12/22)で最新版であるOpenAM 11.0.0のインストール方法について説明する。

①以下のForgeRockサイトからopenamのwarファイルをダウンロードする。

 https://backstage.forgerock.com/#/downloads

②warファイルをglassfishに配備する
※ここではアプリケーションサーバとしてGlassfish v2.2を使用。
※ポートは8080とする。

③以下のURLにアクセスする。
http://localhost:8080/OpenAM-11.0.0

「設定オプション」において、「カスタム設定」にある「新しい設定の作成」を選択する。



④ OpenAMの管理ユーザのパスワードを指定する(パスワード長は8文字以上)。
「次へ」ボタンを押す。



⑤「サーバー設定」において、以下を入力する。「次へ」ボタンを押す。
・サーバーURL: OpenAMを配備するURL
・Cookieドメイン: クッキーのドメイン(※先頭に"."を付け忘れないこと)
・プラットフォームロケール:en_US
・設定ディレクトリ:OpenAMの設定ファイルを格納するディレクトリ



 ⑥OpenAMの設定データストアの情報を設定する。OpenAM付属のOpenDJを選択し、「次へ」を押す。


⑦OpenAMのユーザーデータストアの情報を設定する。OpenAM付属のOpenDJを使用するため、「OpenAMのユーザーストア」を選択し、「次へ」を押す。
※本稼動環境は未サポートである旨の警告メッセージが表示されるが、無視。


⑧「サイト設定」において、「いいえ」を選択し、「次へ」を押す。
※今回はロードバランサで負荷分散はしないため。

 
⑨「デフォルトのポリシーエージェントユーザ」において、パスワードを入力する。「次へ」を押す。


⑩「設定ツールの概要と詳細」において、「設定の作成」ボタンを押す。
インストールが開始される。


⑪インストール完了後、以下のURLにアクセスし、ログイン画面が表示されることを確認する。また、OpenAMの管理ユーザでログインできることを確認する。

http://localhost:8080/OpenAM-11.0.0

SAML 2.0 Single Logout

SAML2.0規約で規定するシングルログアウトについて勉強する。

下図で示すように、複数のSP(Service Provider)とIdP間でシングルサインオンした場合、ログアウト時には、すべてのSP/IdPとクライアントとの間で確立した認証セッションを安全に終了させることが重要となる。SAML2.0仕様では、この仕組みを規定している。



 

SAML2.0仕様では、大きく以下の2種類のシングルログアウトの方法を規定する。
  • SP Initiated
    SPがシングルログアウトの起点になる方法。
    たとえば、利用者はSP Aの業務アプリケーションを利用中であり、ログアウトボタンを押す。まず、SP AからIdPにシングルログアウト要求を出す。IdPでは利用者とのセッションを終了させた後、現在利用者とセッションを確立中であるSP Bに対してシングルログアウト要求を出す。
  • IdP Initiated
    IdPがシングルログアウトの起点になる方法。
    たとえば、利用者はIdPを利用中であり、ログアウトボタンを押す。IdPでは、現在利用者とセッションを確立中であるSP AおよびSP Bに対してシングルログアウト要求を出す。


上記の2種類のシングルログアウトでは、IdPにおいて、どのSPが利用者との認証セッションを確立しているのかを管理することが必要となる。SAMLでは、Session Indexという識別子を用いて実現する。
IdPでは、シングルサインオン時にSPに対して認証アサーションを発行する。このとき、認証アサーションには、Session Indexも含めて発行する。SPでは、IdPから受信した認証アサーション内のSession Indexと、利用者とのローカルセッションのマッピング情報を管理する。
シングルログアウト時には、Session Indexを設定することにより、どのセッションを終了させたいのかを指定することが可能となる。

■シングルログアウトのメッセージ例
※<SessionIndex>要素の値としてSession Indexを指定してシングルログアウト要求を出す。
<samlp:LogoutRequest  xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" ID="s239dcd741931119aa038e59df6b080c4b8581faae" Version="2.0" IssueInstant="2012-01-07T14:03:15Z" Destination="http://openam.yasuyasu.com:38080/openam/IDPSloRedirect/metaAlias/idp"><saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">http://openam.yasuyasu.com:28080/openam</saml:Issuer><saml:NameID xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" NameQualifier="http://openam.yasuyasu.com:38080/openam" SPNameQualifier="http://openam.yasuyasu.com:28080/openam" Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent">fdnShhUunBzV4YXtq4U+i8/c+IG6</saml:NameID>
<samlp:SessionIndex xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
s22d9e5d52b4a97720268e30cc09e02257f42c5d01
</samlp:SessionIndex>
</samlp:LogoutRequest>