Shibboleth IdP 3に関する情報をまとめているページです。
注意 |
---|
Shibboleth IdP 3.2に関する情報に更新中です。 |
動作確認環境
65 65付属.62.54 (CentOS 7.2付属) | Shibboleth IdP 3.2.1 |
.2Oracle Java 8u45 + JCE Unlimited Strength Jurisdiction Policy FilesOpenJDK 7 (CentOS 6.5付属) | Apache Tomcat |
823.2 |
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
で設定します。
メタデータ
認証
属性・NameID
抜粋を含める |
---|
| 属性・NameID |
---|
| 属性・NameID |
---|
nopanel | true |
---|
|
画面のカスタマイズ
抜粋を含める |
---|
| 画面のカスタマイズ |
---|
| 画面のカスタマイズ |
---|
nopanel | true |
---|
|
組み込みのユーザ同意機能について
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テーブルを作成します。
展開 |
---|
コード ブロック |
---|
| 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の定義は重複となるため不要です。
展開 |
---|
コード ブロック |
---|
language | xml |
---|
title | conf/global.xml |
---|
| <!-- Use this file to define any custom beans needed globally. -->
<bean id="shibboleth.JPAStorageService |
|
conf/metadata-providers.xml
展開 |
---|
コード ブロック |
---|
language | xml |
---|
title | conf/metadata-providers.xml |
---|
| <!-- -->
<MetadataProvider id="HTTPMetadata"
xsi:type="FileBackedHTTPMetadataProvider"
backingFile="%{idp.home}/metadata/gakunin-metadata-backing.xml"
class="org.opensaml.storage.impl.JPAStorageService"
metadataURL="https://metadata.gakunin.nii.ac.jp/gakunin-metadata.xml">p:cleanupInterval="%{idp.storage.cleanupInterval:PT10M}"
<MetadataFilter xsi:type="SignatureValidation" requireSignedRoot="truec:factory-ref="shibboleth.JPAStorageService.entityManagerFactory" />
<bean id="shibboleth.JPAStorageService.entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property certificateFile="%{idp.home}/credentials/gakunin-signer-2010.cer"name="packagesToScan" value="org.opensaml.storage.impl" />
<MetadataFilter xsi:type<property name="RequiredValidUntildataSource" maxValidityIntervalref="P15DMyDataSource" />
<property <MetadataFilter xsi:type="EntityRoleWhiteList"name="jpaVendorAdapter" ref="shibboleth.JPAStorageService.JPAVendorAdapter" />
<property name="jpaDialect">
<RetainedRole>md:SPSSODescriptor</RetainedRole>
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaDialect" />
</MetadataFilter>property>
</MetadataProvider>
<!-- --> | コード ブロック |
---|
| - <!--
+ <!-- -->bean>
<bean id="shibboleth.JPAStorageService.JPAVendorAdapter"
<MetadataProvider idclass="HTTPMetadataorg.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"
xsi:type="FileBackedHTTPMetadataProvider"
- p:database="MYSQL" />
<!-- A DataSource bean suitable for use in the idp.persistentId.dataSource property. -->
<bean id="MyDataSource"
backingFileclass="%{idp.home}/metadata/localCopyFromXYZHTTP.xml"
-org.apache.commons.dbcp2.BasicDataSource"
p:driverClassName="com.mysql.jdbc.Driver"
metadataURL="http://WHATEVER">
+p:url="jdbc:mysql://localhost:3306/shibboleth"
p:username="username"
p:password="password"
p:maxTotal="10"
backingFile="%{idp.home}/metadata/gakunin-metadata-backing.xml"
+p:maxIdle="5"
p:maxWaitMillis="15000"
p:testOnBorrow="true"
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 で設定します。 |
認証
LDAPを用いたパスワード認証
Shibboleth IdP 3からは、LDAPモジュールを用いたJAASによるパスワード認証に加えて、直接LDAPを参照するパスワード認証が追加されました。
デフォルトは直接LDAPを参照するパスワード認証です。
直接LDAPを参照するパスワード認証
conf/ldap.properties
参照するLDAPにあわせて、Connection properties, SSL configuration, Search DN resolutionのプロパティを設定します。
展開 |
---|
コード ブロック |
---|
language | java |
---|
title | conf/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 = |
コード ブロック |
---|
| ## 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によるパスワード認証3.1時点の情報
conf/authn/password-authn-config.xml
<import resource="jaas-authn-config.xml" />の行をアンコメントとして、<import resource="ldap-authn-config.xml" />の行をコメントアウトします。
コード ブロック |
---|
language | xml |
---|
title | conf/authn/password-authn-config.xml |
---|
collapse | true |
---|
|
<!-- 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以降の行を設定します。
コード ブロック |
---|
language | xml |
---|
title | conf/authn/jaas.config |
---|
collapse | true |
---|
|
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の高度な認証設定を参照してください。
//saml2:Subject/saml2:NameID
//saml2:Subject/saml2:NameID
はconf/attribute-filter.xml
に記述しなくてもconf/saml-nameid.properties
とconf/saml-nameid.xml
の設定により、SPメタデータの<NameIDFormat>に従って
下記の通り送信します。
SPメタデータの<NameIDFormat> の値 | 送信する属性 |
---|
urn:oasis:names:tc:SAML:2.0:nameid-format:transient | transient-id |
urn:oasis:names:tc:SAML:2.0:nameid-format:persistent | persistent-id |
<NameIDFormat> がない | saml-nameid.properties のidp.nameid.saml2.default に従う。
デフォルトはurn:oasis:names:tc:SAML:2.0:nameid-format:transient
|
SPメタデータに複数の<NameIDFormat>
がある場合は、SPメタデータの並び順で送信可能な属性を送信します。persistent-id
の設定を行っていないなど送信可能な属性がない場合は、//saml2:Subject/saml2:NameID
自体が送信されません。
<NameIDFormat>
がないSPの場合と<NameIDFormat>
がurn:oasis:names:tc:SAML:2.0:nameid-format:persistent
の場合の//saml2:Subject/saml2:NameID
の例を下記に示す。
<NameIDFormat>
がないSPの場合
コード ブロック |
---|
|
<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
の場合
コード ブロック |
---|
|
<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
のデフォルトはCryptoTransientId
に変更になりました。CryptoTransientId
の使用例を下記に示します。
コード ブロック |
---|
|
<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> |
IdP 2系と同じ短いTransientId
を使いたい場合は下記の変更を行います。
conf/saml-nameid.properties
idp.transientId.generator
をアンコメントして、値をshibboleth.StoredTransientIdGenerator
に変更します。
展開 |
---|
コード ブロック |
---|
language | java |
---|
title | conf/saml-nameid.properties |
---|
| # Set to shibboleth.StoredTransientIdGenerator for server-side transient ID storage
idp.transientId.generator = shibboleth.StoredTransientIdGenerator |
コード ブロック |
---|
| # Set to shibboleth.StoredTransientIdGenerator for server-side transient ID storage
-#idp.transientId.generator = shibboleth.CryptoTransientIdGenerator
+idp.transientId.generator = shibboleth.StoredTransientIdGenerator |
|
StoredTransientId
の使用例を下記に示します。
コード ブロック |
---|
|
<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>
|
persistent-idの設定
computedId
computedIdでの設定を下記に示します。
conf/saml-nameid.xml
<ref bean="shibboleth.SAML2PersistentGenerator" />
をアンコメントして有効にします。
展開 |
---|
コード ブロック |
---|
language | xml |
---|
title | conf/saml-nameid.xml |
---|
| <!-- Uncommenting this bean requires configuration in saml-nameid.properties. -->
<!-- -->
<ref bean="shibboleth.SAML2PersistentGenerator" />
<!-- --> |
コード ブロック |
---|
| <!-- Uncommenting this bean requires configuration in saml-nameid.properties. -->
- <!--
+ <!-- -->
<ref bean="shibboleth.SAML2PersistentGenerator" />
- -->
+ <!-- --> |
|
conf/saml-nameid.properties
idp.persistentId.generator
のデフォルトはComputedId
の設定のため、idp.persistentId.sourceAttribute
とidp.persistentId.salt
のみを設定します。idp.persistentId.salt
には他人が推測できないランダムな値を指定してください。古いIdPから設定を引き継ぐ場合は同じ値を指定してください。
展開 |
---|
コード ブロック |
---|
language | java |
---|
title | conf/saml-nameid.properties |
---|
| # Persistent IDs can be computed on the fly with a hash, or managed in a database
# For computed IDs, set a source attribute and a secret salt:
idp.persistentId.sourceAttribute = uid
#idp.persistentId.useUnfilteredAttributes = true
# Do *NOT* share the salt with other people, it's like divulging your private key.
#idp.persistentId.algorithm = SHA
idp.persistentId.salt = XXXXXXXXXXXXXXXXXXXXXXXXXXX |
コード ブロック |
---|
| # Persistent IDs can be computed on the fly with a hash, or managed in a database
# For computed IDs, set a source attribute and a secret salt:
-#idp.persistentId.sourceAttribute = changethistosomethingreal
+idp.persistentId.sourceAttribute = uid
#idp.persistentId.useUnfilteredAttributes = true
# Do *NOT* share the salt with other people, it's like divulging your private key.
#idp.persistentId.algorithm = SHA
-#idp.persistentId.salt = changethistosomethingrandom
+idp.persistentId.salt = XXXXXXXXXXXXXXXXXXXXXXXXXXX |
|
conf/attribute-resolver.xml
conf/attribute-resolver.xml
のidp.persistentId.sourceAttribute
で指定したresolver:AttributeDefinitionをコメントアウトします
。
展開 |
---|
コード ブロック |
---|
language | xml |
---|
title | conf/attribute-resolver.xml |
---|
| <!-- Schema: Core schema attributes-->
<!-- -->
<resolver:AttributeDefinition xsi:type="ad:Simple" id="uid" sourceAttributeID="uid">
<resolver:Dependency ref="myLDAP" />
<resolver:AttributeEncoder xsi:type="enc:SAML1String" name="urn:mace:dir:attribute-def:uid" encodeType="false" />
<resolver:AttributeEncoder xsi:type="enc:SAML2String" name="urn:oid:0.9.2342.19200300.100.1.1" friendlyName="uid" encodeType="false" />
</resolver:AttributeDefinition>
<!-- |
コード ブロック |
---|
| <!-- Schema: Core schema attributes-->
- <!--
+ <!-- -->
<resolver:AttributeDefinition xsi:type="ad:Simple" id="uid" sourceAttributeID="uid">
<resolver:Dependency ref="myLDAP" />
<resolver:AttributeEncoder xsi:type="enc:SAML1String" name="urn:mace:dir:attribute-def:uid" encodeType="false" />
<resolver:AttributeEncoder xsi:type="enc:SAML2String" name="urn:oid:0.9.2342.19200300.100.1.1" friendlyName="uid" encodeType="false" />
</resolver:AttributeDefinition>
+ <!-- |
|
Shibboleth IdP 3.1の情報
展開 |
---|
computedIdでの設定を下記に示します。 conf/saml-nameid.xml
<ref bean="shibboleth.SAML2PersistentGenerator" /> をアンコメントして有効にします。
コード ブロック |
---|
language | xml |
---|
title | conf/saml-nameid.xml |
---|
| <!-- Uncommenting this bean requires configuration in saml-nameid.properties. -->
<!-- -->
<ref bean="shibboleth.SAML2PersistentGenerator" />
<!-- --> |
conf/saml-nameid.properties
idp.persistentId.generator のデフォルトはComputedId の設定のため、idp.persistentId.sourceAttribute とidp.persistentId.salt のみを設定します。 コード ブロック |
---|
language | sass |
---|
title | conf/saml-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 |
conf/attribute-resolver.xml とconf/attribute-filter.xml
idp.persistentId.sourceAttribute の値をconf/attribute-resolver.xml の//resolver:AttributeDefinition で定義して、conf/attribute-filter.xml で送信設定を行います。
コード ブロック |
---|
language | xml |
---|
title | conf/attribute-resolver.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> |
コード ブロック |
---|
language | xml |
---|
title | conf/attribute-filter.xml |
---|
| <!-- Release to anyone -->
<afp:AttributeFilterPolicy id="PolicyforAnyone">
<afp:PolicyRequirementRule xsi:type="basic:ANY" />
<afp:AttributeRule attributeID="%{idp.persistentId.sourceAttribute}">
<afp:PermitValueRule xsi:type="basic:ANY" />
</afp:AttributeRule>
</afp:AttributeFilterPolicy> |
conf/intercept/consent-intercept-config.xml ユーザ同意画面にて%{idp.persistentId.sourceAttribute} を表示しないように、//util:list[@id="shibboleth.consent.attribute-release.BlacklistedAttributeIDs"] に%{idp.persistentId.sourceAttribute} を追加します。
コード ブロック |
---|
language | xml |
---|
title | conf/intercept/consent-intercept-config.xml |
---|
| <util:list id="shibboleth.consent.attribute-release.BlacklistedAttributeIDs">
<value>transientId</value>
<value>persistentId</value>
<value>eduPersonTargetedID</value>
<value>%{idp.persistentId.sourceAttribute}</value>
</util:list> |
|
storedId
storedIdでの設定を下記に示します。
conf/saml-nameid.xml
<ref bean="shibboleth.SAML2PersistentGenerator" />
をアンコメントして有効にします。
展開 |
---|
コード ブロック |
---|
language | xml |
---|
title | conf/saml-nameid.xml |
---|
| <!-- Uncommenting this bean requires configuration in saml-nameid.properties. -->
<!-- -->
<ref bean="shibboleth.SAML2PersistentGenerator" />
<!-- --> |
コード ブロック |
---|
| <!-- Uncommenting this bean requires configuration in saml-nameid.properties. -->
- <!--
+ <!-- -->
<ref bean="shibboleth.SAML2PersistentGenerator" />
- -->
+ <!-- --> |
|
conf/saml-nameid.properties
idp.persistentId.sourceAttribute,
idp.persistentId.salt, idp.persistentId.generatorとidp.persistentId.store
を設定します。idp.persistentId.salt
には他人が推測できないランダムな値を指定してください。古いIdPから設定を引き継ぐ場合は同じ値を指定してください。
展開 |
---|
コード ブロック |
---|
language | java |
---|
title | conf/saml-nameid.properties |
---|
| # Persistent IDs can be computed on the fly with a hash, or managed in a database
# For computed IDs, set a source attribute and a secret salt:
idp.persistentId.sourceAttribute = uid
#idp.persistentId.useUnfilteredAttributes = true
# Do *NOT* share the salt with other people, it's like divulging your private key.
#idp.persistentId.algorithm = SHA
idp.persistentId.salt = XXXXXXXXXXXXXXXXXXXXXXXXXXX
# To use a database, use shibboleth.StoredPersistentIdGenerator
idp.persistentId.generator = shibboleth.StoredPersistentIdGenerator
# For basic use, set this to a JDBC DataSource bean name:
#idp.persistentId.dataSource = PersistentIdDataSource
# For advanced use, set to a bean inherited from shibboleth.JDBCPersistentIdStore
idp.persistentId.store = MyPersistentIdStore
# Set to an empty property to skip hash-based generation of first stored ID
#idp.persistentId.computed = shibboleth.ComputedPersistentIdGenerator |
コード ブロック |
---|
| # Persistent IDs can be computed on the fly with a hash, or managed in a database
# For computed IDs, set a source attribute and a secret salt:
-#idp.persistentId.sourceAttribute = changethistosomethingreal
+idp.persistentId.sourceAttribute = uid
#idp.persistentId.useUnfilteredAttributes = true
# Do *NOT* share the salt with other people, it's like divulging your private key.
#idp.persistentId.algorithm = SHA
-#idp.persistentId.salt = changethistosomethingrandom
+idp.persistentId.salt = XXXXXXXXXXXXXXXXXXXXXXXXXXX
# To use a database, use shibboleth.StoredPersistentIdGenerator
-#idp.persistentId.generator = shibboleth.ComputedPersistentIdGenerator
+idp.persistentId.generator = shibboleth.StoredPersistentIdGenerator
# For basic use, set this to a JDBC DataSource bean name:
#idp.persistentId.dataSource = PersistentIdDataSource
# For advanced use, set to a bean inherited from shibboleth.JDBCPersistentIdStore
-#idp.persistentId.store = MyPersistentIdStore
+idp.persistentId.store = MyPersistentIdStore
# Set to an empty property to skip hash-based generation of first stored ID
#idp.persistentId.computed = shibboleth.ComputedPersistentIdGenerator |
|
conf/attribute-resolver.xml
conf/attribute-resolver.xml
のidp.persistentId.sourceAttribute
で指定したresolver:AttributeDefinitionをコメントアウトします
。
展開 |
---|
コード ブロック |
---|
language | xml |
---|
title | conf/attribute-resolver.xml |
---|
| <!-- Schema: Core schema attributes-->
<!-- -->
<resolver:AttributeDefinition xsi:type="ad:Simple" id="uid" sourceAttributeID="uid">
<resolver:Dependency ref="myLDAP" />
<resolver:AttributeEncoder xsi:type="enc:SAML1String" name="urn:mace:dir:attribute-def:uid" encodeType="false" />
<resolver:AttributeEncoder xsi:type="enc:SAML2String" name="urn:oid:0.9.2342.19200300.100.1.1" friendlyName="uid" encodeType="false" />
</resolver:AttributeDefinition>
<!-- |
コード ブロック |
---|
| <!-- Schema: Core schema attributes-->
- <!--
+ <!-- -->
<resolver:AttributeDefinition xsi:type="ad:Simple" id="uid" sourceAttributeID="uid">
<resolver:Dependency ref="myLDAP" />
<resolver:AttributeEncoder xsi:type="enc:SAML1String" name="urn:mace:dir:attribute-def:uid" encodeType="false" />
<resolver:AttributeEncoder xsi:type="enc:SAML2String" name="urn:oid:0.9.2342.19200300.100.1.1" friendlyName="uid" encodeType="false" />
</resolver:AttributeDefinition>
+ <!-- |
|
shibpidテーブルの作成
shibpidテーブルを作成します。
展開 |
---|
コード ブロック |
---|
| CREATE TABLE shibpid (
localEntity VARCHAR(255) NOT NULL,
peerEntity VARCHAR(255) NOT NULL,
persistentId VARCHAR(50) NOT NULL,
principalName VARCHAR(50) NOT NULL,
localId VARCHAR(50) NOT NULL,
peerProvidedId VARCHAR(50) NULL,
creationDate TIMESTAMP NOT NULL,
deactivationDate TIMESTAMP NULL,
PRIMARY KEY (localEntity, peerEntity, persistentId)
) ENGINE=InnoDB DEFAULT CHARSET=utf8; |
|
conf/saml-nameid.xml
conf/saml-nameid.xm
lで、idp.persistentId.store
で指定したbean MyPersistentIdStore
を定義します。
展開 |
---|
コード ブロック |
---|
language | xml |
---|
title | conf/saml-nameid.xml |
---|
| <!-- ========================= SAML NameID Generation ========================= -->
<!-- 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" />
<!-- A "store" bean suitable for use in the idp.persistentId.store property. -->
<bean id="MyPersistentIdStore" parent="shibboleth.JDBCPersistentIdStore"
p:dataSource-ref="MyDataSource"
p:queryTimeout="PT2S"
p:retryableErrors="#{{'23000'}}" /> |
コード ブロック |
---|
| <!-- ========================= SAML NameID Generation ========================= -->
+ <!-- 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" />
+
+ <!-- A "store" bean suitable for use in the idp.persistentId.store property. -->
+ <bean id="MyPersistentIdStore" parent="shibboleth.JDBCPersistentIdStore"
+ p:dataSource-ref="MyDataSource"
+ p:queryTimeout="PT2S"
+ p:retryableErrors="#{{'23000'}}" /> |
|
Shibboleth IdP 3.1の情報
展開 |
---|
conf/saml-nameid.xml
<ref bean="shibboleth.SAML2PersistentGenerator" /> をアンコメントして有効にします。
コード ブロック |
---|
language | xml |
---|
title | conf/aml-nameid.xml |
---|
| <!-- Uncommenting this bean requires configuration in saml-nameid.properties. -->
<!-- -->
<ref bean="shibboleth.SAML2PersistentGenerator" />
<!-- --> |
conf/saml-nameid.properties
idp.persistentId.generator, idp.persistentId.store , idp.persistentId.sourceAttribute とidp.persistentId.salt を設定します。
コード ブロック |
---|
language | xml |
---|
title | conf/saml-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 = uid4persistentId
idp.persistentId.salt = changethistosomethingrandom |
conf/global.xml
idp.persistentId.storeの値をconf/global.xml で定義します。
コード ブロック |
---|
language | xml |
---|
title | conf/global.xml (Tomcat 7の場合) |
---|
| <!-- Use this file to define any custom beans needed globally. -->
<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" />
<bean id="PersistentIdStore"
class="net.shibboleth.idp.saml.nameid.impl.JDBCPersistentIdStore"
p:dataSource-ref="MyDataSource" /> |
コード ブロック |
---|
language | xml |
---|
title | conf/global.xml (Tomcat 8の場合) |
---|
| <!-- Use this file to define any custom beans needed globally. -->
<bean id="MyDataSource"
class="org.apache.tomcat.dbcp.dbcp2.BasicDataSource"
p:driverClassName="com.mysql.jdbc.Driver"
p:url="jdbc:mysql://localhost:3306/shibboleth"
p:username="username"
p:password="password"
p:maxIdle="5"
p:maxTotal="10"
p:maxWaitMillis="15000"
p:testOnBorrow="true"
p:validationQuery="select 1"
p:validationQueryTimeout="5" />
<bean id="PersistentIdStore"
class="net.shibboleth.idp.saml.nameid.impl.JDBCPersistentIdStore"
p:dataSource-ref="MyDataSource" /> |
情報 |
---|
Tomcat 8付属のDBCP2から、p:maxActive はp:maxTotal に、p:maxWait はp:maxWaitMillis に変更になりました。 |
conf/attribute-resolver.xmlとconf/attribute-filter.xml
idp.persistentId.sourceAttribute の値をconf/attribute-resolver.xml の//resolver:AttributeDefinition で定義して、conf/attribute-filter.xml で送信設定を行います。
コード ブロック |
---|
language | xml |
---|
title | conf/attribute-resolver.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> |
コード ブロック |
---|
language | xml |
---|
title | conf/attribute-filter.xml |
---|
| <!-- Release to anyone -->
<afp:AttributeFilterPolicy id="PolicyforAnyone">
<afp:PolicyRequirementRule xsi:type="basic:ANY" />
<afp:AttributeRule attributeID="%{idp.persistentId.sourceAttribute}">
<afp:PermitValueRule xsi:type="basic:ANY" />
</afp:AttributeRule>
</afp:AttributeFilterPolicy> |
conf/intercept/consent-intercept-config.xml
ユーザ同意画面にて%{idp.persistentId.sourceAttribute} を表示しないように、//util:list[@id="shibboleth.consent.attribute-release.BlacklistedAttributeIDs"]に%{idp.persistentId.sourceAttribute} を追加します。
コード ブロック |
---|
language | xml |
---|
title | conf/intercept/consent-intercept-config.xml |
---|
| <util:list id="shibboleth.consent.attribute-release.BlacklistedAttributeIDs">
<value>transientId</value>
<value>persistentId</value>
<value>eduPersonTargetedID</value>
<value>%{idp.persistentId.sourceAttribute}</value>
</util:list> |
|
eduPersonTargetedID 属性の送信
//saml2:Subject/saml2:NameID
とは別に//saml2:AttributeStatement/saml2:Attribute
[@FriendlyName="eduPersonTargetedID"]
としてeduPersonTargetedID
属性を送信する設定は下記の通りです。
なお、この機能はShibboleth IdP 3ではDeprecated Featuresとなっています。
computedId
computedIdでの設定を下記に示します。Shibboleth IdP 2と同じ設定で送信可能です。
conf/attribute-resolver.xml
展開 |
---|
コード ブロック |
---|
language | xml |
---|
title | conf/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
展開 |
---|
コード ブロック |
---|
language | xml |
---|
title | conf/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
展開 |
---|
コード ブロック |
---|
language | xml |
---|
title | conf/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
展開 |
---|
コード ブロック |
---|
language | xml |
---|
title | conf/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
展開 |
---|
コード ブロック |
---|
language | xml |
---|
title | conf/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/saml-nameid.xml
(3.1ではconf/global.xml
)のbean MyDataSource
とconf/saml-nameid.propertiesのプ
ロパティを使って書くこともできます。
conf/attribute-resolver.xml
展開 |
---|
コード ブロック |
---|
language | xml |
---|
title | conf/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" />
をアンコメントします。
展開 |
---|
コード ブロック |
---|
language | xml |
---|
title | conf/c14n/subject-c14n.xml |
---|
| <!-- Handle a SAML 2 persistent ID, provided a stored strategy is in use. -->
<ref bean="c14n/SAML2Persistent" /> |
コード ブロック |
---|
| <!-- Handle a SAML 2 persistent ID, provided a stored strategy is in use. -->
- <!-- <ref bean="c14n/SAML2Persistent" /> -->
+ <ref bean="c14n/SAML2Persistent" /> |
|
p:validationQuery="select 1"
p:validationQueryTimeout="5" /> |
|
conf/idp.properties
idp.consent.StorageService
をconf/global.xml
で定義したshibboleth.JPAStorageService
に変更します。
展開 |
---|
コード ブロック |
---|
language | xml |
---|
title | conf/idp.properties |
---|
| # Set to "shibboleth.StorageService" or custom bean for alternate storage of consent
idp.consent.StorageService = shibboleth.JPAStorageService |
コード ブロック |
---|
| # 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.allowPerAttribute
をtrue
に設定することで、属性毎にチェックボックスを付加することができます。
展開 |
---|
コード ブロック |
---|
language | xml |
---|
title | conf/idp.properties |
---|
| # Flags controlling how built-in attribute consent feature operates
#idp.consent.allowDoNotRemember = true
#idp.consent.allowGlobal = true
idp.consent.allowPerAttribute = true |
コード ブロック |
---|
| # 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.compareValues
をtrue
に設定することで、属性値が変化した場合に再度属性選択画面を表示することができます。
展開 |
---|
コード ブロック |
---|
language | xml |
---|
title | conf/idp.properties |
---|
| # Whether attribute values and terms of use text are compared
idp.consent.compareValues = true |
コード ブロック |
---|
| # 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"
を削除します。
画面のカスタマイズ3.1時点の情報
ロゴの変更3.1時点の情報
ロゴをデフォルトのOur Identity Providerから機関のロゴに変更する手順は下記の通りです。
ロゴファイル organization-logo.png
をedit-webapp/images/
以下に配置します。
書式設定済み |
---|
$ ls edit-webapp/images/
dummylogo-mobile.png dummylogo.png organization-logo.png |
messages/error-messages.properties
のidp.logo
を上記1.で配置したファイル名に変更します。 なお、ファイル名は/images/
から始めます。また、 idp.logo.alt-text
を変更します。
コード ブロック |
---|
language | xml |
---|
title | messages/error-messages.properties |
---|
collapse | true |
---|
|
idp.logo = /images/organization-logo.png
idp.logo.alt-text = Organization logo |
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.1時点の情報
表示するメッセージを英語から日本語などに変更する場合は、下記の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
表示されるメッセージの優先順位は下記の通りです。
Accept-Language
ヘッダーの一番目に一致するmessage_言語_国.properties
Accept-Language
ヘッダーの一番目に一致するmessage_言語.properties
- Javaのシステムプロパティに一致する
message_言語_国.properties
- Javaのシステムプロパティに一致する
message_言語.properties
- デフォルトの
message.properties
Javaのシステムプロパティの優先順位は下記の通りです。
- コマンドラインオプション
user.language
とuser.country
- 環境変数
LC_MESSAGES
- 環境変数
LANG
ユーザ同意機能3.1時点の情報
Shibboleth IdP 3には、uApprove相当のユーザ同意機能があります。uApprove JPとの違いはShibboleth IdP 3のユーザ同意機能とuApprove JPとの相違点を参照してください。
ユーザ同意の情報をMySQLに保存する設定3.1時点の情報
StorageRecordsテーブルの作成
コード ブロック |
---|
language | sql |
---|
title | MySQL |
---|
collapse | true |
---|
|
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
の定義は不要です。 |
---|
| global | (Tomcat7の場合)collapse | true Use this file to define any custom beans needed globally.
Default configuration, with default settings applied for all profiles, and enables
the attribute-release consent flow.
-->
<bean id="shibboleth. | JPAStorageService
class="org.opensaml.storage.impl.JPAStorageService" parent="RelyingParty">
<property | p:cleanupInterval="%{idp.storage.cleanupInterval:PT10M}"
c:factory-ref="shibboleth.JPAStorageService.entityManagerFactory" />
<bean id="shibboleth.JPAStorageService.entityManagerFactory"
name="profileConfigurations">
| class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="packagesToScan" value="org.opensaml.storage.impl <bean parent="Shibboleth.SSO" />
| <propertyname="dataSource"ref="MyDataSource"/>
<propertyname="jpaVendorAdapter" refshibbolethJPAStorageService.JPAVendorAdapter<property name="jpaDialect">
<beanclassorg.springframework.orm.jpa.vendor.HibernateJpaDialectSAML1.ArtifactResolution" />
| </property>
</bean>
<beanid="shibboleth.JPAStorageService.JPAVendorAdapter"
classorg.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" p:database="MYSQL"/>
<beanid="MyDataSource"
classorg.apache.tomcat.dbcp.dbcp.BasicDataSource"
p:driverClassName="com.mysql.jdbc.Driver"
p:url="jdbc:mysql://localhost:3306/shibboleth"p:username="username"
p:passwordpassword"p:maxActive="10"
p:maxIdle5"
SAML2.ArtifactResolution" />
| p:maxWait="15000"
p:testOnBorrowtrue"
p:validationQuery="select 1"
p:validationQueryTimeout="5" /> | xml | conf/global.xml (Tomcat8の場合) | | <!--
Default configuration, with default settings applied for all profiles, and enables
the attribute-release consent flow.
|
|
---|
collapse | true |
---|
<!-- Use this file to define any custom beans needed globally. -->
<bean id="shibboleth. | JPAStorageService"
DefaultRelyingParty" parent="RelyingParty">
<property | classorg.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">
<propertynamepackagesToScanvaluep:postAuthenticationFlows=" | org.opensaml.storage.impl<property name="dataSource" ref="MyDataSource <bean parent="Shibboleth.SSO" />
| <propertyname="jpaVendorAdapter" refshibbolethJPAStorageService.JPAVendorAdapter<property name="jpaDialect">
<beanclassorg.springframework.orm.jpa.vendor.HibernateJpaDialectSAML1.ArtifactResolution" />
- | </property>
</bean>
<beanid="shibboleth.JPAStorageService.JPAVendorAdapter"
class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"
<bean parent="SAML2.SSO" p: | databasepostAuthenticationFlows=" | MYSQL
<beanid="MyDataSource"
class="org.apache.tomcat.dbcp.dbcp2.BasicDataSource"
p:driverClassName="com.mysql.jdbc.Driver"
p:urljdbc:mysql://localhost:3306/shibboleth"p:username="username"
p:password="password"
p:maxIdle5"
p:maxTotal="10"
p:maxWaitMillis="15000"
p:testOnBorrowtrue"
p:validationQuery="select1"
p:validationQueryTimeout5 |
情報 |
---|
Tomcat 8付属のDBCP2から、p:maxActive はp:maxTotal に、p:maxWait はp:maxWaitMillis に変更になりました。 |
conf/idp.properties
コード ブロック |
---|
language | xml |
---|
title | conf/idp.properties |
---|
collapse | true |
---|
|
# 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 |
属性毎に同意を得る設定3.1時点の情報
conf/idp.properties
idp.consent.allowPerAttribute
をtrue
に設定することで、属性毎にチェックボックスを付加することができます。
コード ブロック |
---|
language | xml |
---|
title | conf/idp.properties |
---|
collapse | true |
---|
|
idp.consent.allowPerAttribute = true |
注意 |
---|
SPの必須属性にもチェックボックスが表示されるため、利用者がSPの必須属性のチェックを外して属性を送信しなかった場合にSPを利用できない可能性があります。 |
送信済み属性の属性値が変化した場合に再同意を得る設定3.1時点の情報
conf/idp.properties
コード ブロック |
---|
language | xml |
---|
title | conf/idp.properties |
---|
collapse | true |
---|
|
# Whether attribute values and terms of use text are compared
idp.consent.compareValues = true |
...
<ref bean="SAML2.ArtifactResolution" />
<ref bean="Liberty.SSOS" />
</list>
</property>
</bean> |
|
ログレベルの変更
情報 |
---|
Shibboleth IdP 3.2からの新機能です。 |
Shibboleth IdP 3.2より、ログレベルの変更がconf/idp.properties
で行えるようになりました。
conf/idp.properties
設定できるプロパティ名はconf/logback.confの先頭を参照してください。
展開 |
---|
コード ブロック |
---|
language | java |
---|
title | conf/idp.properties |
---|
| # Logging Level
idp.loglevel.idp=DEBUG
idp.loglevel.messages=DEBUG
idp.loglevel.encryption=DEBUG |
コード ブロック |
---|
| +# Logging Level
+idp.loglevel.idp=DEBUG
+idp.loglevel.messages=DEBUG
+idp.loglevel.encryption=DEBUG |
|
...
Shibboleth IdP 3においてクラスタリングを行うには、クラスタリング設定を参照してください。
...
Full SLO(Single Logout)の設定方法
以下の個別ページを参照してください。
⇒Full SLO(Single Logout)の設定方法
クライアントIPアドレスチェックの無効化
抜粋を含める |
---|
| クライアントIPアドレスチェックの無効化 |
---|
| クライアントIPアドレスチェックの無効化 |
---|
nopanel | true |
---|
|
IdPv3アップデートに関する情報
以下の個別ページを参照してください。
⇒IdPv3アップデートに関する情報
トラブルシューティング(IdPv3)
ページを含める |
---|
| トラブルシューティング(IdPv3) |
---|
| トラブルシューティング(IdPv3) |
---|
|
個別ページ(それぞれの内容は基本的に上記内容に埋め込まれています)
参考
- [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をインストールする場合の構築手順貴学にてIdPv3をインストールする場合の構築手順
- NIIオープンフォーラム2016 学認トラック
- 「Shibboleth IdPバージョン3に向けたNIIの取り組み」西村 健(NII)
- 「Shibboleth IdP ver.3との戦い」細川 達己(慶應義塾大学)