OpenId属性交换不适用于雅虎?

时间:2011-08-30 13:10:00

标签: spring openid spring-security yahoo

我使用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,我得到了我问的所有属性......

提前致谢,

2 个答案:

答案 0 :(得分:3)

this SO question可能重复。任何OpenID提供商都不保证支持AX属性,并且从OpenID提供商到提供商肯定会有很大差异。通过这些特定示例,雅虎肯定会返回非常少的信息以响应AX请求,而Google的回报略高。 (当我大约一年前对我的书进行研究时,MyOpenID获得了主要OpenID提供商最完整的AX支持)。

如果您正在计划一些主要的实施计划,您应该查看一些关于OpenID的specs on attribute exchange和其他架构信息。

答案 1 :(得分:3)

这个问题很老,但希望能帮助别人。

我们必须使用电子邮件属性名称而不是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"/>

Read more