比較バージョン

キー

  • この行は追加されました。
  • この行は削除されました。
  • 書式設定が変更されました。

Shibboleth IdP 3に関する情報をまとめているページです。

目次
maxLevel3

動作確認環境

OSJavaServletIdP
CentOS 7.2OpenJDK 7 (CentOS 7.2付属)Apache Tomcat 7.0.54 (CentOS 7.2付属)Shibboleth IdP 3.2.1
CentOS 6.5OpenJDK 7 (CentOS 6.5付属)Apache Tomcat 7.0.62Shibboleth IdP 3.2.1
CentOS 6.5OpenJDK 7 (CentOS 6.5付属)Apache Tomcat 7.0.62Shibboleth IdP 3.1.2
CentOS 6.5Oracle Java 8u45 + JCE Unlimited Strength Jurisdiction Policy FilesApache Tomcat 8.0.23Shibboleth IdP 3.1.2

設定

メタデータ

学認メタデータ

学認メタデータの読み込みはconf/metadata-providers.xmlで設定します。

  • conf/metadata-providers.xml

    展開
    コード ブロック
    languagexml
    titleconf/metadata-providers.xml
        <!-- -->
        <MetadataProvider id="HTTPMetadata"
                          xsi:type="FileBackedHTTPMetadataProvider"
                          backingFile="%{idp.home}/metadata/gakunin-metadata-backing.xml"
                          metadataURL="https://metadata.gakunin.nii.ac.jp/gakunin-metadata.xml">
            <MetadataFilter xsi:type="SignatureValidation" requireSignedRoot="true"
                            certificateFile="%{idp.home}/credentials/gakunin-signer-2010.cer"/>
            <MetadataFilter xsi:type="RequiredValidUntil" maxValidityInterval="P15D"/>
            <MetadataFilter xsi:type="EntityRoleWhiteList">
                <RetainedRole>md:SPSSODescriptor</RetainedRole>
            </MetadataFilter>
        </MetadataProvider>
        <!-- -->
    コード ブロック
    languagediff
    title差分
    -    <!--
    +    <!-- -->
         <MetadataProvider id="HTTPMetadata"
                           xsi:type="FileBackedHTTPMetadataProvider"
    -                      backingFile="%{idp.home}/metadata/localCopyFromXYZHTTP.xml"
    -                      metadataURL="http://WHATEVER">
    +                      backingFile="%{idp.home}/metadata/gakunin-metadata-backing.xml"
    +                      metadataURL="https://metadata.gakunin.nii.ac.jp/gakunin-metadata.xml">
    -        <MetadataFilter xsi:type="SignatureValidation" requireSignedRoot="true">
    -            <PublicKey>
    -                MIIBI.....
    -            </PublicKey>
    -        </MetadataFilter>
    -        <MetadataFilter xsi:type="RequiredValidUntil" maxValidityInterval="P30D"/>
    +        <MetadataFilter xsi:type="SignatureValidation" requireSignedRoot="true"
    +                        certificateFile="%{idp.home}/credentials/gakunin-signer-2010.cer"/>
    +        <MetadataFilter xsi:type="RequiredValidUntil" maxValidityInterval="P15D"/>
             <MetadataFilter xsi:type="EntityRoleWhiteList">
                 <RetainedRole>md:SPSSODescriptor</RetainedRole>
             </MetadataFilter>
         </MetadataProvider>
    -    -->
    +    <!-- -->
    注意

    Shibboleth IdP 3.2からSignatureValidationFilterのrequireSignedMetadataがrequireSignedRootに変更となりました。requireSignedMetadataの場合、下記のwarningメッセージが表示されます。

    書式設定済み
    2015-12-18 18:33:35,232 - WARN [net.shibboleth.idp.profile.spring.relyingparty.metadata.filter.impl.SignatureValidationParser:128] - file [/opt/shibboleth-idp/conf/metadata-providers.xml] Use of the attribute 'requireSignedMetadata' is deprecated, use 'requireSignedRoot' instead
