禁用RestAuthenticationFilter - Grails Spring Security Rest插件

时间:2015-04-13 14:10:14

标签: rest grails spring-security-rest

我正在使用带有spring-security-rest,spring-security-core和spring-security-ui插件的Grails v2.4.2。

我正在尝试禁用spring-security-rest附带的RestAuthenticationFilter,这样我就可以编写一个不区分大小写的自定义身份验证过滤器。

在我的config.groovy中,我使用以下过滤器链图:

grails.plugin.springsecurity.filterChain.chainMap = [
'/**': 'JOINED_FILTERS,-exceptionTranslationFilter,-authenticationProcessingFilter,-securityContextPersistenceFilter,-rememberMeAuthenticationFilter,-restAuthenticationFilter'

我添加了' - restAuthenticationFilter '来排除RestAuthenticationFilter,但它仍在运行。

如何排除RestAuthentication过滤器,或者通过RestAuthenticationFilter登录时是否有更简单的方法为用户名添加不区分大小写?

2 个答案:

答案 0 :(得分:2)

似乎有两个不同的问题。

如果要排除REST身份验证过滤器,我认为您需要从链中删除restTokenValidationFilter和restExceptionTranslationFilter。

尝试

grails.plugin.springsecurity.filterChain.chainMap = [
'/**': 'JOINED_FILTERS,-exceptionTranslationFilter,-authenticationProcessingFilter,-securityContextPersistenceFilter,-rememberMeAuthenticationFilter,-restTokenValidationFilter,-restExceptionTranslationFilter'
]

如果您想使用户名不区分大小写,只需创建GrailsUserDetailsS​​ervice的自定义实现。实现loadUserByUsername以忽略用户名的大小写。

请参阅http://grails-plugins.github.io/grails-spring-security-core/guide/userDetailsService.html

答案 1 :(得分:1)

插件本身不执行任何身份验证,而是将其委派给Spring的AuthenticationManager,后者又使用配置的任何身份验证提供程序。在您的情况下,使用的提供程序是DaoAuthenticationProvider,它将用户检索委托给userDetailsService配置的bean。

正如@jstell所指出的,核心插件提供了一个GormUserDetailsService,你必须子类化,覆盖方法loadUserByUsername(String username, boolean loadRoles),并在resources.groovy中配置为userDetailsService bean