我正在使用 Spring Security 3.0.5 为我的网站提供 openid 支持。我在 Spring-Security.xml 中编写了以下代码
<security:attribute-exchange>
<security:openid-attribute name="axContactEmail" type="http://axschema.org/contact/email" required="true"/>
<security:openid-attribute name="oiContactEmail" type="http://schema.openid.net/contact/email" required="true"/>
<security:openid-attribute name="axNamePersonFullname" type="http://axschema.org/namePerson" required="true"/>
<security:openid-attribute name="axNamePersonFriendlyName" type="http://axschema.org/namePerson/friendly" required="true"/>
<security:openid-attribute name="axNamePersonFirstName" type="http://axschema.org/namePerson/first" required="true"/>
<security:openid-attribute name="axNamePersonLastName" type="http://axschema.org/namePerson/last" required="true"/>
</security:attribute-exchange>
然后我使用 OpenIDAuthenticationToken
访问属性...出于调试目的,我已在控制台上打印了值...我已打印了参数...在尝试 Yahoo login
时得到以下输出...
Email Address : null
Full name : null null
Prefered login : null.null
Identifier here : https://me.yahoo.com/a/L73gX9Yjkt2SKmqcgkzrbF7gGjRP **(correct!!! I have checked it)**
相同的代码适用于 gmail,并且我得到了我要求的所有属性...
提前致谢,
最佳答案
这个问题很老了,但希望对其他人有帮助。
我们必须使用电子邮件属性名称而不是 axContactEmail 或 oiContactEmail
我的配置适用于 Google 和 Yahoo! :
<security:attribute-exchange>
<security:openid-attribute name="email" type="http://schema.openid.net/contact/email" required="true"/>
<security:openid-attribute name="forename" type="http://schema.openid.net/namePerson/first" required="true"/>
<security:openid-attribute name="surname" type="http://schema.openid.net/namePerson/last" required="true"/>
<security:openid-attribute name="name" type="http://schema.openid.net/namePerson/friendly" required="true"/>
<!--Yahoo-->
<security:openid-attribute name="fullname" type="http://axschema.org/namePerson" required="true"/>
<security:openid-attribute name="email" type="http://axschema.org/contact/email" required="true"/>
关于spring - OpenId 属性交换对 yahoo 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7243644/