Shibboleth IdP 3.1の情報
展開

学認メタデータの読み込みはconf/metadata-providers.xmlで設定します。

  • conf/metadata-providers.xml

    コード ブロック
    languagexml
    titleconf/metadata-providers.xml
    <MetadataProvider id="HTTPMetadata"
                      xsi:type="FileBackedHTTPMetadataProvider"
                      backingFile="%{idp.home}/metadata/gakunin-metadata-backing.xml"
                      metadataURL="https://metadata.gakunin.nii.ac.jp/gakunin-metadata.xml">
    
        <MetadataFilter xsi:type="RequiredValidUntil" maxValidityInterval="P15D" />
        <MetadataFilter xsi:type="SignatureValidation"
                        requireSignedMetadata="true"
                        certificateFile="%{idp.home}/credentials/gakunin-signer-2010.cer"/>
        <MetadataFilter xsi:type="EntityRoleWhiteList">
            <RetainedRole>md:SPSSODescriptor</RetainedRole>
        </MetadataFilter>
    
    </MetadataProvider>

ローカルSPメタデータ

ローカルSPのメタデータはmetadata以下に配置して、conf/metadata-providers.xmlで設定します。

  • conf/metadata-providers.xml
    SP1のメタデータ sp1-metadata.xmlとSP2のメタデータ sp2-metadata.xmlmetadata以下に配置して、conf/metadata-providers.xmlでそれぞれのメタデータを読み込む設定例を以下に示します。

    展開
    コード ブロック
    languagexml
    titleconf/metadata-providers.xml
        <!--
        Example file metadata provider.  Use this if you want to load metadata
        from a local file.  You might use this if you have some local SPs
        which are not "federated" but you wish to offer a service to.
    
        If you do not provide a SignatureValidation filter, then you have the responsibility to
        ensure that the contents are trustworthy.
        -->
    
        <!--
        <MetadataProvider id="LocalMetadata"  xsi:type="FilesystemMetadataProvider" metadataFile="PATH_TO_YOUR_METADATA"/>
        -->
        <MetadataProvider id="LocalMetadataForSP1"  xsi:type="FilesystemMetadataProvider" metadataFile="%{idp.home}/metadata/sp1-metadata.xml"/>
        <MetadataProvider id="LocalMetadataForSP2"  xsi:type="FilesystemMetadataProvider" metadataFile="%{idp.home}/metadata/sp2-metadata.xml"/>
    コード ブロック
    languagediff
    title差分
         <!--
         Example file metadata provider.  Use this if you want to load metadata
         from a local file.  You might use this if you have some local SPs
         which are not "federated" but you wish to offer a service to.
     
         If you do not provide a SignatureValidation filter, then you have the responsibility to
         ensure that the contents are trustworthy.
         -->
     
         <!--
         <MetadataProvider id="LocalMetadata"  xsi:type="FilesystemMetadataProvider" metadataFile="PATH_TO_YOUR_METADATA"/>
         -->
    +    <MetadataProvider id="LocalMetadataForExampleSP1"  xsi:type="FilesystemMetadataProvider" metadataFile="%{idp.home}/metadata/examplesp1-metadata.xml"/>
    +    <MetadataProvider id="LocalMetadataForExampleSP2"  xsi:type="FilesystemMetadataProvider" metadataFile="%{idp.home}/metadata/examplesp2-metadata.xml"/>

参考: 学内システムとして構築する場合の設定

認証

LDAPを用いたパスワード認証

Shibboleth IdP 3からは、LDAPモジュールを用いたJAASによるパスワード認証に加えて、直接LDAPを参照するパスワード認証が追加されました。

デフォルトは直接LDAPを参照するパスワード認証です。

