Shibboleth IdP 3に関する情報をまとめているページです。
動作確認環境
OS | Java | Servlet | IdP |
---|---|---|---|
CentOS 7.2 | OpenJDK 7 (CentOS 7.2付属) | Apache Tomcat 7.0.54 (CentOS 7.2付属) | Shibboleth IdP 3.2.1 |
CentOS 6.5 | OpenJDK 7 (CentOS 6.5付属) | Apache Tomcat 7.0.62 | Shibboleth IdP 3.2.1 |
CentOS 6.5 | OpenJDK 7 (CentOS 6.5付属) | Apache Tomcat 7.0.62 | Shibboleth IdP 3.1.2 |
CentOS 6.5 | Oracle Java 8u45 + JCE Unlimited Strength Jurisdiction Policy Files | Apache Tomcat 8.0.23 | Shibboleth IdP 3.1.2 |
設定
メタデータ
学認メタデータ
学認メタデータの読み込みはconf/metadata-providers.xml
で設定します。
conf/metadata-providers.xml
Shibboleth IdP 3.1の情報
ローカルSPメタデータ
ローカルSPのメタデータはmetadata
以下に配置して、conf/metadata-providers.xml
で設定します。
conf/metadata-providers.xml
SP1のメタデータsp1-metadata.xml
とSP2のメタデータsp2-metadata.xml
をmetadata
以下に配置して、conf/metadata-providers.xml
でそれぞれのメタデータを読み込む設定例を以下に示します。
認証
LDAPを用いたパスワード認証
Shibboleth IdP 3からは、LDAPモジュールを用いたJAASによるパスワード認証に加えて、直接LDAPを参照するパスワード認証が追加されました。
デフォルトは直接LDAPを参照するパスワード認証です。
直接LDAPを参照するパスワード認証
conf/ldap.properties
参照するLDAPにあわせて、Connection properties, SSL configuration, Search DN resolutionのプロパティを設定します。
JAASによるパスワード認証
Shibboleth IdP 3.1.2で確認した内容です。
conf/authn/password-authn-config.xml
<import resource="jaas-authn-config.xml" />
の行をアンコメントして、<import resource="ldap-authn-config.xml" />
の行をコメントアウトします。conf/authn/jaas.config
参照するLDAPにあわせて、
org.ldaptive.jaas.LdapLoginModule required以降の行を設定します。
高度な認証設定
Shibboleth IdP 3の高度な認証設定を参照してください。
NameID
NameID設定を参照してください。
eduPersonTargetedID属性の送信
NameID
とは別に//saml2:AttributeStatement/saml2:Attribute
[@FriendlyName="eduPersonTargetedID"]
としてeduPersonTargetedID
属性を送信する設定は下記の通りです。
なお、この機能はShibboleth IdP 3ではDeprecated Featuresとなっています。
computedId
computedIdでの設定を下記に示します。Shibboleth IdP 2と同じ設定で送信可能です。
conf/attribute-resolver.xml
conf/attribute-filter.xml
の例
conf/attribute-resolver.xml
のComputedIdConnectorはShibboleth IdP 3の機能を用いて、persistent-idの設定で定義したconf/saml-nameid.propertiesの
プロパティを使って書くこともできます。
conf/attribute-resolver.xml
storedId
storedIdでの設定を下記に示します。Shibboleth IdP 2と同じ設定で送信可能です。
conf/attribute-resolver.xml
conf/attribute-filter.xml
の例
conf/attribute-resolver.xml
のStoredIdConnectorはShibboleth IdP 3の機能を用いて、persistent-idの設定で定義したconf/global.xml
のbean MyDataSource
とconf/saml-nameid.propertiesのプ
ロパティを使って書くこともできます。
conf/attribute-resolver.xml
Attribute Query
SAML 2 persistent IDでのAttribute Queryの許可
この機能はcomputedIdを使っている場合は使用できません。まずstoredIdを使うように設定変更してください。
conf/c14n/subject-c14n.xml
conf/c14n/subject-c14n.xml
の<ref bean="c14n/SAML2Persistent" />
をアンコメントします。
RelyingPartyの設定
SAML1でフロントチャネルにAttributeStatementを含める設定
conf/relying-party.xml
bean[@parent="Shibboleth.SSO"]
にp:includeAttributeStatement="true"
を追加します。
画面のカスタマイズ
ロゴの変更
ロゴをデフォルトのOur Identity Providerから機関のロゴに変更する手順は下記の通りです。
ロゴファイル
organization-logo.png
をedit-webapp/images/
以下に配置します。bin/build.sh
を実行して、war/idp.war
を作り直します。messages/error-messages.properties
のidp.logo
を上記1.で配置したファイル名に変更します。 なお、ファイル名は/images/
から始めます。また、idp.logo.alt-text
を変更します。
メッセージの多言語化
日本語を含む英語以外のメッセージファイルは下記ページからダウンロードできます。
ダウンロードしたメッセージファイルをmessages
ディレクトリ配下にコピーすることで、ブラウザに表示されるメッセージを英語以外に変更できます。
上記URLで提供している日本語メッセージファイルについての注意点
- ボタンに表示するメッセージ(
idp.login.login
)は、Password認証フローのExtendedフローを使用した際に他の認証と合わせてアルファベットが並ぶように「Login」と英語のままです。 - ユーザが存在しない場合のエラーメッセージ(
bad-username.message
)とパスワードが間違った場合のエラーメッセージ(bad-password.message
)は、どちらも「ユーザ名かパスワードが違います。」と同じメッセージです。(英語では、「The username you entered cannot be identified.」と「The password you entered was incorrect.」と異なります)
表示されるメッセージの優先順位は下記の通りです。
Accept-Language
ヘッダーの一番目に一致するmessage_言語_国.properties
Accept-Language
ヘッダーの一番目に一致するmessage_言語.properties
- Javaのシステムプロパティに一致する
message_言語_国.properties
- Javaのシステムプロパティに一致する
message_言語.properties
- デフォルトの
message.properties
Javaのシステムプロパティの優先順位は下記の通りです。
- コマンドラインオプション
user.language
とuser.country
- 環境変数
LC_MESSAGES
- 環境変数
LANG
ブラウザの使用言語によらずある言語を強制する方法は以下のページに説明があります。
https://wiki.shibboleth.net/confluence/display/IDP30/Switching+locale+on+the+login+page
多言語化の方法
表示するメッセージを英語から日本語などに変更する場合は、下記の3つのメッセージファイルを用意します。文字コードはUTF-8である必要があります。
messages/authn-messages_言語[_国].properties
messages/consent-messages_言語[_国].properties
messages/error-messages_言語[_国].properties
日本語の場合の例を下記に示します。
messages/authn-messages_ja.properties
messages/consent-messages_ja.properties
messages/error-messages_ja.properties
イギリス英語の例を下記に示します。
messages/authn-messages_en_GB.properties
messages/consent-messages_en_GB.properties
messages/error-messages_en_GB.properties
ユーザ同意機能
Shibboleth IdP 3には、uApprove相当のユーザ同意機能があります。uApprove JPとの違いはShibboleth IdP 3のユーザ同意機能とuApprove JPとの相違点を参照してください。
ユーザ同意の情報をMySQLに保存する設定
MySQL上にデータベース shibboleth
が存在することを前提としております。また、MySQL Connector/J (mysql-connector-java-5.1.xx-bin.jar)をインストールしておいてください。
StorageRecordsテーブルの作成
StorageRecordsテーブルを作成します。conf/global.xml
shibboleth.JPAStorageServiceを定義します。persistent-idの設定(storedId)が設定済みの場合、最後のMyDataSourceの定義は重複となるため不要です。Tomcat8を使用している場合は、下記のShibbolethIdP3.1の情報を参考にしてください。
conf/idp.properties
idp.consent.StorageService
をconf/global.xml
で定義したshibboleth.JPAStorageService
に変更します。
Shibboleth IdP 3.1の情報
属性毎に同意を得る設定
SPの必須属性にもチェックボックスが表示されるため、利用者がSPの必須属性のチェックを外して属性を送信しなかった場合にSPを利用できない可能性があります。
conf/idp.properties
idp.consent.allowPerAttribute
をtrue
に設定することで、属性毎にチェックボックスを付加することができます。
送信済み属性の属性値が変化した場合に再同意を得る設定
conf/idp.properties
idp.consent.compareValues
をtrue
に設定することで、属性値が変化した場合に再度属性選択画面を表示することができます。
同意機能の無効化設定
conf/relying-party.xml
bean[@parent="Shibboleth.SSO"]
(SAML1)とbean[@parent="SAML2.SSO"]
(SAML2)にあるp:postAuthenticationFlows="attribute-release"
を削除します。
ログレベルの変更
Shibboleth IdP 3.2からの新機能です。
Shibboleth IdP 3.2より、ログレベルの変更がconf/idp.properties
で行えるようになりました。
conf/idp.properties
設定できるプロパティ名はconf/logback.confの先頭を参照してください。
アクセス制限(Shibboleth IdP 2のFPSP機能)
Shibboleth IdP 2におけるFPSPによるアクセス制御を行うには、GakuNinShibInstall > 技術ガイド > 実習セミナー > Shibboleth環境構築セミナー(活用編) > Shibboleth IdPによるアクセス制限を参照してください。
クラスタリング
Shibboleth IdP 3においてクラスタリングを行うには、クラスタリング設定を参照してください。
子ページ
参考
- [Shibboleth wiki] Identity Provider 3
- [Shibboleth wiki] IdP 3 / ReleaseNotes
- [SWITCH] Shibboleth Identity Provider (IdP) 3 Installation Guide
- [SWITCH] Shibboleth IdPv3: Considerations in the Context of SWITCHaai
- 3.1 Operating Systems: Linux long-term support (Ubuntu Server 14.04 LTS / Red Hat Enterprise Linux 7 / CentOS 7)
- 3.2 Java & Servlet Container: OpenJDK 7, Apache Tomcat 7 & Apache HTTP Server 2.4
- 3.3 Database for persistentIDs and user consent: PostgreSQL
- 3.4 IdP Session Storage: Client Session Storage with Cookies
- [upki-fed:00880] Re: Shibboleth IdP 3.0 リリース
- シボレス実習活用編
- 学認技術ガイド > IdP構築後のカスタマイズ 内「IdPアップデート手順」
- 学認技術ガイド > 貴学にてIdPv3をインストールする場合の構築手順
- NIIオープンフォーラム2016 学認トラック
- 「Shibboleth IdPバージョン3に向けたNIIの取り組み」西村 健(NII)
- 「Shibboleth IdP ver.3との戦い」細川 達己(慶應義塾大学)