Objectiu:
En l’entorn Shibboleth que hem muntat en les dues entrades anteriors (idp, sp) desitgem passar atributs des del directori LDAP mitjançant l’idp fins el sp que els sol·licita.
Procediment:
Aquest pas a pas no requereix cap instal·lació de programari addicional. L’única cosa que hem de fer és configurar les diferents parts del sistema d’acord amb les nostres necessitats.
Configuració de l’sp:
El primer que farem és configurar l’sp per tal que escolti per tota una sèrie d’atributs LDAP estàndard com ara el nom sencer (cn), el nom (givenName), el cognom (sn) i l’adreça de correu (mail). En aquest arxiu haurem de descomentar tots els atributs que necessitem.
$ pico /etc/shibboleth/attribute-map.xml
... <Attribute name="urn:mace:dir:attribute-def:cn" id="cn"/> <Attribute name="urn:mace:dir:attribute-def:sn" id="sn"/> <Attribute name="urn:mace:dir:attribute-def:givenName" id="givenName"/> <Attribute name="urn:mace:dir:attribute-def:mail" id="mail"/> ... <Attribute name="urn:oid:2.5.4.3" id="cn"/> <Attribute name="urn:oid:2.5.4.4" id="sn"/> <Attribute name="urn:oid:2.5.4.42" id="givenName"/> <Attribute name="urn:oid:0.9.2342.19200300.100.1.3" id="mail"/> ...
En aquest cas s’han activat els atributs per les dues versions de SAML, segons estan configurats a l’idp.
Finalment només cal reiniciar el servei shibd:
$ service shibd restart
Configuració de l’idp:
En aquest cas s’han de modificar dos arxius.
En el primer ($IDP_HOME/conf/attribute-resolver.mxl) escollirem QUINS atributs volem recuperar de l’LDAP i, de nou, configurarem un connexió a l’LDAP independent de la que utilitzem per l’autenticació.
$ pico $IDP_HOME/conf/attribute-resolver.mxl
... <resolver:AttributeDefinition xsi:type="ad:Simple" id="email" sourceAttributeID="mail"> <resolver:Dependency ref="myLDAP" /> <resolver:AttributeEncoder xsi:type="enc:SAML1String" name="urn:mace:dir:attribute-def:mail" /> <resolver:AttributeEncoder xsi:type="enc:SAML2String" name="urn:oid:0.9.2342.19200300.100.1.3" friendlyName="mail" /> </resolver:AttributeDefinition> ... <resolver:AttributeDefinition xsi:type="ad:Simple" id="commonName" sourceAttributeID="cn"> <resolver:Dependency ref="myLDAP" /> <resolver:AttributeEncoder xsi:type="enc:SAML1String" name="urn:mace:dir:attribute-def:cn" /> <resolver:AttributeEncoder xsi:type="enc:SAML2String" name="urn:oid:2.5.4.3" friendlyName="cn" /> </resolver:AttributeDefinition> <resolver:AttributeDefinition xsi:type="ad:Simple" id="surname" sourceAttributeID="sn"> <resolver:Dependency ref="myLDAP" /> <resolver:AttributeEncoder xsi:type="enc:SAML1String" name="urn:mace:dir:attribute-def:sn" /> <resolver:AttributeEncoder xsi:type="enc:SAML2String" name="urn:oid:2.5.4.4" friendlyName="sn" /> </resolver:AttributeDefinition> ... <resolver:AttributeDefinition xsi:type="ad:Simple" id="givenName" sourceAttributeID="givenName"> <resolver:Dependency ref="myLDAP" /> <resolver:AttributeEncoder xsi:type="enc:SAML1String" name="urn:mace:dir:attribute-def:givenName" /> <resolver:AttributeEncoder xsi:type="enc:SAML2String" name="urn:oid:2.5.4.42" friendlyName="givenName" /> </resolver:AttributeDefinition> ... <!-- Example LDAP Connector --> <resolver:DataConnector id="myLDAP" xsi:type="dc:LDAPDirectory" ldapURL="ldap://ldap.domain.org" baseDN="dc=domain,dc=org" principal="cn=binduser,dc=domain,dc=org" principalCredential="password"> <dc:FilterTemplate> <![CDATA[ (uid=$requestContext.principalName) ]]> </dc:FilterTemplate> </resolver:DataConnector> ...
La resta ho podem deixar comentat tal i com està.
NOTA: De nou, la configuració per Active Directory és una mica diferent:
... <!-- Example LDAP Connector --> <resolver:DataConnector id="myLDAP" xsi:type="dc:LDAPDirectory" ldapURL="ldap://ad.domain.org:3268" baseDN="dc=domain,dc=org" principal="cn=binduser,dc=domain,dc=org" principalCredential="password"> <dc:FilterTemplate> <![CDATA[ (samaccountname=$requestContext.principalName) ]]> </dc:FilterTemplate> </resolver:DataConnector> ...
En el segon arxiu ($IDP_HOME/conf/attribute-filter.mxl) escollirem A QUI volem enviar els atributs.
$ pico $IDP_HOME/conf/attribute-filter.mxl
... <afp:AttributeFilterPolicy> <afp:PolicyRequirementRule xsi:type="basic:AttributeRequesterString" value="https://sp.domain.org/shibboleth" /> <afp:AttributeRule attributeID="givenName"> <afp:PermitValueRule xsi:type="basic:ANY" /> </afp:AttributeRule> <afp:AttributeRule attributeID="commonName"> <afp:PermitValueRule xsi:type="basic:ANY" /> </afp:AttributeRule> <afp:AttributeRule attributeID="surname"> <afp:PermitValueRule xsi:type="basic:ANY" /> </afp:AttributeRule> <afp:AttributeRule attributeID="email"> <afp:PermitValueRule xsi:type="basic:ANY" /> </afp:AttributeRule> </afp:AttributeFilterPolicy> ...
Finalment només cal reiniciar el servei tomcat6:
$ service tomcat6 restart
Comprovació:
Si duem a terme de nou l’autenticació d’un client tot hauria de seguir funcionant com abans, amb la novetat que si ara accedim a la pàgina https://sp.domain.org/Shibboleth.sso/Session veurem certa informació sobre els atributs rebuts. Si és així tot ha anat bé.
Documentació:
Igual que en les entrades anterior deixo l’enllaç a la wiki de shibboleth: https://wiki.shibboleth.net/confluence/display/SHIB2/Home