直接LDAPを参照するパスワード認証

  • conf/ldap.properties
    参照するLDAPにあわせて、Connection properties, SSL configuration, Search DN resolutionのプロパティを設定します。

    展開
    コード ブロック
    languagejava
    titleconf/ldap.properties
    ## Connection properties ##
    idp.authn.LDAP.ldapURL                          = ldap://localhost:389
    idp.authn.LDAP.useStartTLS                      = false
    #idp.authn.LDAP.useSSL                          = false
    #idp.authn.LDAP.connectTimeout                  = 3000
    
    
     
    # Search DN resolution, used by anonSearchAuthenticator, bindSearchAuthenticator
    # for AD: CN=Users,DC=example,DC=org
    idp.authn.LDAP.baseDN                           = ou=people,dc=example,dc=ac,dc=jp
    idp.authn.LDAP.subtreeSearch                    = true
    idp.authn.LDAP.userFilter                       = (uid={user})
    # bind search configuration
    # for AD: idp.authn.LDAP.bindDN=adminuser@domain.com
    idp.authn.LDAP.bindDN                           =
    idp.authn.LDAP.bindDNCredential                 =
    コード ブロック
    languagediff
    title差分
     ## Connection properties ##
    -idp.authn.LDAP.ldapURL                          = ldap://localhost:10389
    -#idp.authn.LDAP.useStartTLS                     = true
    +idp.authn.LDAP.ldapURL                          = ldap://localhost:389
    +idp.authn.LDAP.useStartTLS                      = false
     #idp.authn.LDAP.useSSL                          = false
     #idp.authn.LDAP.connectTimeout                  = 3000
    
    
     
     # Search DN resolution, used by anonSearchAuthenticator, bindSearchAuthenticator
     # for AD: CN=Users,DC=example,DC=org
    -idp.authn.LDAP.baseDN                           = ou=people,dc=example,dc=org
    -#idp.authn.LDAP.subtreeSearch                   = false
    +idp.authn.LDAP.baseDN                           = ou=people,dc=example,dc=ac,dc=jp
    +idp.authn.LDAP.subtreeSearch                    = true
     idp.authn.LDAP.userFilter                       = (uid={user})
     # bind search configuration
     # for AD: idp.authn.LDAP.bindDN=adminuser@domain.com
    -idp.authn.LDAP.bindDN                           = uid=myservice,ou=system
    -idp.authn.LDAP.bindDNCredential                 = myServicePassword
    +idp.authn.LDAP.bindDN                           =
    +idp.authn.LDAP.bindDNCredential                 =

JAASによるパスワード認証

注意

Shibboleth IdP 3.1.2で確認した内容です。

  • conf/authn/password-authn-config.xml

    <import resource="jaas-authn-config.xml" />の行をアンコメントして、<import resource="ldap-authn-config.xml" />の行をコメントアウトします。

    コード ブロック
    languagexml
    titleconf/authn/password-authn-config.xml
    collapsetrue
    <!-- Choose an import based on the back-end you want to use. -->
    <import resource="jaas-authn-config.xml" />
    <!-- <import resource="krb5-authn-config.xml" /> -->
    <!-- <import resource="ldap-authn-config.xml" /> -->
  • conf/authn/jaas.config

    参照するLDAPにあわせて、org.ldaptive.jaas.LdapLoginModule required以降の行を設定します。

    コード ブロック
    languagexml
    titleconf/authn/jaas.config
    collapsetrue
    ShibUserPassAuth {
        /*
            com.sun.security.auth.module.Krb5LoginModule required;
            */
        org.ldaptive.jaas.LdapLoginModule required
          ldapUrl="ldap://localhost"
          baseDn="ou=people,dc=example,dc=ac,dc=jp"
          ssl="false"
          userFilter="uid={user}"
          subtreeSearch="true"
          ;
    };

