比較バージョン

キー

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

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

目次
maxLevel23

動作確認環境

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.
1
2

設定

//saml2:Subject/saml2:NameID

//saml2:Subject/saml2:NameIDattribute-filter.xmlに記述しなくてもsaml-nameid.propertiessaml-nameid.xmlの設定により、SPメタデータの<NameIDFormat>に従って下記の通り送信します。

SPメタデータの<NameIDFormat>の値送信する属性
urn:oasis:names:tc:SAML:2.0:nameid-format:transienttransient-id
urn:oasis:names:tc:SAML:2.0:nameid-format:persistent

persistent-id

注意

persistent-idの設定を行っていない場合は、//saml2:Subject/saml2:NameID自体が送信されません。

<NameIDFormat>がない

saml-nameid.propertiesidp.nameid.saml2.defaultに従う。

デフォルトはurn:oasis:names:tc:SAML:2.0:nameid-format:transient

 

<NameIDFormat>がないSPの場合と<NameIDFormat>がurn:oasis:names:tc:SAML:2.0:nameid-format:persistentの場合の//saml2:Subject/saml2:NameIDの例を下記に示す。

  • <NameIDFormat>がないSPの場合

    コード ブロック
    languagexml
    <saml2:Subject>
        <saml2:NameID
            Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient"
            NameQualifier="https://idp.example.ac.jp/idp/shibboleth"
            SPNameQualifier="https://sp1.example.jp/shibboleth-sp">AAdzZWNyZXQxgUnobM3/AN3fn8DfZPDqBp/GnKNxc5JR4nxXAxDAXZZSg0AZSrDh1Sip1fl9JGYrm2NWjl8zHKxHmbsgS/mFZ1ZlSYQ2U/Kz7tCQ+SDswixwLRcGg3tDvVSAY8imKSrElGWSm5gMM45D4rkeQONJYr7gQZ13</saml2:NameID>
  • <NameIDFormat>がurn:oasis:names:tc:SAML:2.0:nameid-format:persistentの場合

    コード ブロック
    languagexml
    <saml2:Subject>
        <saml2:NameID
            Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"
            NameQualifier="https://idp.example.ac.jp/idp/shibboleth"
            SPNameQualifier="https://sp2.example.jp/shibboleth-sp">oiUiApwGnBP8pS3HZJ02ZW/aOTI=</saml2:NameID>

transient-idの設定

transient-idのデフォルトはCryptoTransientに変更になりました。CryptoTransientの使用例を下記に示します。

IdP 2系と同じ短いTransientを使いたい場合は下記の変更を行います。

メタデータ

抜粋を含める
メタデータ
メタデータ
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の定義は重複となるため不要です。

    展開
    コード ブロック
    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に変更します。

    展開
    saml-nameid.properties
    idp.transientId.generatorをアンコメントして、値をshibboleth.StoredTransientIdGeneratorに変更します。saml-nameid
    コード ブロック
    languagexml
    title
    conf/idp.properties
    # Set to "shibboleth.
    StoredTransientIdGenerator
    StorageService" or custom bean for 
    server-side
    alternate storage of consent
    idp.
    transientId
    consent.
    generator
    StorageService = shibboleth.
    StoredTransientIdGenerator

...

  • JPAStorageService
    コード ブロック
    language

...

<saml2:Subject>
    <saml2:NameID
        Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient"
        NameQualifier="https://idp.example.ac.jp/idp/shibboleth"
        SPNameQualifier="https://sp1.example.jp/shibboleth-sp">_f358fb015b9b45c7d18a4a2647e79c33</saml2:NameID>

  • diff
    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を利用できない可能性があります。これが問題になる場合は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

送信済み属性の属性値が変化した場合に再同意を得る設定

  • conf/idp.properties
    idp.consent.compareValuestrueに設定することで、属性値が変化した場合に再度属性選択画面を表示することができます。

    展開
    コード ブロック
    languagexml
    titleconf/idp.properties
    # Whether attribute values and terms of use text are compared
    idp.consent.compareValues = true
    コード ブロック
    languagediff
    title差分
     # Whether attribute values and terms of use text are compared
    -#idp.consent.compareValues = false
    +idp.consent.compareValues = true

同意機能の無効化設定

  • conf/relying-party.xml
    bean[@parent="Shibboleth.SSO"](SAML1)とbean[@parent="SAML2.SSO"](SAML2)にあるp:postAuthenticationFlows="attribute-release"を削除します。

    展開

