...
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}">
<resolver:FailoverDataConnector ref="myLDAP2" />
<dc:FilterTemplate>
<![CDATA[
%{idp.attribute.resolver.LDAP.searchFilter}
]]>
</dc:FilterTemplate>
<dc:ReturnAttributes>* createTimestamp</dc:ReturnAttributes>
(FilterTemplateの直後に追加する必要がありますFilterTemplateの直後である必要があります)← 追加
</resolver:DataConnector>
...