高度な認証設定

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

    展開
    コード ブロック
    languagexml
    titleconf/attribute-resolver.xml
    <!-- ========================================== -->
    <!--      Attribute Definitions                 -->
    <!-- ========================================== -->
    
    <!-- Schema: eduPerson attributes -->
    
    <!-- Attribute Definition for eduPersonTargetedID -->
    <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="computedID">
        <resolver:Dependency ref="computedID" />
        <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>
    
    
    <!-- ========================================== -->
    <!--      Data Connectors                       -->
    <!-- ========================================== -->
    
    <!-- Computed targeted ID connector -->
    <resolver:DataConnector xsi:type="ComputedId" xmlns="urn:mace:shibboleth:2.0:resolver:dc"
                            id="computedID"
                            generatedAttributeID="computedID"
                            sourceAttributeID="uid"
                            salt="changethistosomethingrandom">
        <resolver:Dependency ref="myLDAP" />
    </resolver:DataConnector>
  • conf/attribute-filter.xmlの例

    展開
    コード ブロック
    languagexml
    titleconf/attribute-filter.xml
    <!--  Release to sp.example.jp -->
    <afp:AttributeFilterPolicy id="PolicyforSP1ExampleJP">
        <afp:PolicyRequirementRule xsi:type="basic:AttributeRequesterString" value="https://sp.example.jp/shibboleth-sp" />
        <afp:AttributeRule attributeID="eduPersonTargetedID">
            <afp:PermitValueRule xsi:type="basic:ANY" />
        </afp:AttributeRule>
    </afp:AttributeFilterPolicy>

conf/attribute-resolver.xmlのComputedIdConnectorはShibboleth IdP 3の機能を用いて、persistent-idの設定で定義したconf/saml-nameid.propertiesのプロパティを使って書くこともできます。

  • conf/attribute-resolver.xml

    展開
    コード ブロック
    languagexml
    titleconf/attribute-resolver.xml
    <!-- ========================================== -->
    <!--      Data Connectors                       -->
    <!-- ========================================== -->
    <!-- Computed targeted ID connector -->
    <resolver:DataConnector xsi:type="ComputedId" xmlns="urn:mace:shibboleth:2.0:resolver:dc"
                            id="computedID"
                            generatedAttributeID="computedID"
                            sourceAttributeID="%{idp.persistentId.sourceAttribute}"
                            salt="%{idp.persistentId.salt}">
        <resolver:Dependency ref="%{idp.persistentId.sourceAttribute}" />
    </resolver:DataConnector>
    注意

    Shibboleth IdP 3.1.2では、salt属性は%{idp.persistentId.salt}で置き換えられませんので、ご注意ください。[IDP-771]

storedId

storedIdでの設定を下記に示します。Shibboleth IdP 2と同じ設定で送信可能です。

  • conf/attribute-resolver.xml

    展開
    コード ブロック
    languagexml
    titleconf/attribute-resolver.xml
    <!-- ========================================== -->
    <!--      Attribute Definitions                 -->
    <!-- ========================================== -->
    
    <!-- Schema: eduPerson attributes -->
    
    <!-- Attribute Definition for eduPersonTargetedID -->
    <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>
     
     
    <!-- ========================================== -->
    <!--      Data Connectors                       -->
    <!-- ========================================== -->
    
    <!-- Stored targeted ID connector -->
    <resolver:DataConnector xsi:type="StoredId" xmlns="urn:mace:shibboleth:2.0:resolver:dc"
                            id="storedID"
                            generatedAttributeID="storedID"
                            sourceAttributeID="uid"
                            salt="changethistosomethingrandom">
        <resolver:Dependency ref="myLDAP" />
        <ApplicationManagedConnection jdbcDriver="com.mysql.jdbc.Driver"
                                      jdbcURL="jdbc:mysql://localhost:3306/shibboleth?autoReconnect=true"
                                      jdbcUserName="username"
                                      jdbcPassword="password" />
    </resolver:DataConnector>
  • conf/attribute-filter.xmlの例

    展開
    コード ブロック
    languagexml
    titleconf/attribute-filter.xml
    <!--  Release to sp.example.jp -->
    <afp:AttributeFilterPolicy id="PolicyforSP1ExampleJP">
        <afp:PolicyRequirementRule xsi:type="basic:AttributeRequesterString" value="https://sp.example.jp/shibboleth-sp" />
        <afp:AttributeRule attributeID="eduPersonTargetedID">
            <afp:PermitValueRule xsi:type="basic:ANY" />
        </afp:AttributeRule>
    </afp:AttributeFilterPolicy>

