Attributes not being release from AD

Tom Zeller tzeller at dragonacea.biz
Thu Feb 11 16:13:30 EST 2016


> On Feb 11, 2016, at 2:32 PM, Michael Richter <mrichter at coastal.edu> wrote:
> 
>  
> Hello all,
>     I'm a bit new Shibboleth and have gotten most of the way set up.  I am able to authenticate successfully, but I'm having issues releasing attributes from AD via LDAP using the attribute-resolver.xml and attribute-filter.xml.  I've created the Data connector in the Attribute-resolver.xml:
>  
>  
> <resolver:DataConnector id="coastal" 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>%{idp.attribute.resolver.LDAP.returnAttributes}</dc:ReturnAttributes>
>     <dc:StartTLSTrustCredential id="LDAPtoIdPCredential" xsi:type="sec:X509ResourceBacked">
>         <sec:Certificate>%{idp.attribute.resolver.LDAP.trustCertificates}</sec:Certificate>
>     </dc:StartTLSTrustCredential>
>     </resolver:DataConnector>
>  
> Here’s my ldap.properties file:
>  
> # LDAP authentication configuration, see authn/ldap-authn-config.xml
>  
> ## Authenticator strategy, either anonSearchAuthenticator, bindSearchAuthenticator, directAuthenticator, adAuthenticator
> idp.authn.LDAP.authenticator= bindSearchAuthenticator
>  
> ## Connection properties ##
> #idp.authn.LDAP.ldapURL= xxxx:389
> idp.authn.LDAP.ldapURL= xxxx:389
> #idp.authn.LDAP.useStartTLS                     = false
> idp.authn.LDAP.useSSL                          = false
> #idp.authn.LDAP.connectTimeout                  = 3000
>  
> ## SSL configuration, either jvmTrust, certificateTrust, or keyStoreTrust
> #idp.authn.LDAP.sslConfig                       = certificateTrust
> ## If using certificateTrust above, set to the trusted certificate's path
> idp.authn.LDAP.trustCertificates= %{idp.home}/credentials/ldap-server.crt
> ## If using keyStoreTrust above, set to the truststore path
> idp.authn.LDAP.trustStore= %{idp.home}/credentials/ldap-server.truststore
>  
> ## Return attributes during authentication
> ## NOTE: this is not used during attribute resolution; configure that directly in the
> ## attribute-resolver.xml configuration via a DataConnector's <dc:ReturnAttributes> element
> idp.authn.LDAP.returnAttributes= cn,mail
>  
> ## DN resolution properties ##
>  
> # Search DN resolution, used by anonSearchAuthenticator, bindSearchAuthenticator
> # for AD: CN=Users,DC=example,DC=org
> idp.authn.LDAP.baseDN= DC=coastal, DC=edu
> idp.authn.LDAP.subtreeSearch                   = true
> idp.authn.LDAP.userFilter= (sAMAccountName={user})
> # bind search configuration
> # for AD: idp.authn.LDAP.bindDN=adminuser at domain.com
> idp.authn.LDAP.bindDN= xxxx at coastal.edu
> #idp.authn.LDAP.bindDNCredential= xxxx
> idp.authn.LDAP.bindDNCredential= xxxx
>  
> # Format DN resolution, used by directAuthenticator, adAuthenticator
> # for AD use idp.authn.LDAP.dnFormat=%s at domain.com
> idp.authn.LDAP.dnFormat= %s at coastal.edu
>  
> # LDAP attribute configuration, see attribute-resolver.xml
> idp.attribute.resolver.LDAP.ldapURL= %{idp.authn.LDAP.ldapURL}
> idp.attribute.resolver.LDAP.baseDN= %{idp.authn.LDAP.baseDN}
> idp.attribute.resolver.LDAP.bindDN= %{idp.authn.LDAP.bindDN}
> idp.attribute.resolver.LDAP.bindDNCredential= %{idp.authn.LDAP.bindDNCredential}
> idp.attribute.resolver.LDAP.useStartTLS= %{idp.authn.LDAP.useStartTLS:true}
> idp.attribute.resolver.LDAP.trustCertificates= %{idp.authn.LDAP.trustCertificates}
> idp.attribute.resolver.LDAP.searchFilter= (uid=$requestContext.principalName)
> idp.attribute.resolver.LDAP.returnAttributes = sn,displayName,mail,sAMAccountName
>  
> I've then defined some attributes to be released:  
>  
> <resolver:AttributeDefinition xsi:type="ad:Prescoped" id="eduPersonPrincipalName" sourceAttributeID="cn">
>         <resolver:Dependency ref="coastal" />
>         <resolver:AttributeEncoder xsi:type="enc:SAML1ScopedString" name="urn:mace:dir:attribute-def:eduPersonPrincipalName" encodeType="false" />
>         <resolver:AttributeEncoder xsi:type="enc:SAML2ScopedString" name="urn:oid:1.3.6.1.4.1.5923.1.1.1.6" friendlyName="eduPersonPrincipalName" encodeType="false" />
>     </resolver:AttributeDefinition>
>                 
>                 <resolver:AttributeDefinition xsi:type="ad:Simple" id="sn" sourceAttributeID="sn">
>         <resolver:Dependency ref="coastal" />
>         <resolver:AttributeEncoder xsi:type="enc:SAML1String" name="urn:mace:dir:attribute-def:sn" encodeType="false" />
>         <resolver:AttributeEncoder xsi:type="enc:SAML2String" name="urn:oid:2.5.4.4" friendlyName="sn" encodeType="false" />
>     </resolver:AttributeDefinition>
>     
>     <resolver:AttributeDefinition id="mail" xsi:type="ad:Simple" sourceAttributeID="mail">
>         <resolver:Dependency ref="coastal" />
>         <resolver:AttributeEncoder xsi:type="enc:SAML1String" name="urn:mace:dir:attribute-def:mail" encodeType="false" />
>         <resolver:AttributeEncoder xsi:type="enc:SAML2String" name="urn:oid:0.9.2342.19200300.100.1.3" friendlyName="mail" encodeType="false" />
>     </resolver:AttributeDefinition>
>  
> In my Attribute-filter.xml I’ve added the entries (I’m testing using the incommon test bed)
>  
> <afp:AttributeFilterPolicy id="Incommon Federation">
>         <afp:PolicyRequirementRule xsi:type="basic:AttributeRequesterString" value="https://fm.incommon.org/sp" />
>  
>       <afp:AttributeRule attributeID="eduPersonPrincipalName">
>             <afp:PermitValueRule xsi:type="basic:ANY" />
>         </afp:AttributeRule>
>                                 
>                                 
>                                 <afp:AttributeRule attributeID="mail">
>             <afp:PermitValueRule xsi:type="basic:ANY" />
>         </afp:AttributeRule>
>                                 
>        
>                                 
>                                 <afp:AttributeRule attributeID="displayName">
>             <afp:PermitValueRule xsi:type="basic:ANY" />
>         </afp:AttributeRule>
>  
>       
>     </afp:AttributeFilterPolicy>
>  
>  
>  
>  
> When I log in via the test bed I’m successfully authenticated, but receive no attributes:
>  
>  
> 2016-02-11 14:51:07,594 - INFO [net.shibboleth.idp.authn.impl.ValidateUsernamePasswordAgainstLDAP:179] - Profile Action ValidateUsernamePasswordAgainstLDAP: Login by 'mrichter' succeeded
> 2016-02-11 14:51:12,062 - INFO [net.shibboleth.idp.attribute.resolver.AbstractResolverPlugin:191] - Resolver plugin 'coastal' produced no value.
> 2016-02-11 14:51:12,500 - INFO [Shibboleth-Audit.SSO:241] - 20160211T195112Z|urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect|_3dc45b2cdb437a697a2bc4e21085e075|https://fm.incommon.org/sp|http://shibboleth.net/ns/profiles/saml2/sso/browser|https://shib1.coastal.edu/idp/shibboleth|urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST|_fb8de51164a0df1a8eb8e3f1d14a2bdf|mrichter|urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport||AAdzZWNyZXQxNUWzXq1oYkuk0JwultB0V44+SfEvgjVWhjLysjTMt2F4umkFW8bp2EJ1VEjvIXBdEZ5PEDKkgX2Oosabw9Eu69rNhekwhjic0gMpUpFXhaULSxoGL9OHs2mPhZQyjUBzLw==|_0ad49c4a3bf03d91688ee662da41acd9
> 2016-02-11 14:55:35,082 - INFO [net.shibboleth.idp.attribute.resolver.AbstractResolverPlugin:191] - Resolver plugin 'coastal' produced no value.
>  
>  
>  
> Any  ideas what I’m missing.  Again, I’m fairly new to Shibboleth, so sorry if I missed something obvious.  I tried to research this pretty extensively before posting.  Thanks!

To troubleshoot attributes, I would increase the log level of net.shibboleth.idp.attribute and org.ldaptive to DEBUG, and then use bin/aacli.[sh|bat] to test. HTH.


More information about the users mailing list