在 Grails 3.0 中配置 Spring Boot Security 以使用 BCrypt 密码编码

Posted

技术标签:

【中文标题】在 Grails 3.0 中配置 Spring Boot Security 以使用 BCrypt 密码编码【英文标题】:Configuring Spring Boot Security to use BCrypt password encoding in Grails 3.0 【发布时间】:2015-08-10 00:50:04 【问题描述】:

在 Grails 3.0 中,如何指定 Spring Boot Security 应使用 BCrypt 进行密码编码?

以下几行应该提供我认为需要做的事情的感觉(但我大多只是猜测):

import org.springframework.security.crypto.password.PasswordEncoder
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder

PasswordEncoder passwordEncoder

passwordEncoder(BCryptPasswordEncoder)

我的应用程序将 spring-boot-starter-security 作为依赖项加载:

build.gradle

dependencies 
   ...
   compile "org.springframework.boot:spring-boot-starter-security"

我为userDetailsService 连接了一个服务,使用:

conf/spring/resources.groovy

import com.example.GormUserDetailsService
import com.example.SecurityConfig

beans = 
   webSecurityConfiguration(SecurityConfig)
   userDetailsService(GormUserDetailsService)
   

【问题讨论】:

【参考方案1】:

我在grails-app/conf/spring/resources.groovy中有以下代码

import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder

beans = 
    bcryptEncoder(BCryptPasswordEncoder)

我有一个 java 文件,它按照spring-security 的描述进行配置。在 groovy 中也应该可以做到,但我是在 java 中做到的。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.config.annotation.web.servlet.configuration.EnableWebMvcSecurity;
import org.springframework.security.core.userdetails.UserDetailsService;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;

@Configuration
@EnableWebMvcSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter 
    @Autowired
    BCryptPasswordEncoder bcryptEncoder;

    @Autowired
    UserDetailsService myDetailsService

    @Override
    protected void configure(AuthenticationManagerBuilder auth) throws Exception 
            // userDetailsService should be changed to your user details service
            // password encoder being the bean defined in grails-app/conf/spring/resources.groovy
            auth.userDetailsService(myDetailsService)
                .passwordEncoder(bcryptEncoder);
    

【讨论】:

以上是关于在 Grails 3.0 中配置 Spring Boot Security 以使用 BCrypt 密码编码的主要内容,如果未能解决你的问题,请参考以下文章

Grails 3.0 中的 Spring Boot Security login.html 位置

应用程序启动失败 Grails 3.3.0 添加 Spring Security

Gradle 3.5 搭建 Grails 3.0 项目配置

在 Grails Spring 安全核心插件中配置了两次 Spring 安全核心框架

如何在 Grails 3.0 中使用 jQuery

在 Grails Spring Security Core 插件中配置会话超时,无需修改“War”