conf/attribute-resolver.xmlのStoredIdConnectorはShibboleth IdP 3の機能を用いて、persistent-idの設定で定義したconf/global.xmlのbean MyDataSourceconf/saml-nameid.propertiesのプロパティを使って書くこともできます。

  • conf/attribute-resolver.xml

    展開
    コード ブロック
    languagexml
    titleconf/attribute-resolver.xml
    <!-- ========================================== -->
    <!--      Data Connectors                       -->
    <!-- ========================================== -->
     
    <!-- Stored targeted ID connector -->
    <resolver:DataConnector xsi:type="StoredId" xmlns="urn:mace:shibboleth:2.0:resolver:dc"
                            id="storedID"
                            generatedAttributeID="storedID"
                            sourceAttributeID="%{idp.persistentId.sourceAttribute}"
                            salt="%{idp.persistentId.salt}">
        <resolver:Dependency ref="%{idp.persistentId.sourceAttribute}" />
        <BeanManagedConnection>MyDataSource</BeanManagedConnection>
    </resolver:DataConnector>
    注意

    Shibboleth IdP 3.1.2では、salt属性は%{idp.persistentId.salt}で置き換えられませんので、ご注意ください。[IDP-771]

Attribute Query

SAML 2 persistent IDでのAttribute Queryの許可

注意

この機能はcomputedIdを使っている場合は使用できません。まずstoredIdを使うように設定変更してください。

conf/c14n/subject-c14n.xml
conf/c14n/subject-c14n.xml<ref bean="c14n/SAML2Persistent" />をアンコメントします。

展開
コード ブロック
languagexml
titleconf/c14n/subject-c14n.xml
<!-- Handle a SAML 2 persistent ID, provided a stored strategy is in use. -->
<ref bean="c14n/SAML2Persistent" />
コード ブロック
languagediff
title差分
         <!-- Handle a SAML 2 persistent ID, provided a stored strategy is in use. -->
-        <!-- <ref bean="c14n/SAML2Persistent" /> -->
+        <ref bean="c14n/SAML2Persistent" />

抜粋を含める
メタデータ
メタデータ
nopaneltrue

認証

抜粋を含める
認証
認証
nopaneltrue

属性・NameID

抜粋を含める
属性・NameID
属性・NameID
nopaneltrue

画面のカスタマイズ

抜粋を含める
画面のカスタマイズ
画面のカスタマイズ
nopaneltrue

組み込みのユーザ同意機能について

Shibboleth IdP 3には、uApprove相当のユーザ同意機能が組み込まれています。uApproveJPとの違いはShibboleth IdP 3のユーザ同意機能とuApproveJPとの相違点を参照してください。

ユーザ同意の情報をMySQLに保存する設定

ヒント

MySQL上にデータベース shibboleth が存在することを前提としております。また、MySQL Connector/J (mysql-connector-java-5.1.xx-bin.jar)をインストールしておいてください。

  • StorageRecordsテーブルの作成
    StorageRecordsテーブルを作成します。

    展開
    コード ブロック
    languagesql
    titleMySQL
    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;
  • conf/global.xml
    shibboleth.JPAStorageServiceを定義します。persistent-idの設定(storedId)が設定済みの場合、最後のMyDataSourceの定義は重複となるため不要です。

    展開

RelyingPartyの設定

