带有 OpenIDAuthenticationFilter 问题的 Spring Security
Posted
技术标签:
【中文标题】带有 OpenIDAuthenticationFilter 问题的 Spring Security【英文标题】:Spring Security with OpenIDAuthenticationFilter problem 【发布时间】:2011-11-13 22:50:28 【问题描述】:我在使 OpenIDAuthenticationFilter 工作时遇到了一些困难,希望有人能帮助我。
我的 spring-security.xml
org.myapp.openid.service.CustomUserDetailsService.java
公共类 CustomUserDetailsService 实现 UserDetailsService, AuthenticationUserDetailsService 私人最终地图注册用户=新哈希图(); 私有静态最终列表 DEFAULT_AUTHORITIES = AuthorityUtils.createAuthorityList("ROLE_USER"); public UserDetails loadUserByUsername(String id) throws UsernameNotFoundException UserDetails user = registeredUsers.get(id); 如果(用户 == 空) 抛出新的 UsernameNotFoundException(id); 返回用户; /** * 实现 @code AuthenticationUserDetailsService 允许对提交的完全访问 * @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的主要内容,如果未能解决你的问题,请参考以下文章
如何翻转正面带有标签而背面带有另一个标签的视图 - 参见图片
CakePHP 如何处理带有/不带有 'id' 字段的 HABTM 表?
带有 RecyclerView 的 DialogFragment 比带有 Recyclerview 的 Fragment 慢