ユーザーがGakuNin RDMを利用するには、貴機関が運用するShibboleth IdPにおいて、ユーザーの属性値をGakuNin RDMのSPへ送出するための設定が必要となります。
前提条件
- IdPが学認(運用フェデレーション)に登録済みであることが必要です。運用フェデレーションへの参加登録が完了していない場合は別途ご相談ください。
- このドキュメントはIdPが学認技術ガイドに記載された手順で構築されていることを想定しています。IdPが貴機関固有の方法でインストールされている場合はファイルパス等を適宜読み替えてください。
概要
GakuNin RDMは次の3つのSPで構成されています。
- 基本機能 … 利用必須です。
- 管理機能 … 任意で利用できます。機関管理者が利用統計情報を参照したり、ユーザーに提供するGRDMの機能を制限したりする機能です。
- データ解析機能 … 任意で利用できます。ユーザーがNIIの計算機にJupyterHubの実行環境を構築する機能です。この機能は試行運用中です。
各SPのentityIDは次のとおりです。
entityID | 機能 |
---|---|
https://accounts.rdm.nii.ac.jp/shibboleth-sp | GakuNin RDM 基本機能 |
https://admin.rdm.nii.ac.jp/shibboleth-sp | GakuNin RDM 管理機能 |
https://jupyter.cs.rcos.nii.ac.jp/shibboleth-sp | GakuNin RDM データ解析機能 |
貴機関で利用する機能に応じて、各SPに必要な属性を送出してください。
属性 | 基本機能 | 管理機能 | データ解析機能 |
---|---|---|---|
eduPersonPrincipalName | 必須 | 必須 | 必須 |
eduPersonEntitlement | 任意 | 必須 *1 | 任意 |
任意 | 任意 | 必須 *2 | |
displayName | 任意 | 任意 | 任意 |
organizationName | 任意 | 任意 | 任意 |
organizationalUnitName | 任意 | 任意 | 任意 |
*1: 属性値の中に「GakuNinRDMAdmin」を含めてください(後述)。
*2: 不正利用への対応に備えて必須としています。
管理機能を利用する場合
管理機能にアクセスできるユーザーは、eduPersonEntitlement属性値の中に「GakuNinRDMAdmin」という文字列が含まれるようにしてください。
このドキュメントは次の方法を想定しています。これ以外の方法を用いる場合は、後述のattribute-resolverの設定内容を適切に読み替えてください。
- ユーザー情報がLDAPで管理されている。
- ユーザーのレコードがeduPersonEntitlement属性を持つ。
- 管理機能にアクセスできるユーザーに限り、eduPersonEntitlement属性値が「GakuNinRDMAdmin」に設定されている。
なお、学認技術ガイドでは、LDAPの設定においてeduPersonPrincipalName属性 (ePPN) とeduPersonEntitlement属性を含むeduPersonスキーマの導入は必須とされていませんのでご注意ください。→ 参考: OpenLDAPの設定
また、ePPNの値に特殊文字や記号が含まれるとログインエラー等の要因となるため、推奨しておりません。
- ePPNに利用可能な記号: "_"(アンダーバー)、"-"(ハイフン)、"."(ピリオド)
- ePPNに非推奨の記号: ":" (コロン)、";"(セミコロン)、"+"(プラス)、","(コンマ)、"#"(シャープ)、"="(イコール)、その他特殊文字・記号
設定手順
以下の手順でShibboleth IdPの設定を行います。詳細は学認技術ガイドを参照してください。
メタデータの更新
メタデータの自動更新が有効になっていない場合、以下の手順でメタデータのキャッシュファイルを更新します。
- キャッシュファイルを見つけます。
- キャッシュファイルのパスは、 /opt/shibboleth-idp/conf/metadata-providers.xml ファイルの中の MetadataProvider 要素の backingFile 属性で指定されています。
- 学認技術ガイドの既定値は /opt/shibboleth-idp/metadata/gakunin-metadata-backing.xml となっています。
- キャッシュファイルを開き、「https://jupyter.cs.rcos.nii.ac.jp/shibboleth-sp」という文字列を検索します。
- 見つからない場合、 https://metadata.gakunin.nii.ac.jp/gakunin-metadata.xml から最新のメタデータを取得し、キャッシュファイルを置き換えます。
attribute-resolverの設定
attribute-resolver.xml ファイルの変更を参考に、以下の設定を行います。
- /opt/shibboleth-idp/conf/attribute-resolver.xml を開きます。
「id="eduPersonPrincipalName"」という文字列を検索し、次のXML要素が有効である(コメントアウトされていない)ことを確認します。→ 参考: eduPersonPrincipalName
- <resolver:AttributeDefinition xsi:type="ad:Scoped" id="eduPersonPrincipalName" scope="%{idp.scope}" sourceAttributeID="uid">
- <resolver:Dependency ref="myLDAP" />
- <resolver:AttributeEncoder xsi:type="enc:SAML1ScopedString" name="urn:mace:dir:attribute-def:eduPersonPrincipalName" encodeType="false" />
- <resolver:AttributeEncoder xsi:type="enc:SAML2ScopedString" name="urn:oid:1.3.6.1.4.1.5923.1.1.1.6" friendlyName="eduPersonPrincipalName" encodeType="false" />
- </resolver:AttributeDefinition>
データ解析機能を利用する場合、「id="mail"」という文字列を検索し、次のXML要素が有効であることを確認します。→ 参考: mail
- <resolver:AttributeDefinition xsi:type="ad:Simple" id="mail" sourceAttributeID="mail">
- <resolver:Dependency ref="myLDAP" />
- <resolver:AttributeEncoder xsi:type="enc:SAML1String" name="urn:mace:dir:attribute-def:mail" encodeType="false" />
- <resolver:AttributeEncoder xsi:type="enc:SAML2String" name="urn:oid:0.9.2342.19200300.100.1.3" friendlyName="mail" encodeType="false" />
- </resolver:AttributeDefinition>
管理機能を利用する場合、「id="eduPersonEntitlement"」という文字列を検索し、次のXML要素が無効である(コメントアウトされている)ことを確認します。※もしXML要素が有効である(コメントアウトされていない)場合は、別のSPに対してeduPersonEntitlement属性を送出するよう設定されている可能性があります。別途NII担当者にご相談ください。
- <!--
- <resolver:AttributeDefinition xsi:type="ad:Simple" id="eduPersonEntitlement" sourceAttributeID="eduPersonEntitlement">
- <resolver:Dependency ref="staticEntitlementCommonLibTerms" />
- <resolver:AttributeEncoder xsi:type="enc:SAML1String" name="urn:mace:dir:attribute-def:eduPersonEntitlement" encodeType="false" />
- <resolver:AttributeEncoder xsi:type="enc:SAML2String" name="urn:oid:1.3.6.1.4.1.5923.1.1.1.7" friendlyName="eduPersonEntitlement" encodeType="false" />
- </resolver:AttributeDefinition>
- -->
この直後に次の内容を追記します。→ 参考: eduPersonEntitlement
- <resolver:AttributeDefinition xsi:type="ad:Simple" id="eduPersonEntitlement" sourceAttributeID="eduPersonEntitlement">
- <resolver:Dependency ref="myLDAP" />
- <resolver:AttributeEncoder xsi:type="enc:SAML1String" name="urn:mace:dir:attribute-def:eduPersonEntitlement" encodeType="false" />
- <resolver:AttributeEncoder xsi:type="enc:SAML2String" name="urn:oid:1.3.6.1.4.1.5923.1.1.1.7" friendlyName="eduPersonEntitlement" encodeType="false" />
- </resolver:AttributeDefinition>
もし、※の時点で見つかったXML要素が有効である(コメントアウトされていない)場合は、別のサービスに対してeduPersonEntitlement属性を送出するよう設定されている可能性があります。別途NII担当者にご相談ください。
4-1. 管理機能のアクセス可否管理機能のアクセス可否は、アクセスするユーザーのeduPersonEntitlement属性値に文字列「GakuNinRDMAdmin」が追加してあるかどうかで判断されます。
管理画面にアクセスしない一般ユーザーの場合は、eduPersonEntitlement属性値として、以下の値を返すよう設定します。- <Value>urn:mace:dir:entitlement:common-lib-terms</Value>
管理画面にアクセスする管理者の場合は、eduPersonEntitlement属性値として、以下の値を返すよう設定します。
- <Value>urn:mace:dir:entitlement:common-lib-terms:GakuNinRDMAdmin</Value>
- LDAPに管理者を区別できる情報がある場合の設定例
- <resolver:AttributeDefinition id="eduPersonEntitlement" xsi:type="Mapped" xmlns="urn:mace:shibboleth:2.0:resolver:ad" sourceAttributeID="accountType">
- <resolver:Dependency ref="myLDAP" />
- <resolver:AttributeEncoder xsi:type="enc:SAML1String" name="urn:mace:dir:attribute-def:eduPersonEntitlement" encodeType="false" />
- <resolver:AttributeEncoder xsi:type="enc:SAML2String" name="urn:oid:1.3.6.1.4.1.5923.1.1.1.7" friendlyName="eduPersonEntitlement" encodeType="false" />
- <DefaultValue>urn:mace:dir:entitlement:common-lib-terms</DefaultValue>
- <ValueMap>
- <ReturnValue>urn:mace:dir:entitlement:common-lib-terms:GakuNinRDMAdmin</ReturnValue>
- <SourceValue>staff</SourceValue>
- </ValueMap>
- </resolver:AttributeDefinition>
- LDAPに管理者を区別できる情報がない場合の設定例
- <resolver:AttributeDefinition id="eduPersonEntitlement" xsi:type="Mapped" xmlns="urn:mace:shibboleth:2.0:resolver:ad" sourceAttributeID="uid">
- <resolver:Dependency ref="myLDAP" />
- <resolver:AttributeEncoder xsi:type="enc:SAML1String" name="urn:mace:dir:attribute-def:eduPersonEntitlement" encodeType="false" />
- <resolver:AttributeEncoder xsi:type="enc:SAML2String" name="urn:oid:1.3.6.1.4.1.5923.1.1.1.7" friendlyName="eduPersonEntitlement" encodeType="false" />
- <DefaultValue>urn:mace:dir:entitlement:common-lib-terms</DefaultValue>
- <ValueMap>
- <ReturnValue>urn:mace:dir:entitlement:common-lib-terms:GakuNinRDMAdmin</ReturnValue>
- <SourceValue>admin_user01</SourceValue>
- <SourceValue>admin_user02</SourceValue>
- <SourceValue>admin_user03</SourceValue>
- <SourceValue>admin_user04</SourceValue>
- </ValueMap>
- </resolver:AttributeDefinition>
- 注意事項
- <Value>urn:mace:dir:entitlement:common-lib-terms</Value>
LDAPに一般ユーザーと管理画面にアクセスできるユーザーを区別できるような情報があれば、管理者の場合のみGakuNinRDMAdminを属性に追加します。
LDAPに、ユーザーが管理者であるか識別するための属性名 accountType が定義されている場合を例にします。
属性名accountType属性が、"staff"であるユーザーに"GakuNinRDMAdmin"を送出する場合、ValueMapを使ってアクセスできるユーザーを指定します。
LDAP内に権限情報としてマッピングできそうな属性を追加できない場合、ユーザーID(uid)そのものをattribute-resolver.xmlに列挙して、ValueMapを利用して戻り値を設定します。
この方法では、attiribute-resolver.xmlに、管理者のidが直接残ってしまうため、管理者に変更があった場合にはattribute-resolver.xmlを変更する作業が必要です。
他のサイトで、eduPersonEntitlement属性を利用している場合は、GakuNin RDM 管理機能による設定が他のサービス向けSPに対するeduPersonEntitlementの設定に影響しないか確認する必要があります。
一般ユーザー:
urn:mace:dir:entitlement:common-lib-terms
管理機能を利用するユーザー:
urn:mace:dir:entitlement:common-lib-terms:GakuNinRDMAdmineduPersonEntitlement属性について、以下以外を利用していないかご確認ください。利用している場合は、別途NI担当者(GakuNin RDM 担当)にメールでお知らせください。
/opt/shibboleth-idp/conf/attribute-filter.xml を開き、「</AttributeFilterPolicyGroup>」という文字列を検索します。
見つかったタグの直前に次のXML要素を追加します。
- <AttributeFilterPolicy id="PolicyforGakuNinRDM">
- <PolicyRequirementRule xsi:type="Requester" value="https://accounts.rdm.nii.ac.jp/shibboleth-sp" />
- <AttributeRule attributeID="eduPersonPrincipalName">
- <PermitValueRule xsi:type="ANY" />
- </AttributeRule>
- </AttributeFilterPolicy>
データ解析機能を利用する場合、次のXML要素も追加します。
- <AttributeFilterPolicy id="PolicyforGakuNinFCS">
- <PolicyRequirementRule xsi:type="Requester" value="https://jupyter.cs.rcos.nii.ac.jp/shibboleth-sp" />
- <AttributeRule attributeID="eduPersonPrincipalName">
- <PermitValueRule xsi:type="ANY" />
- </AttributeRule>
- <AttributeRule attributeID="mail">
- <PermitValueRule xsi:type="ANY" />
- </AttributeRule>
- </AttributeFilterPolicy>
管理機能を利用する場合、次のXML要素も追加します。
- <AttributeFilterPolicy id="PolicyforGakuNinRDMAdmin">
- <PolicyRequirementRule xsi:type="Requester" value="https://admin.rdm.nii.ac.jp/shibboleth-sp" />
- <AttributeRule attributeID="eduPersonPrincipalName">
- <PermitValueRule xsi:type="ANY" />
- </AttributeRule>
- <AttributeRule attributeID="eduPersonEntitlement">
- <PermitValueRule xsi:type="ANY" />
- </AttributeRule>
- </AttributeFilterPolicy>
- https://rdm.nii.ac.jp/ にアクセスします。画面右上のプルダウンメニューから機関名を選択し、ログインできることを確認します。
- データ解析機能を利用する場合、https://jupyter.cs.rcos.nii.ac.jp/ にアクセスします。画面中央のプルダウンメニューから機関名を選択し、ログインできることを確認します。
- 管理機能を利用する場合、https://admin.rdm.nii.ac.jp/ にアクセスします。画面中央のプルダウンメニューから機関名を選択し、ログインできることを確認します。
attribute-filterの設定
attribute-filter.xml ファイルの変更を参考に、以下の設定を行います。
設定完了
Shibboleth IdP サービスを再起動します。
動作確認
※ログインできない場合は、NII担当者 <rdm-support> にメールでお知らせください。