SAML1でフロントチャネルにAttributeStatementを含める設定

  • conf/relying-party.xml
    bean[@parent="Shibboleth.SSO"]p:includeAttributeStatement="true"を追加します。

    展開
    コード ブロック
    languagexml
    titleconf/relying-party.xml
    <bean id="shibboleth.DefaultRelyingParty" parent="RelyingParty">
        <property name="profileConfigurations">
           <list>
                <bean parent="Shibboleth.SSO" p:postAuthenticationFlows="attribute-release" p:includeAttributeStatement="true" />
                <ref bean="SAML1.AttributeQuery" />
                <ref bean="SAML1.ArtifactResolution" />
                <bean parent="SAML2.SSO" p:postAuthenticationFlows="attribute-release" />
                <ref bean="SAML2.ECP" />
                <ref bean="SAML2.Logout" />
                <ref bean="SAML2.AttributeQuery" />
                <ref bean="SAML2.ArtifactResolution" />
                <ref bean="Liberty.SSOS" />
            </list>
        </property>
    </bean>
    コード ブロック
    languagediff
    title差分
         <bean id="shibboleth.DefaultRelyingParty" parent="RelyingParty">
             <property name="profileConfigurations">
                 <list>
    -                <bean parent="Shibboleth.SSO" p:postAuthenticationFlows="attribute-release" />
    +                <bean parent="Shibboleth.SSO" p:postAuthenticationFlows="attribute-release" p:includeAttributeStatement="true" />
                     <ref bean="SAML1.AttributeQuery" />
                     <ref bean="SAML1.ArtifactResolution" />
                     <bean parent="SAML2.SSO" p:postAuthenticationFlows="attribute-release" />
                     <ref bean="SAML2.ECP" />
                     <ref bean="SAML2.Logout" />
                     <ref bean="SAML2.AttributeQuery" />
                     <ref bean="SAML2.ArtifactResolution" />
                     <ref bean="Liberty.SSOS" />
                 </list>
             </property>
         </bean>

画面のカスタマイズ

ロゴの変更

ロゴをデフォルトのOur Identity Providerから機関のロゴに変更する手順は下記の通りです。

  1. ロゴファイル organization-logo.pngedit-webapp/images/以下に配置します。 

    展開
    書式設定済み
    $ ls edit-webapp/images/
    dummylogo-mobile.png  dummylogo.png  organization-logo.png
  2. bin/build.shを実行して、war/idp.warを作り直します。

    展開
    書式設定済み
    $ 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
  3. messages/error-messages.propertiesidp.logoを上記1.で配置したファイル名に変更します。 なお、ファイル名は/images/から始めます。また、 idp.logo.alt-textを変更します。

    展開
    コード ブロック
    languagexml
    titlemessages/error-messages.properties
    # General strings
    idp.title = Web Login Service
    idp.title.suffix = Error
    idp.logo = /images/organization-logo.png
    idp.logo.alt-text = Organization logo
    コード ブロック
    languagediff
    title差分
     # General strings
     idp.title = Web Login Service
     idp.title.suffix = Error
    -idp.logo = /images/dummylogo.png
    -idp.logo.alt-text = Replace or remove this logo
    +idp.logo = /images/organization-logo.png
    +idp.logo.alt-text = Organization logo

メッセージの多言語化

日本語を含む英語以外のメッセージファイルは下記ページからダウンロードできます。

ダウンロードしたメッセージファイルをmessagesディレクトリ配下にコピーすることで、ブラウザに表示されるメッセージを英語以外に変更できます。

ヒント

上記URLで提供している日本語メッセージファイルについての注意点

  1. ボタンに表示するメッセージ(idp.login.login)は、Password認証フローのExtendedフロー使用した際に他の認証と合わせてアルファベットが並ぶように「Login」と英語のままです。
  2. ユーザが存在しない場合のエラーメッセージ(bad-username.message)とパスワードが間違った場合のエラーメッセージ(bad-password.message)は、どちらも「ユーザ名かパスワードが違います。」と同じメッセージです。(英語では、「The username you entered cannot be identified.」と「The password you entered was incorrect.」と異なります)

 

