Open
Description
grady cooper (Migrated from SEC-2219) said:
org.springframework.security.openidOpenID4JavaConsumer::fetchAxAttributes() uses the attribute name to retrieve the attribute values( List values = fetchResp.getAttributeValues(attr.getName());). However, the intuit OP (which maybe a .NET provider) uses an alias scheme (not the attribute name) to provide values. Partial responses from intuit OP (notice "email" attributes value is names value.alias3 (not "email") :
I believe the correct fix is to lookup attributes by type ( org.openid4java.message.ax.AxPayload::getAttributeValuesByTypeUri(String typeUri)) - however, I'm a newbie to openid and admittedly don't know all the compatibility issues.
security configuration for intuit OP:
<b:entry key=".*intuit.com.*">
<b:list>
<b:bean class="org.springframework.security.openid.OpenIDAttribute">
<b:constructor-arg name="name" value="email"/>
<b:constructor-arg name="type" value="http://axschema.org/contact/email"/>
<b:property name="required" value="true"/>
</b:bean>
<b:bean class="org.springframework.security.openid.OpenIDAttribute">
<b:constructor-arg name="name" value="firstname"/>
<b:constructor-arg name="type" value="http://axschema.org/namePerson/first"/>
<b:property name="required" value="true"/>
</b:bean>
<b:bean class="org.springframework.security.openid.OpenIDAttribute">
<b:constructor-arg name="name" value="lastname" />
<b:constructor-arg name="type" value="http://axschema.org/namePerson/last"/>
<b:property name="required" value="true"/>
</b:bean>
<b:bean class="org.springframework.security.openid.OpenIDAttribute">
<b:constructor-arg name="name" value="realmId" />
<b:constructor-arg name="type" value="http://axschema.org/intuit/realmId"/>
<b:property name="required" value="true"/>
</b:bean>
</b:list>
</b:entry>