1. はじめに
本メニューでは、IdPをカスタマイズします。
IdP Ver2からVer3にアップグレードを行い設定ファイルがコンバートされた環境に対して実施します。アップグレード直後の状態でも動作しますが、以降のカスタマイズで支障が出ますので適当なタイミングで下記手順を行うことをお勧めします。
Ver3形式にすると、IdP Ver3のデフォルト機能である送信属性同意機能が有効となります。
設定ファイルをVer3形式に修正し、認証確認まで行います。
2. 実習セミナーでは
以下の手順で作業を進めてください。
・idp.propertiesの修正
/opt/shibboleth-idp/conf/idp.properties
に、参照している証明書・秘密鍵の情報を設定します。
idp.signing.key= %{idp.home}/credentials/server.key
idp.signing.cert= %{idp.home}/credentials/server.crt
idp.encryption.key= %{idp.home}/credentials/server.key
idp.encryption.cert= %{idp.home}/credentials/server.crt
・credentials.xmlの確認
/opt/shibboleth-idp/conf/credentials.xml
が存在することを確認してください。
存在しなければ、以下のようにcredentials.xml.dist
をコピーして作成します。
lsコマンドを使ってファイルが存在するかを確認します。(以下、見つからない場合)
見つからない場合は、以下のようにコピーします。
# ls /opt/shibboleth-idp/conf/credentials.xml
ls: cannot access /opt/shibboleth-idp/conf/credentials.xml: そのようなファイルやディレクトリはありません# cp /opt/shibboleth-idp/dist/conf/credentials.xml.dist /opt/shibboleth-idp/conf/credentials.xml
このファイル(テンプレート)は上記idp.propertiesの変更部分を参照しているだけなので、ファイル内容の修正は不要です。
・relying-party.xmlの置き換え
/opt/shibboleth-idp/dist/conf/relying-party.xml.dist
でVer2からコンバートされたrelying-party.xml
を置き換えます。
特定のSPに対してSAML1アサーションに属性情報を含める、のようにrelying-party.xml
をカスタマイズしている場合は、その部分が失われますので置き換え後のrelying-party.xml
に対して修正・追加を行ってください。
# cp /opt/shibboleth-idp/dist/conf/relying-party.xml.dist /opt/shibboleth-idp/conf/relying-party.xml
上書きします。
cp: `/opt/shibboleth-idp/conf/relying-party.xml' を上書きしてもよろしいですか(yes/no)? y[Enter]
上書きしたrelying-party.xml
テンプレートに送信属性同意機能有効化が含まれています。無効にしたい場合は以下の部分を削除してください。
...
<bean parent="Shibboleth.SSO" p:postAuthenticationFlows="attribute-release" />
...
<bean parent="SAML2.SSO" p:postAuthenticationFlows="attribute-release" />
...
・metadata-providers.xmlの置き換えと修正
/opt/shibboleth-idp/dist/conf/metadata-providers.xml.dist
でVer2からコンバートされたmetadata-providers.xmlを置き換えます。
Ver2で設定していた値に修正するので、置き換える前にバックアップをとるなどして、確認できるようにしてください。
# cp /opt/shibboleth-idp/dist/conf/metadata-providers.xml.dist /opt/shibboleth-idp/conf/metadata-providers.xml
上書きします。
cp: `/opt/shibboleth-idp/conf/metadata-providers.xml' を上書きしてもよろしいですか(yes/no)? y[Enter]
また、以下のように修正します。
The EntityRoleWhiteList saves memory by only loading metadata from entity types
that you will interoperate with.
-->
← コメントアウト解除
<MetadataProvider id="HTTPMetadata"
xsi:type="FileBackedHTTPMetadataProvider"
backingFile="%{idp.home}/metadata/gakunin-metadata-backing.xml"
metadataURL="https://metadata.gakunin.nii.ac.jp/gakunin-test-metadata.xml">
<MetadataFilter xsi:type="RequiredValidUntil" maxValidityInterval="P15D" />
<MetadataFilter xsi:type="SignatureValidation"
requireSignedMetadata="true"
certificateFile="%{idp.home}/credentials/gakunin-test-signer-2011.cer"/> ← 最後に「/」を記述してタグを閉じます。
<!-- ← 公開鍵をファイルで指定するのでコメントアウト
<PublicKey>
THIS IS AN EXAMPLE
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxg0TyQAP/tIvOH89EtaX
uRRn8SYzTj7W1TbNY4VvBmobjkRmSkki4hH9x4sQpi635wn6WtXTN/FNNmkTK3N/
LspmBWxfZS+n+cc7I82E5yvCAPX67QsZgqgglp2W5dvK/FsMMCS6X6SVqzBLMP88
NenXKxY+HMxMs0sT0UKYh1cAEqadrHRBO65aDBcm5a0sBVYt9K6pgaOHrp/zSIbh
nR5tFFLjBbtFktDpHL3AdGBH3OYidNGKBO3tJ3Ms7LeKXsM0+0Y4P+9fHZINL2X3
E2N6GVnKs5PZTg9sP0FtIpAbYm/+zCx7Yj1ET/Er8mDd6tNVGSQsn9s5xUBwGqn1
4wIDAQAB
</PublicKey>
</MetadataFilter>--> ← 公開鍵をファイルで指定するのでコメントアウト
<MetadataFilter xsi:type="EntityRoleWhiteList">
<RetainedRole>md:SPSSODescriptor</RetainedRole>
</MetadataFilter>
</MetadataProvider>
<!-- --> ← コメントアウト解除
・services.propertiesの修正
Ver3の形式で読み込むように/opt/shibboleth-idp/conf/services.properties
を修正します。
#idp.service.relyingparty.resources= shibboleth.LegacyRelyingPartyResolverResources
idp.service.relyingparty.resources= shibboleth.RelyingPartyResolverResources ※Legacyを削除した値を設定します。
・Tomcatの再起動
Tomcatを再起動して、Ver3形式に変換した設定ファイルを読み込ませます。
# service tomcat7 restart
3. 手順書
以下は、英語での情報が記載されたwiki.shibboleth.netのURLです。手順の詳細にご興味がある方はご参照ください。
参考: Installation
4. 動作確認
① 各自が使用するSPの接続確認用ページにアクセスします。
例)1番を割り振られた場合 https://ex-sp-test01.gakunin.nii.ac.jp/
② ログインボタンをクリックします。
③ DSの所属機関の選択画面が表示されるので、各自が使用するIdPを選択します。
④ IdPのログイン画面が表示されます。
⑤ Username/Passwordを入力して認証を行います。
⑥ 送信属性同意画面が表示される事を確認します。
⑦ 正しく属性受信の確認ページが表示される事を確認してください。