带有 OpenIDAuthenticationFilter 问题的 Spring Security

Posted

技术标签:

【中文标题】带有 OpenIDAuthenticationFilter 问题的 Spring Security【英文标题】:Spring Security with OpenIDAuthenticationFilter problem 【发布时间】:2011-11-13 22:50:28 【问题描述】:

我在使 OpenIDAuthenticationFilter 工作时遇到了一些困难,希望有人能帮助我。

我的 spring-security.xml

安全:http> 豆> 属性> 豆> 豆> 豆> 列表> 豆> 属性> 豆> 豆> 豆>

org.myapp.openid.service.CustomUserDetailsS​​ervice.java

公共类 CustomUserDetailsS​​ervice 实现 UserDetailsS​​ervice, AuthenticationUserDetailsS​​ervice 私人最终地图注册用户=新哈希图(); 私有静态最终列表 DEFAULT_AUTHORITIES = AuthorityUtils.createAuthorityList("ROLE_USER"); public UserDetails loadUserByUsername(String id) throws UsernameNotFoundException UserDetails user = registeredUsers.get(id); 如果(用户 == 空) 抛出新的 UsernameNotFoundException(id); 返回用户; /** * 实现 @code AuthenticationUserDetailsS​​ervice 允许对提交的完全访问 * @code 身份验证 对象。由 OpenIDAuthenticationProvider 使用。 */ public UserDetails loadUserDetails(OpenIDAuthenticationToken token) 字符串 id = token.getIdentityUrl(); CustomUserDetails user = registeredUsers.get(id); 如果(用户!= null) 返回用户; 字符串电子邮件=空; 字符串名字 = null; 字符串姓氏=空; 字符串全名 = 空; 列出属性 = token.getAttributes(); for(OpenIDAttribute 属性:属性) if (attribute.getName().equals("email")) 电子邮件 = 属性.getValues().get(0); if (attribute.getName().equals("firstname")) firstName = 属性.getValues().get(0); if (attribute.getName().equals("lastname")) 姓氏 = 属性.getValues().get(0); if (attribute.getName().equals("fullname")) 全名 = 属性.getValues().get(0); 如果(全名==空) StringBuilder fullNameBldr = new StringBuilder(); 如果(名字!= null) fullNameBldr.append(firstName); 如果(姓氏!= null) fullNameBldr.append(" ").append(lastName); fullName = fullNameBldr.toString(); ……

当我在调试时,方法 loadUserByUsername(),有一个 Url 返回,但 OpenIDAttributes 为空(电子邮件、名字和姓氏)。

我想我一定是把 spring-security.xml 配置错了,请帮忙。谢谢

【问题讨论】:

【参考方案1】:

只需要属性:

`<beans:bean class="org.springframework.security.openid.OpenIDAttribute">
                    <beans:constructor-arg index="0" value="email" />
                    <beans:constructor-arg index="1" value="http://schema.openid.net/contact/email" />
                    <beans:property name="required" value="true"/>
</beans:bean>`

【讨论】:

以上是关于带有 OpenIDAuthenticationFilter 问题的 Spring Security的主要内容,如果未能解决你的问题,请参考以下文章

带有和不带有聚合的 sql 查询

如何翻转正面带有标签而背面带有另一个标签的视图 - 参见图片

CakePHP 如何处理带有/不带有 'id' 字段的 HABTM 表?

带有滚动的 Div 和带有绝对位置的内容

带有 RecyclerView 的 DialogFragment 比带有 Recyclerview 的 Fragment 慢

访问控制允许带有和不带有 www 的来源