【发布时间】:2011-12-12 17:01:01
【问题描述】:
在通过 Websphere LTPA SSO 令牌给定预身份验证的情况下,初始化 Spring 上下文的最佳方法是什么?现在我有一个自定义过滤器,它为 Spring Security 上下文提供 PreAuthorizedAuthenticationToken。是否有现有的过滤器可以自动为我执行此操作?当我尝试使用 PreAuth 类时,我总是遇到 GrantedAuthorities 的问题。
干杯
【问题讨论】:
在通过 Websphere LTPA SSO 令牌给定预身份验证的情况下,初始化 Spring 上下文的最佳方法是什么?现在我有一个自定义过滤器,它为 Spring Security 上下文提供 PreAuthorizedAuthenticationToken。是否有现有的过滤器可以自动为我执行此操作?当我尝试使用 PreAuth 类时,我总是遇到 GrantedAuthorities 的问题。
干杯
【问题讨论】:
最好的选择是通过扩展 AbstractPreAuthenticatedProcessingFilter 来自定义预认证过滤器。
您可以从请求中获取令牌并在 getPreAuthenticatedCredentials() 方法中返回它。
您可以定义自己的AuthenticationUserDetailsService并将其传递给PreAuthenticatedAuthenticationProvider,在这里您可以获取授予的权限并在UserDetails对象中返回它们
<bean id="preAuthAuthenticationProvider"
class="org.springframework.security.web.authentication.preauth.PreAuthenticatedAuthenticationProvider">
<property name="preAuthenticatedUserDetailsService">
<bean id="myUserDetailsService"
class="MyUserDetailsService">
</bean>
</property>
</bean>
如果您已授予身份验证,而不是从默认前缀 ROLE 开始,您可以定义您的自定义前缀
<bean id="myPermissionRoleVoter" class="org.springframework.security.access.vote.RoleVoter">
<property name="rolePrefix" value="myprefix"/>
</bean>
【讨论】: