Shibboleth IdPでStoredIDを利用するための設定方法(MySQL)
注意 |
---|
本ページの内容はIdPバージョン2時代のものです。IdPv3での設定方法は、GakuNinShare:Shibboleth IdP 3 のstoredIdの項をご参照ください。 |
StoredIDはeduPersonTargetedID(ePTID)を生成する方法の一つで、 ComputedIDと比較して、
- 使用中のePTIDを失効させ新しいIDを再生成できる
- 万が一のSHA-1のコリジョンを防げる
- インシデント発生時に、IdP側でePTIDから個人を特定するのが容易
という利点があります。
...
1. attribute-resolver.xmlの以下の部分を修正する。
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
<resolver:AttributeDefinition id="eduPersonTargetedID" xsi:type="SAML2NameID" xmlns="urn:mace:shibboleth:2.0:resolver:ad" nameIdFormat="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent" sourceAttributeID="storedID"> <resolver:Dependency ref="storedID" /> <resolver:AttributeEncoder xsi:type="SAML1XMLObject" xmlns="urn:mace:shibboleth:2.0:attribute:encoder" name="urn:oid:1.3.6.1.4.1.5923.1.1.1.10" /> <resolver:AttributeEncoder xsi:type="SAML2XMLObject" xmlns="urn:mace:shibboleth:2.0:attribute:encoder" name="urn:oid:1.3.6.1.4.1.5923.1.1.1.10" friendlyName="eduPersonTargetedID" /> </resolver:AttributeDefinition> |
※端末のサイズによっては表記がずれる可能性がございます。画面を広くしてご覧ください。
2. 同じくattribute-resolver.xmlの、ComputedIdのDataConnectorが定義されている部分をコメントアウトする。
3. 同じくattribute-resolver.xmlで、下記の内容を追加する。
(初回はLDAPのuidを元にsaltをソルトとしてIDを生成し、DBに保存する)
(学認提供のテンプレートを使っている場合はコメントアウトされているので有効にしてください)
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
<!-- Stored targeted ID connector --> <resolver:DataConnector xsi:type="StoredId" xmlns="urn:mace:shibboleth:2.0:resolver:dc" id="storedID" generatedAttributeID="storedID" sourceAttributeID="uid" salt="xxxxx"> ← ランダムな文字列(例えばSHA1ハッシュ値)を設定。ただしすでにComputedIdで生成されたePTIDを利用している場合はComputedIdのsaltに合わせること <resolver:Dependency ref="myLDAP" /> <ApplicationManagedConnection jdbcDriver="com.mysql.jdbc.Driver" jdbcURL="jdbc:mysql://localhost:3306/shibpid?autoReconnect=true" jdbcUserName="user" ← DBに接続するユーザ名 jdbcPassword="pass" /> ← DBに接続するパスワードを指定 </resolver:DataConnector> |
※端末のサイズによっては表記がずれる可能性がございます。画面を広くしてご覧ください。
4. データベースにテーブルを作成する。(MySQLの場合)
データベースにテーブルを作成する。
MySQL上にデータベース shibbolethを作成し、以下のテーブルを追加します。
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
CREATE TABLE shibpid ( |
localEntity VARCHAR (255) NOT NULL , peerEntity VARCHAR (255) NOT NULL , persistentId VARCHAR (50) NOT NULL , principalName VARCHAR (50) NOT NULL , localId VARCHAR (50) NOT NULL , peerProvidedId VARCHAR (50) NULL , creationDate TIMESTAMP NOT NULL , deactivationDate TIMESTAMP NULL , PRIMARY KEY (localEntity, peerEntity, persistentId) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; |
※端末のサイズによっては表記がずれる可能性がございます。画面を広くしてご覧ください。
...
25. JDBCのドライバー(mysql-connector-java-5.1.xx-bin.jar)を取得する。
https://dev.mysql.com/downloads/connector/j/
よりmysql-connector-java-5.1.xx.zipをダウンロードしてください。
その際、PGP署名を確認するようにしてください。"Signature"リンクの先にある
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
-----BEGIN PGP SIGNATURE-----
...
-----END PGP SIGNATURE----- |
の部分をヘッダフッタも含めてコピーし、mysql-connector-java-5.1.xx.zip.ascというファイルにペーストした上で
https://dev.mysql.com/doc/refman/5.1/ja/checking-gpg-signature.html
にある手順に従って署名検証してください。
ダウンロードしたZIPを展開すると中にmysql-connector-java-5.1.xx-bin.jarというファイルがあります。
...
3. JDBCドライバーをインストールする。 5
2.で取得したJARファイルを
/
...
usr/java/tomcat/webapps/idp/WEB-INF/lib
に配置してください。
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
# cp mysql-connector-java-5.1.xx/mysql-connector-java-5.1.xx-bin.jar /usr/java/tomcat/webapps/idp/WEB-INF/lib/ |
...
|
本来は、/opt/shibboleth-idp /edit-webapp/WEB-INF/lib/に配置した上でインストールスクリプトを実行してidp.warを再生成するものですが、 ひとまず上記ディレクトリに置き、次回セキュリティアップデート時にでも下記方法でidp.warを生成、配置すればOKです。
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
# cp mysql-connector-java-5.1.xx/mysql-connector-java-5.1.xx-bin.jar /opt/shibboleth-idp/edit-webapp/WEB-INF/lib |
※端末のサイズによっては表記がずれる可能性がございます。画面を広くしてご覧ください。
...
4. /opt/shibboleth-idp/conf/global.xml を修正する。
/opt/shibboleth-idp/conf/global.xmlでbean MyDataSourceを定義します。
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
<!-- Use this file to define any custom beans needed globally. --> |
...
5. /opt/shibboleth-idp/conf/saml-nameid.xml
を修正する。
<ref bean="shibboleth.SAML2PersistentGenerator" /> をアンコメントして有効にします。
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
<!-- Uncommenting this bean requires configuration in saml-nameid.properties. --> |
...
6. /opt/shibboleth-idp/conf/saml-nameid.properties を修正する。
idp.persistentId.sourceAttribute, idp.persistentId.salt, idp.persistentId.generatorとidp.persistentId.storeを設定します。
idp.persistentId.saltには他人が推測できないランダムな値を指定してください。古いIdPから設定を引き継ぐ場合は同じ値を指定してください。
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
# For computed IDs, set a source attribute and a secret salt: |
...
7. /opt/shibboleth-idp/conf/attribute-resolver.xml
を修正する。
idp.persistentId.sourceAttributeで指定した属性がLDAPで定義されているのみでconf/attribute-resolver.xmlの対応するresolver:AttributeDefinitionがコメントアウトされている場合、
当該resolver:AttributeDefinitionをアンコメントします。(以下はsourceAttributeとしてuidを指定した場合の例)
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
<!-- Attribute Definition for uid --> |
...
8. Tomcatを再起動する。
すべての作業が終わりましたらTomcatを再起動してください。
の両方に配置してください。本来後者は、IDP_SRC/lib/に配置した上でインストールスクリプトを実行してidp.warを再生成するものですが、ひとまず上記ディレクトリに置き、次回セキュリティアップデート時にでも上記方法でidp.warを生成/配置すればOKです。
7. Tomcatを再起動する。
すべての作業が終わりましたらTomcatを再起動してください。
参考: https://wiki.shibboleth.net/confluence/display/SHIB2/ResolverStoredIDDat...
参考: https://wiki.shibboleth.net/confluence/display/SHIB2/StoredIDDataConnect...参考: GakuNinShare:Shibboleth IdP 3 のstoredIdの項