...
eduPersonTargetedIDのAttributeDefinitionはデフォルトのままで利用可能です。
パネル title /opt/shibboleth-idp/conf/attribute-resolver.xml の設定 <!-- Attribute Definition for eduPersonTargetedID (computedID) --> <resolver:AttributeDefinition xsi:type="ad:SAML2NameID" id="eduPersonTargetedID"
nameIdFormat="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent" sourceAttributeID="computedID"> <resolver:Dependency ref="computedID" /> <resolver:AttributeEncoder xsi:type="enc:SAML1XMLObject"
name="urn:oid:1.3.6.1.4.1.5923.1.1.1.10" encodeType="false" /> <resolver:AttributeEncoder xsi:type="enc:SAML2XMLObject"
name="urn:oid:1.3.6.1.4.1.5923.1.1.1.10" friendlyName="eduPersonTargetedID" encodeType="false" /> </resolver:AttributeDefinition>Template Attribute Definitionで uid-createTimestamp の文字列を返すAttributeDefinitionを定義して、ComputedID用DataConnectorの sourceAttributeID, Dependencyで参照できるようにします。ここでは「templateePTID」という名前を用います。
パネル title /opt/shibboleth-idp/conf/attribute-resolver.xml の設定 <!-- Computed targeted ID connector -->
<resolver:DataConnector id="computedID" xsi:type="dc:ComputedId"
generatedAttributeID="computedID"
sourceAttributeID="%{idp.persistentId.sourceAttribute}"
salt="%{idp.persistentId.salt}">
<resolver:Dependency ref="%{idp.persistentId.sourceAttribute}" />
</resolver:DataConnector>
<resolver:AttributeDefinition id="templateePTID" xsi:type="Template" xmlns="urn:mace:shibboleth:2.0:resolver:ad">
<resolver:Dependency ref="myLDAP" />
<Template>
<![CDATA[
${uid}-${createTimestamp}
]]>
</Template>
<SourceAttribute>uid</SourceAttribute>
<SourceAttribute>createTimestamp</SourceAttribute>
</resolver:AttributeDefinition> ← 追加パネル title /opt/shibboleth-idp/conf/saml-nameid.properties の設定 # For computed IDs, set a source attribute and a secret salt:
idp.persistentId.sourceAttribute = templateePTID ← 変更
LDAPから追加でcreateTimestampを取得するためにLDAP DataConnectorにReturnAttributesを定義します。
パネル title /opt/shibboleth-idp/conf/attribute-resolver.xml の設定 <resolver:DataConnector id="myLDAP" xsi:type="dc:LDAPDirectory"
ldapURL="%{idp.attribute.resolver.LDAP.ldapURL}"
baseDN="%{idp.attribute.resolver.LDAP.baseDN}"
principal="%{idp.attribute.resolver.LDAP.bindDN}"
principalCredential="%{idp.attribute.resolver.LDAP.bindDNCredential}"
useStartTLS="%{idp.attribute.resolver.LDAP.useStartTLS:true}">
<dc:FilterTemplate>
<![CDATA[
%{idp.attribute.resolver.LDAP.searchFilter}
]]>
</dc:FilterTemplate>
<dc:ReturnAttributes>* createTimestamp</dc:ReturnAttributes> ← 追加(FilterTemplateの直後である必要があります)
</resolver:DataConnector>
...