persistent-id の設定

computedId

computedIdでの設定を下記に示します。

  • saml-nameid.xml
    <ref bean="shibboleth.SAML2PersistentGenerator" /> をアンコメントして有効にします。

    コード ブロック
    languagexml
    titlesaml-nameid.xml
    <!-- Uncommenting this bean requires configuration in saml-nameid.properties. -->
    <!-- -->
    <ref bean="shibboleth.SAML2PersistentGenerator" />
    <!-- -->
  • saml-nameid.properties
    idp.persistentId.generatorのデフォルトはComputedIdの設定のため、idp.persistentId.sourceAttributeidp.persistentId.saltのみを設定します。

    コード ブロック
    languagesass
    titlesaml-nameid.properties
    # Set to shibboleth.StoredPersistentIdGenerator for db-backed storage
    # and uncomment/name the PersistentIdStore bean to use
    #idp.persistentId.generator = shibboleth.ComputedPersistentIdGenerator
    
    # Otherwise for computed PersistentIDs set the source attribute and salt.
    idp.persistentId.sourceAttribute = uid4persistentId
    idp.persistentId.salt = changethistosomethingrandom
  • attribute-resolver.xmlattribute-filter.xml
    idp.persistentId.sourceAttributeの値をattribute-resolver.xml//resolver:AttributeDefinitionで定義して、attribute-filter.xmlで送信設定を行います。saml-nameid.xml
    <ref attributeresolver
    コード ブロック
    languagexml
    title
    conf/relying-
    party.xml
    <!--
    ========================================== --> <!-- PersistentId Definition --> <!-- ========================================== --> <!-- Attribute Definition for %{idp.persistentId.sourceAttribute} --> <resolver:AttributeDefinition id="%{idp.persistentId.sourceAttribute}" xsi:type="ad:Simple" sourceAttributeID="uid"> <resolver:Dependency ref="myLDAP" /> </resolver:AttributeDefinition>
    コード ブロック
    languagexml
    titleattribute-filter.xml
    <!-- Release to anyone --> <afp:AttributeFilterPolicy id="PolicyforAnyone"> <afp:PolicyRequirementRule xsi:type="basic:ANY" /> <afp:AttributeRule attributeID="%{idp.persistentId.sourceAttribute}">
    
    Default configuration, with default settings applied for all profiles, and enables
    the attribute-release consent flow.
    -->
    <bean id="shibboleth.DefaultRelyingParty" parent="RelyingParty">
        <property name="profileConfigurations">
            <list>
                <bean parent="Shibboleth.SSO" />
                <ref bean="SAML1.AttributeQuery" />
                <ref bean="SAML1.ArtifactResolution" />
                <bean parent="SAML2.SSO" />
              
    <afp:PermitValueRule xsi:type="basic:ANY
      <ref bean="SAML2.ECP" />
                
    </afp:AttributeRule> </afp:AttributeFilterPolicy>

StoredId