表示されるメッセージの優先順位は下記の通りです。

  1. Accept-Languageヘッダーの一番目に一致するmessage_言語_国.properties
  2. Accept-Languageヘッダーの一番目に一致するmessage_言語.properties
  3. Javaのシステムプロパティに一致するmessage_言語_国.properties
  4. Javaのシステムプロパティに一致するmessage_言語.properties
  5. デフォルトのmessage.properties

Javaのシステムプロパティの優先順位は下記の通りです。

  1. コマンドラインオプション user.languageuser.country
  2. 環境変数 LC_MESSAGES
  3. 環境変数 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テーブルを作成します。

    展開
    コード ブロック
    languagesql
    titleMySQL
    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;
  • conf/global.xml
    shibboleth.JPAStorageServiceを定義します。persistent-idの設定(storedId)が設定済みの場合、最後のMyDataSourceの定義は重複となるため不要です。

    展開
    コード ブロック
    languagexml
    titleconf/global.xml (Tomcat7の場合)
    <!-- Use this file to define any custom beans needed globally. -->
    <bean id="shibboleth.JPAStorageService"
          class="org.opensaml.storage.impl.JPAStorageService"
          p:cleanupInterval="%{idp.storage.cleanupInterval:PT10M}"
          c:factory-ref="shibboleth.JPAStorageService.entityManagerFactory" />
    
    <bean id="shibboleth.JPAStorageService.entityManagerFactory"
          class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="packagesToScan" value="org.opensaml.storage.impl" />
        <property name="dataSource" ref="MyDataSource" />
        <property name="jpaVendorAdapter" ref="shibboleth.JPAStorageService.JPAVendorAdapter" />
        <property name="jpaDialect">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" />
        </property>
    </bean>
    
    <bean id="shibboleth.JPAStorageService.JPAVendorAdapter"
          class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"
          p:database="MYSQL" />
    
    <!-- A DataSource bean suitable for use in the idp.persistentId.dataSource property. -->
    <bean id="MyDataSource"
          class="org.apache.tomcat.dbcp.dbcp.BasicDataSource"
          p:driverClassName="com.mysql.jdbc.Driver"
          p:url="jdbc:mysql://localhost:3306/shibboleth"
          p:username="username"
          p:password="password"
          p:maxActive="10"
          p:maxIdle="5"
          p:maxWait="15000"
          p:testOnBorrow="true"
          p:validationQuery="select 1"
          p:validationQueryTimeout="5" />
    ヒント

    Tomcat8を使用している場合は、下記のShibbolethIdP3.1の情報を参考にしてください。

  • conf/idp.properties
    idp.consent.StorageServiceconf/global.xmlで定義したshibboleth.JPAStorageServiceに変更します。

    展開
    コード ブロック
    languagexml
    titleconf/idp.properties
    # Set to "shibboleth.StorageService" or custom bean for alternate storage of consent
    idp.consent.StorageService = shibboleth.JPAStorageService
    コード ブロック
    languagediff
    title差分
     # Set to "shibboleth.StorageService" or custom bean for alternate storage of consent
    -#idp.consent.StorageService = shibboleth.ClientPersistentStorageService
    +idp.consent.StorageService = shibboleth.JPAStorageService
Shibboleth IdP 3.1の情報

...

StorageRecordsテーブルの作成
StorageRecordsテーブルを作成します。

コード ブロック
languagesql
titleMySQL
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;

conf/global.xml

shibboleth.JPAStorageServiceを定義します。persistent-idの設定(storedId)が設定済みの場合、最後のMyDataSourceの定義は重複となるため不要です。

...

languagexml
titleconf/global.xml (Tomcat7の場合)

...

  • コード ブロック
    languagexml
    titleconf/global.xml

...

