如何在security-context.xml中的<openid-attribute>标记内的属性交换期间提供多个URI作为类型值?</openid-attribute>

时间:2011-08-29 12:47:31

标签: openid spring-security

我正在使用Spring Security 3.0.5在我正在处理的网站上提供身份验证和授权...用于访问我定义的电子邮件属性如下... <security:openid-attribute name="email" type="http://schema.openid.net/contact/email" required="true" count="2"/>

现在我想为所有三种属性类型All the three types提供支持。如何为多个属性提供支持。

谢谢,

1 个答案:

答案 0 :(得分:1)

如果没有一些相对广泛的自定义,您在Spring Security 3.0.5中所描述的内容实际上是不可能的。你有几个我能想到的选择:

为每个可能的架构组合创建不同的openid-attribute映射。例如:

<security:openid-attribute name="email" type="http://axschema.org/contact/email" required="true" count="2"/>
<security:openid-attribute name="email2" type="http://schema.openid.net/contact/email" required="true" count="2"/>
<security:openid-attribute name="email3" type="http://openid.net/schema/contact/email" required="true" count="2"/>

此选项的难点在于,当您尝试对这些属性执行某些操作时,需要查看3个不同的属性值。

在每个identifier-matcher元素上使用支持openid-attribute的Spring Security 3.1功能,以缩小OpenID提供程序对特定架构的使用范围。这样做的好处是您可能只使用一个属性名称,并期望identifier-matcher功能选择正确的名称。缺点是您需要做一些功课,找出哪些OpenID提供程序支持哪些模式和属性。

不幸的是,在任何一种情况下都不是一个很好的解决方案 - 欢迎来到OpenID AX世界:)