SimpleSAMLphp をSP、OpenAMをIdP
以下のような流れ
○ OpenAMにSPを設定
よろしくやる。
別の件で試した時にはSP側がオレオレ証明書だとメタデータのURL指定で発見してくれないという不思議挙動を見た気がする。気をつけること。
後はSimpleSAMLphpのよくあるパターンで動く。
- とりあえずOpenAMをhttpsで見られるようにする
- サーバ証明書をOpenAMにも認識させる
- OpenAMの管理コンソールでIdPを登録する。証明書は上記で登録されたものを使う
- OpenAMにSPを登録する
- SPにOpenAMのメタデータを登録する
- SPからOpenAMにRequest送ってもらう
前回の流れからなので、OpenAMの設定はデフォルト。データベースはデモ用のやつのまま。前提としてサーバ証明書はあるものとする。Tomcat6を使っている。SimpleSAMLphp側もサーバ証明書は自己振出ではないちゃんとした奴にしてる。
成功するとこういう感じに。多分Attribute周りを全く設定してないのでこうなる。
○ httpsで
証明書、中間証明書、秘密鍵の三種類があるとき、まずそれらを保持するkeystoreを作って、それを/etc/tomcat6/server.xml の 8443ポート周りの設定で使うようにする。keytoolを使う
ここは世の中にたくさん資料があるようなので省略
○ OpenAMのAdminツールインストール
keystore.jksが出来た上でこれをOpenAMにも認識させる際、ampasswordというOpenAM独自のツールを使って、暗号化させた暗号鍵解読のパスワードとkeystoreのストアキーのパスワードを (install-root)/opensso/opensso/ 下の .keystore .storepass に入れておく必要がある。そのためにはまずAdminツールが必要。
今回の場合に限るとssoadmが正しく動く必要はじつはない、というか手元でまともに動いてない。
○ OpenAMのkeystore.jksとパスワードファイル2つを入れ替える
どうでも良いけど一瞬で終わると想像するampasswordはなぜか何十秒という単位で固まる (waitシステムコールで何か待ってた)。理由は謎。あなたの手元では起きないかもしれない。固まるけど、結果として認識したので良いや。VPSのせいかもしれないし。
○ OpenAMにhosted IdPを登録
とりあえずサーブレットリブートしとく
で、後は管理画面からよろしくやると、"test"だった鍵選択の部分で自分の鍵が出てくるに違いない。ちなみにパスワード間違えてたりすると「インストールされてない!」と怒る
○ OpenAMにSPを設定
よろしくやる。
別の件で試した時にはSP側がオレオレ証明書だとメタデータのURL指定で発見してくれないという不思議挙動を見た気がする。気をつけること。
○ SPにIdPを設定
SimpleSAMLphpのsaml20-idp-remote.phpにこんな感じに書く
$metadata['https://openam.example.com:8443/opensso'] = array (
'name' => 'openam_idp',
'metadata-set' => 'saml20-idp-remote',
'entityid' => 'https://openam.example.com:8443/opensso',
'SingleSignOnService' =>
array (
0 =>
array (
'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect',
'Location' => 'https://openam.example.com:8443/opensso/SSORedirect/metaAlias/idp',
),
),
'SingleLogoutService' => 'https://openam.example.com:8443/opensso/IDPSloRedirect/metaAlias/idp',
'certData' => 'しょうめいしょ',
'NameIDFormat' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:transient',
);
後はSimpleSAMLphpのよくあるパターンで動く。