...
- このガイドでは、uApprove JPはLinuxシステムにインストールされると仮定しています。Windows等の他のオペレーティングシステムにインストールすることも可能です。その場合は、いくつかのパスやコマンドを適切なものに置き換えてください。
- このガイドでは、パスやコマンドは
$IDP_HOME$
、$UAPPROVE_INSTALL$
といった変数で示されます。明示的に置き換えが不要と書かれていない限りは、これらの変数は実際のパスに置き換えてください。
...
目次
目次 | ||
---|---|---|
|
想定
- Shibboleth Identity Providerは、
$IDP_HOME$
(例:/opt/shibboleth-idp
) にインストールされているものとします。 - Tomcatは、
$CATALINA_HOME$
(例:/usr/java/tomcat
) にインストールされているものとし、$CATALINA_BASE$
(例:$CATALINA_HOME$
)にIdPインスタンスの設定がされているものとします。 - uApprove JP は、
$UAPPROVE_INSTALL$
(例:/usr/local/src/uApproveJP-#version#
) にダウンロード、展開されているものとします。
前提条件
- Shibboleth Identity Provider 3.2.0以降がインストールされている必要があります。
※ 3.4.0は未検証です。不具合等ございましたらお知らせください。
1 基本的なデプロイ
1.1 ライブラリのインストール
ライブラリをIdPのライブラリディレクトリにコピーします:
...
注意 |
---|
|
1.2 Velocity テンプレートファイル
属性選択画面用のVelocityテンプレートファイルをIdPのviews
ディレクトリに上書きコピーします:
書式設定済み |
---|
# cp $UAPPROVE_INSTALL$/manual/examples/views/intercept/* $IDP_HOME$/views/intercept/ 以下のメッセージが表示される場合がありますが、y を入力してください。 cp: `/opt/shibboleth-idp/views/intercept/attribute-release.vm' を上書きしますか? |
1.3 CSS ファイル
CSSファイルをIdPのedit-webapp
ディレクトリにコピーします:
書式設定済み |
---|
# cp $UAPPROVE_INSTALL$/manual/examples/edit-webapp/css/* $IDP_HOME$/edit-webapp/css/ |
1.4 設定のカスタマイズ
$IDP_HOME$/conf/idp.properties
に、以下の変更を行います。idp.consent.allowPerAttribute
とidp.consent.compareValues
の値をtrue
に設定してください:
...
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
class="jp.gakunin.idp.consent.logic.impl.IsConsentRequiredPredicate" />
|
1.5 カスタムテンプレート
テンプレートをカスタマイズしたい場合は、 コピー ~ uApproveJP-3.2.0 のインストールおよび設定方法テンプレートのカスタマイズ を参照してください。
少なくとも、所属機関のロゴを変更する必要があります。デフォルトではこのファイルはプレースホルダのロゴになっています。
...
ロゴファイル
organization-logo.png
を$IDP_HOME$/edit-webapp/images/
以下に配置します:書式設定済み $ ls $IDP_HOME$/edit-webapp/images/ dummylogo-mobile.png dummylogo.png organization-logo.png
$IDP_HOME$/messages/error-messages.properties
のidp.logo
を上記1.で配置したファイル名に変更します。なお、ファイル名は/images/
から始めます。また、idp.logo.alt-text
を変更します:パネル borderColor silver bgColor white title $IDP_HOME$/messages/error-messages.properties idp.logo = /images/organization-logo.png
idp.logo.alt-text = Organization logo
$IDP_HOME$/bin/build.sh
を実行して、$IDP_HOME$/war/idp.war
を作り直します:書式設定済み $ cd $IDP_HOME$ $ sudo -u tomcat env JAVA_HOME="${JAVA_HOME}" bin/build.sh Installation Directory: [/opt/shibboleth-idp] Rebuilding /opt/shibboleth-idp/war/idp.war ... ...done BUILD SUCCESSFUL Total time: 16 seconds
1.6 ログの設定
uApprove JPのログを出力するには、$IDP_HOME$/conf/logback.xml
に以下を追加します:
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
|
1.7 デプロイ
IdP で uApprove JP を有効にするには IdP を再デプロイする必要があります:
...
書式設定済み |
---|
# service tomcat7 restart |
2 高度なデプロイ
この節では高度な設定についてのトピックを取り上げます。
2.1 リレーショナルデータベースを用いたユーザ同意情報の保存
リレーショナルデータベース(以下、「RDB」とします)を用いて、ユーザ同意情報の保存を行うことができます。
2.1.1. MySQLの設定
注意 |
---|
以下のデータベースパラメータは一例です。実際の値は必要に応じて変更してください。特にパスワードは安全なものを用意してください。 |
...
データベース
shibboleth
の作成
Shibboleth IdPで使用するデータベースshibboleth
を作成します:情報 rootにパスワードが設定してあってコマンドが以下のエラーで失敗する場合は、
-p
オプションを追加してください。書式設定済み ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
パネル borderColor silver bgColor white db$ mysql -u root
mysql>
CREATE DATABASE shibboleth;
ユーザ作成
IdPからデータベースshibboleth
にアクセスするためのユーザshibboleth
を作成し、データベースshibboleth
への権限を付与します:パネル borderColor silver bgColor white db$ mysql -u root
mysql>
CREATE USER 'shibboleth'@'localhost' IDENTIFIED BY '
shibpassword
'; # ←任意のパスワード
GRANT INSERT, SELECT, UPDATE, DELETE ON shibboleth.* TO 'shibboleth'@'localhost';
StorageRecords
テーブル作成JPAStorageServic
eが使用するテーブルStorageRecords
を作成します:パネル borderColor silver bgColor white db$ mysql -u root
mysql>
use shibboleth;
CREATE TABLE `StorageRecords` (
`context` varchar(255) NOT NULL,
`id` varchar(255) NOT NULL,
`expires` bigint(20) DEFAULT NULL,
`value` longtext NOT NULL,
`version` bigint(20) NOT NULL,
PRIMARY KEY (`context`,`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2.1.3. MySQL Connector/Jのインストール
MySQLへのアクセスに必要なMySQL Connector/J(
mysql-connector-java.jar
)をインストールします:書式設定済み # yum install mysql-connector-java
/usr/share/java
配下にインストールされているので、edit-webapp/
配下のlib
ディレクトリにシンボリックリンクを作成します:パネル # rpm -ql mysql-connector-java
(省略)
/usr/share/java/mysql-connector-java.jar
(省略)
# ln -s /usr/share/java/mysql-connector-java.jar $IDP_HOME$/
edit-webapp/WEB-INF
/lib/- コピー ~ uApproveJP-3.2.0 のインストールおよび設定方法1.7 デプロイの手順に従って再デプロイします。
2.1.4. idp.consent.StorageServiceの設定変更
idp.consent.StorageService
の設定をshibboleth.JPAStorageService
に変更します:
...
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
# Set to "shibboleth.StorageService" or custom bean for alternate storage of consent idp.consent.StorageService = shibboleth.JPAStorageService # Maximum number of consent storage records # Set to -1 for unlimited server-side storage idp.consent.maxStoredRecords = -1 |
2.1.5. shibboleth.JPAStorageServiceの設定
コピー ~ uApproveJP-3.2.0 のインストールおよび設定方法2.1.4. idp.consent.StorageServiceの設定変更でidp.sesssion.StorageService
に設定したshibboleth.JPAStorageService
を定義します。
id="Shibboleth.MySQLDataSource"
のbean
定義のp:url, p:username, p:password
は、コピー ~ uApproveJP-3.2.0 のインストールおよび設定方法2.1.1. MySQLの設定に合わせて設定します:
パネル | ||||||
---|---|---|---|---|---|---|
| ||||||
|
2.1.6. Tomcatの再起動
Tomcatを再起動します:
情報 | ||
---|---|---|
CentOS 7の場合は以下のコマンドで再起動してください。
|
書式設定済み |
---|
# service tomcat7 restart |
2.2 テンプレート
テンプレートのカスタマイズ
$IDP_HOME$/views/
にある Velocityテンプレートファイル 、 $IDP_HOME$/edit-webapp/
にあるCSS や画像ファイルは自由にカスタマイズすることができます。 Velocity を用いているので容易にカスタマイズ出来るようになっています。
Velocity については Velocity User Guide を参照してください。
2.3 ローカライズ
カスタムメッセージ
情報 |
---|
以下の記述はShibboleth IdP 3.2.1およびそれ未満向けです。3.3.0およびそれ以降では次のリンク先を参照してください。 |
...
書式設定済み |
---|
# cp $UAPPROVE_INSTALL$/manual/examples/messages/* $IDP_HOME$/messages/ # service tomcat7 restart |
Relying Partyの名前と説明
現状では、ローカライズされた Relying Party の名前と説明を取得する際には、メタデータのうち<AttributeConsumingService>
要素および<mdui:UIInfo>
要素がサポートされています。
...
ヒント |
---|
両方記載されている場合には 学認のSPについても海外SPの一部を除いてこの情報が含まれています。 |
2.4 AttributeInMetadataマッチングルール
AttributeInMetadataマッチングルールの設定
このルールは、SP がその属性を必要とした場合に、そのメタデータにより属性の送信を許可します。属性は<SPSSODescriptor>
中の<AttributeConsumingService>
によって示されます。 <RequestedAttribute>
でisRequired="true"
を記述した属性は必須とマークされ、isRequired="false"
を記述した属性はオプションとマークされます。詳細は SAMLメタデータを参照してください。
注意 |
---|
以下の点に注意してください:
|
名前空間の定義
属性フィルタのポリシーにおいて、このプラグイン用に名前空間の定義を加える必要があります。以下のように行います:
- ルート
<AttributeFilterPolicyGroup>
のxmlns:xsi
属性の前にxmlns:uajpmf="http://www.gakunin.jp/ns/uapprove-jp/afp/mf"
属性を追加します。 xsi:schemaLocation
属性のホワイトスペースで区切られた値のリストの最後に以下を追加します:http://www.gakunin.jp/ns/uapprove-jp/afp/mf http://www.gakunin.jp/schema/idp/gakunin-afp-mf-uapprovejp.xsd
ルールの定義
このルールは<PermitValueRule xsi:type="uajpmf:AttributeInMetadata">
のように記述します。以下のオプショナルな属性を使用できます:
...
パネル | ||||
---|---|---|---|---|
| ||||
<!-- ================================================================================== case 1: mail 属性、eduPersonPrincipalName属性、eduPersonAffiliation属性を、メタデータの 定義と照合するルールです。 メタデータでisRequired="true"が指定されている属性は、すべて必須情報になり常に 送信されます。 メタデータでisRequired="false"が指定されている属性は以下の通りです。 * mail属性は必須情報となり常に送信されます。 * eduPersonPrincipalName属性はオプション情報となります。属性選択画面ではチェック ボックスつきで表示されます。利用者がチェックボックスをチェックした場合に限り送信 されます。 * eduPersonAffiliation属性は送信されません。 メタデータにAttributeConsumingServiceをもたないSPの場合はどの属性も送信しません。 ================================================================================== --> <afp:AttributeFilterPolicy id="PolicyforSPwithAttributeConsumingService"> <afp:PolicyRequirementRule xsi:type="basic:ANY" /> <afp:AttributeRule attributeID="mail"> <afp:PermitValueRule xsi:type="uajpmf:AttributeInMetadata" onlyIfRequired="false" /> </afp:AttributeRule> <afp:AttributeRule attributeID="eduPersonPrincipalName"> <afp:PermitValueRule xsi:type="uajpmf:AttributeInMetadata" onlyIfRequired="false" onlyIfChecked="true" /> </afp:AttributeRule> <afp:AttributeRule attributeID="eduPersonAffiliation"> <afp:PermitValueRule xsi:type="uajpmf:AttributeInMetadata" /> </afp:AttributeRule> </afp:AttributeFilterPolicy> <!-- ================================================================================== case 2: メタデータに AttributeConsumingServiceがないSPに対するルールを追加したルール です。 AttributeConsumingService要素を持たないSPの場合は以下の通りです。 * mail属性は必須情報となり常に送信されます。 * eduPersonPrincipalName属性はオプション情報となります。属性選択画面ではチェック ボックスつきで表示されます。利用者がチェックボックスをチェックした場合に限り送信 されます。 * eduPersonAffiliation属性は送信されません。 AttributeConsumingService要素を持つSPの場合はcase 1と同じです。 ================================================================================== --> <afp:AttributeFilterPolicy id="PolicyforSPwithoutAttributeConsumingService"> <afp:PolicyRequirementRule xsi:type="basic:ANY" /> <afp:AttributeRule attributeID="mail"> <afp:PermitValueRule xsi:type="uajpmf:AttributeInMetadata" matchIfMetadataSilent="true" onlyIfRequired="false" /> </afp:AttributeRule> <afp:AttributeRule attributeID="eduPersonPrincipalName"> <afp:PermitValueRule xsi:type="uajpmf:AttributeInMetadata" matchIfMetadataSilent="true" onlyIfRequired="false" onlyIfChecked="true" /> </afp:AttributeRule> <afp:AttributeRule attributeID="eduPersonAffiliation"> <afp:PermitValueRule xsi:type="uajpmf:AttributeInMetadata" /> </afp:AttributeRule> </afp:AttributeFilterPolicy> |
3 トラブルシューティング
3.1 トラブルシューティング
ERROR
ないしWARN
メッセージについては、$IDP_HOME$/logs/idp-process.log
をチェックしてください。$CATALINA_BASE$/logs
にあるTomcatのログファイルにエラーメッセージがないかチェックしてください。
3.2 詳細なログ設定
DEBUG
ないしTRACE
ログレベルを有効にしたい場合は、$IDP_HOME$/conf/idp.properties
にて以下を追加します:
パネル | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
idp.loglevel.uApproveJP = DEBUG |
A SPでの属性使用用途通知
SP管理者はSPのメタデータに属性の使用用途を記述することで、SPの利用者に属性の使用用途 (例えば、プロファイルの初期値として使用) をuApprove JPで表示することができます。
A.1 設定
属性使用用途通知機能は、<RequestedAttribute>
にuajpmd:description
属性を追加する、または、<SPSSODescriptor>
の<Extensions>
に<uajpmd:RequestedAttributeExtension>
を追加することで利用できます。
<uajpmd:RequestedAttributeExtension>
は多言語に対応しています。また、一つの属性に両方が設定されている場合は、<uajpmd:RequestedAttributeExtension>
が優先されます。
uajpmd:description
この属性は<ResquestedAttribute>
にて定義します:
...
パネル | ||||
---|---|---|---|---|
| ||||
<md:RequestedAttribute FriendlyName="mail" Name="urn:oid:0.9.2342.19200300.100.1.3" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri" uajpmd:description="The mail attribute is used as the initial value of the mail address field of the registration form."/> |
<uajpmd:RequestedAttributeExtension>
<uajpmd:RequestedAttributeExtension>
は以下の必須属性と一つ以上の<uajpmd:
Description>
と共に設定します:
...