Not getting an attribute statement in IDP assertion
Tom Zeller
tzeller at dragonacea.biz
Tue Oct 27 11:59:02 EDT 2015
> On Oct 27, 2015, at 9:38 AM, Taylor Centers <taylor.centers at gmail.com> wrote:
>
> I'm trying to get my ldap database associated with the users in the salesforce account, but no identifying information is being sent up with the assertion. The Subject, NameID is a random transient value, and I couldn't figure out how to make it a persistent hash of user data. I tried changing saml-nameid.xml and saml-nameid.properties with no results, the entire NameID block would disappear from the assertion if I tried changing it.
>
> Below is what I think the relevant files and fields for adding an attribute to the assertion, in my case the user's email. But I am seeing no effect. The logs look like it is getting the 'mail' attribute or at least parses the configuration properly, but I the array for included attributes is empty.
>
> Does anyone notice something I'm doing wrong, or have an idea of how I can get this working? Thanks for any input and advice.
>
>
> attribute-resolver.xml
>
> <resolver:AttributeDefinition xsi:type="ad:Simple" id="mail">
> <resolver:Dependency ref="myLDAP" />
> <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>
>
> 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:StartTLSTrustCredential id="LDAPtoIdPCredential" xsi:type="sec:X509ResourceBacked">
> <sec:Certificate>%{idp.attribute.resolver.LDAP.trustCertificates}</sec:Certificate>
> </dc:StartTLSTrustCredential>
> </resolver:DataConnector>
> <resolver:AttributeDefinition xsi:type="ad:Simple" id="mail">
> <resolver:DataConnector id="myLDAP" xsi:type="dc:LDAPDirectory"
>
> attribute-filter.xml
>
> <afp:AttributeFilterPolicy id="example1">
> <afp:PolicyRequirementRule xsi:type="basic:AttributeRequesterString" value="https://xxxxxxx.my.salesforce.com.org" />
> <afp:AttributeRule attributeID="mail">
> <afp:PermitValueRule xsi:type="basic:ANY" />
> </afp:AttributeRule>
> </afp:AttributeFilterPolicy>
>
> relying-party.xml
>
> <util:list id="shibboleth.RelyingPartyOverrides">
> <bean parent="RelyingPartyByName" c:relyingPartyIds="https://xxxxxxx.my.salesforce.com">
> <property name="profileConfigurations">
> <list>
> <bean parent="SAML2.SSO" p:encryptAssertions="false" p:postAuthenticationFlows="attribute-release" p:includeAttributeStatement="true" />
> </list>
> </property>
> </bean>
>
> idp-process.log
>
> 2015-10-27 13:28:13,280 - INFO [net.shibboleth.utilities.java.support.service.AbstractReloadableService:172] - Service 'shibboleth.AttributeResolverService': Performing initial load
> 2015-10-27 13:28:13,280 - INFO [net.shibboleth.utilities.java.support.service.AbstractReloadableService:258] - Service 'shibboleth.AttributeResolverService': Reloading service configuration
> 2015-10-27 13:28:13,286 - INFO [net.shibboleth.ext.spring.util.SchemaTypeAwareXMLBeanDefinitionReader:317] - Loading XML bean definitions from file [~/shibboleth-idp/conf/attribute-resolver.xml]
> 2015-10-27 13:28:13,414 - INFO [net.shibboleth.idp.attribute.resolver.spring.BaseResolverPluginParser:58] - Parsing configuration for AttributeDefinition plugin with id : mail
> 2015-10-27 13:28:13,415 - INFO [net.shibboleth.idp.attribute.resolver.spring.ResolverPluginDependencyParser:52] - Parsing configuration for Dependency with pluginId : myLDAP
> 2015-10-27 13:28:13,438 - INFO [net.shibboleth.idp.attribute.resolver.spring.BaseResolverPluginParser:58] - Parsing configuration for DataConnector plugin with id : myLDAP
> 2015-10-27 13:28:13,488 - INFO [net.shibboleth.ext.spring.context.FilesystemGenericApplicationContext:510] - Refreshing ApplicationContext:shibboleth.AttributeResolverService: startup date [Tue Oct 27 13:28:13 UTC 2015]; parent: Root WebApplicationContext
> 2015-10-27 13:28:13,944 - INFO [net.shibboleth.ext.spring.service.ReloadableSpringService:378] - Service 'shibboleth.AttributeResolverService': Completed reload and swapped in latest configuration for service 'shibboleth.AttributeResolverService'
> .....
> 2015-10-27 13:28:16,661 - INFO [net.shibboleth.idp.authn.impl.RemoteUserAuthServlet:135] - RemoteUserAuthServlet will process REMOTE_USER, along with attributes [] and headers []
The “attributes [] and headers []” logged above are the HTTP request attributes and headers from which the remote username will attempt to be determined, not the attributes resolved by the IdP via attribute-resolver.xml and attribute-filter.xml (which can be debugged/tested via bin/aacli.bin|sh). Not much help, but that’s a start.
More information about the users
mailing list