...

  • <!-- Use this file to define any custom beans needed globally. -->
    <bean id="shibboleth.JPAStorageService"
          class="org.opensaml.storage.impl.JPAStorageService"
          p:cleanupInterval="%{idp.storage.cleanupInterval:PT10M}"
          c:factory-ref="shibboleth.JPAStorageService.entityManagerFactory" />
    
    <bean id="shibboleth.JPAStorageService.entityManagerFactory"
          class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="packagesToScan" value="org.opensaml.storage.impl" />
        <property name="dataSource" ref="MyDataSource" />
        <property name="jpaVendorAdapter" ref="shibboleth.JPAStorageService.JPAVendorAdapter" />
        <property name="jpaDialect">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" />
        </property>
    </bean>
    
    <bean id="shibboleth.JPAStorageService.JPAVendorAdapter"
          class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"
          p:database="MYSQL" />
    
    <!-- A DataSource bean suitable for use in the idp.persistentId.dataSource property. -->
    <bean id="MyDataSource"
          class="org.apache.

...

  • commons.

...

  • dbcp2.BasicDataSource"
          p:driverClassName="com.mysql.jdbc.Driver"
          p:url="jdbc:mysql://localhost:3306/shibboleth"
          p:username="username"
          p:password="password"
          p:

...

  • maxTotal="

...

  • 10"
          p:

...

  • maxIdle="

...

  • 5"
          p:maxWaitMillis="15000"
    

...

  •     

...

  •  

...

  •  p:testOnBorrow="true"
          p:validationQuery="select 1"
          p:validationQueryTimeout="5

...

  • " />
  • conf/idp.properties
    idp.consent.StorageServiceconf/global.xmlで定義したshibboleth.JPAStorageServiceに変更します。

    展開
    コード ブロック
    languagexml
    titleconf/idp.properties
    # Set to "shibboleth.StorageService" or custom bean for alternate storage of consent
    idp.consent.StorageService = shibboleth.JPAStorageService

...

  • コード ブロック
    languagediff
    title差分
     # 

...

  • Set 

...

  • to "shibboleth.StorageService" or custom bean for alternate storage of consent
    -#idp.consent.StorageService = shibboleth.ClientPersistentStorageService
    +idp.consent.

...

  • StorageService = 

...

  • shibboleth.JPAStorageService

属性毎に同意を得る設定

注意

SPの必須属性にもチェックボックスが表示されるため、利用者がSPの必須属性のチェックを外して属性を送信しなかった場合にSPを利用できない可能性があります。SPの必須属性にもチェックボックスが表示されるため、利用者がSPの必須属性のチェックを外して属性を送信しなかった場合にSPを利用できない可能性があります。これが問題になる場合はuApproveJPの利用をご検討ください。

  • conf/idp.properties
    idp.consent.allowPerAttributetrueに設定することで、属性毎にチェックボックスを付加することができます。

    展開
    コード ブロック
    languagexml
    titleconf/idp.properties
    # Flags controlling how built-in attribute consent feature operates
    #idp.consent.allowDoNotRemember = true
    #idp.consent.allowGlobal = true
    idp.consent.allowPerAttribute = true
    コード ブロック
    languagediff
    title差分
     # Flags controlling how built-in attribute consent feature operates
     #idp.consent.allowDoNotRemember = true
     #idp.consent.allowGlobal = true
    -#idp.consent.allowPerAttribute = false
    +idp.consent.allowPerAttribute = true

...

Shibboleth IdP 3においてクラスタリングを行うには、クラスタリング設定を参照してください。

...

Full SLO(Single Logout)の設定方法

以下の個別ページを参照してください。
Full SLO(Single Logout)の設定方法

クライアントIPアドレスチェックの無効化

抜粋を含める
クライアントIPアドレスチェックの無効化
クライアントIPアドレスチェックの無効化
nopaneltrue

IdPv3アップデートに関する情報

以下の個別ページを参照してください。
IdPv3アップデートに関する情報

トラブルシューティング(IdPv3)

ページを含める
トラブルシューティング(IdPv3)
トラブルシューティング(IdPv3)

個別ページ(それぞれの内容は基本的に上記内容に埋め込まれています)

子ページ表示
depth12
sorttitle

参考

...