storedIdでの設定を下記に示します。

  • <ref bean="
    shibboleth
    SAML2.
    SAML2PersistentGenerator
    Logout"
    /> をアンコメントして有効にします。
    コード ブロック
    languagexml
    titlesaml-nameid.xml
    <!-- Uncommenting this bean requires configuration in saml-nameid.properties. --> <!-- -->
     />
                <ref bean="
    shibboleth
    SAML2.
    SAML2PersistentGenerator
    AttributeQuery" />
    
    <!-- -->
  • saml-nameid.properties
    idp.persistentId.generator, idp.persistentId.store, idp.persistentId.sourceAttributeとidp.persistentId.saltを設定します。

    コード ブロック
    languagesass
    titlesaml-nameid.properties
    # Set to shibboleth.StoredPersistentIdGenerator for db-backed storage
    # and uncomment/name the PersistentIdStore bean to use
    idp.persistentId.generator = shibboleth.StoredPersistentIdGenerator
    idp.persistentId.store = PersistentIdStore
    # Set this to null to skip hash-based generation of first stored ID
    #idp.persistentId.computed = shibboleth.ComputedPersistentIdGenerator
    
    # Otherwise for computed PersistentIDs set the source attribute and salt.
    idp.persistentId.sourceAttribute = uid4ppersistentId
    idp.persistentId.salt = changethistosomethingrandom
  •             <ref bean="SAML2.ArtifactResolution" />
                <ref bean="Liberty.SSOS" />
            </list>
        </property>
    </bean>
    コード ブロック
    languagediff
    title差分
         <!--
         Default configuration, with default settings applied for all profiles, and enables
         the attribute-release consent flow.
         -->
         

    global.xml
    idp.persistentId.storeの値をglobal.xmlの//beanで定義します。

    コード ブロック
    languagexml
    titleglobal.xml
    <!-- Use this file to define any custom beans needed globally. -->
    <bean id="shibboleth.
    MySQLDataSource"
    DefaultRelyingParty" parent="RelyingParty">
        
    class="org.apache.tomcat.dbcp.dbcp2.BasicDataSource"
         <property 
    p:driverClassName
    name="
    com.mysql.jdbc.Driver"
    profileConfigurations">
         
    p:url="jdbc:mysql://localhost:3306/shibboleth"
        
    p:username="username"
        
    p:password="password"
    <list>
    -    
    p:maxIdle="5"
         
    p:testOnBorrow="true"
        
    p:validationQuery="select
     
    1"
      <bean parent="Shibboleth.SSO" p:
    validationQueryTimeout
    postAuthenticationFlows="
    5
    attribute-release" />
    +                <bean 
    id
    parent="
    PersistentIdStore"
    Shibboleth.SSO" />
          
    class="net.shibboleth.idp.saml.nameid.impl.JDBCPersistentIdStore"
               <ref 
    p:dataSource-ref
    bean="
    shibboleth
    SAML1.
    MySQLDataSource
    AttributeQuery" />

    attribute-resolver.xmlattribute-filter.xml
    idp.persistentId.sourceAttributeの値をattribute-resolver.xml//resolver:AttributeDefinitionで定義して、attribute-filter.xmlで送信設定を行います。

    コード ブロック
    languagexml
    titleattribute-resolver.xml
    <!-- ========================================== --> <!--
    
                
    PersistentId
     
    Definition
        <ref bean="SAML1.ArtifactResolution" />
    -         
    --> <!--
     
    ==========================================
     
    --> <!--
     
    Attribute
     
    Definition
     
    for
     
    %{idp.persistentId.sourceAttribute} --> <resolver:AttributeDefinition id="%{idp.persistentId.sourceAttribute}" xsi:type="ad:Simple" sourceAttributeID="uid"> <resolver:Dependency ref="myLDAP" /> </resolver:AttributeDefinition>
    コード ブロック
    languagexml
    titleattribute-filter.xml
    <!-- Release to anyone --> <afp:AttributeFilterPolicy id="PolicyforAnyone"> <afp:PolicyRequirementRule xsi:type="basic:ANY" /> <afp:AttributeRule attributeID="%{idp.persistentId.sourceAttribute}"
     <bean parent="SAML2.SSO" p:postAuthenticationFlows="attribute-release" />
    +                <bean parent="SAML2.SSO" />
                     <ref bean="SAML2.ECP" />
                     <ref bean="SAML2.Logout" />
                     <ref bean="SAML2.AttributeQuery" />
                     <ref bean="SAML2.ArtifactResolution" />
            
    <afp:PermitValueRule xsi:type="basic:ANY
             <ref bean="Liberty.SSOS" />
                 </
    afp:AttributeRule> </afp:AttributeFilterPolicy>
    list>
             </property>
         </bean>

ログレベルの変更 

情報

Shibboleth IdP 3.2からの新機能です。

Shibboleth IdP 3.2より、ログレベルの変更がconf/idp.propertiesで行えるようになりました。

  • conf/idp.properties

    設定できるプロパティ名はconf/logback.confの先頭を参照してください。

    展開
    コード ブロック
    languagejava
    titleconf/idp.properties
    # Logging Level
    idp.loglevel.idp=DEBUG
    idp.loglevel.messages=DEBUG
    idp.loglevel.encryption=DEBUG
    コード ブロック
    languagediff
    title差分
    +# Logging Level
    +idp.loglevel.idp=DEBUG
    +idp.loglevel.messages=DEBUG
    +idp.loglevel.encryption=DEBUG

アクセス制限(Shibboleth IdP 2のFPSP機能)

Shibboleth IdP 2におけるFPSPによるアクセス制御を行うには、GakuNinShibInstall > 技術ガイド > 実習セミナー > Shibboleth環境構築セミナー(活用編) > Shibboleth IdPによるアクセス制限を参照してください。

クラスタリング

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

Full SLO(Single Logout)の設定方法

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

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

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

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

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

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

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

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

子ページ表示
depth2

参考