1.首先导入依赖。
2.编写AuthorizationServerConfiguration配置类。
3.添加注解Configuration和EnableAuthorizationServer注解
4.该类继承AuthorizationServerConfigurerAdapter。
5.重写configure方法----configure(ClientDetailsServiceConfigurer clients),用来配置客户端认证(识别客户端),设置哪些应用可以通过哪些方式申请权限(注册申请权限的应用信息)。
6.创建WebSecurityConfiguration配置类,继承WebSecurityConfigurerAdapter。
7.添加注解Configuration,EnableWebSecurity(启用配置类)和EnableGlobal MethodSecurity(选择性添加,进行全局方法的拦截,指定你可以用的注解的规范)
8.重写configure(AuthenticationManagerBuilder auth)方法,验证表单参数是否正确,账号密码是否一致。(账号,密码,角色)
在这里他会报错,因为不能用明文,默认的要进行加密,接下来我们再进行修改。
通常使用:
首先,配置默认的加密方式
@Bean
public PasswordEncoder passwordEncoder(){
//告诉框架使用哪种加密格式验证密码
//在此方法的实现中,实际上使用了 BCryptPasswordEncoder 作为默认的实现
return PasswordEncoderFactories.createDelegatingPasswordEncoder();
}
//spring security 5 中默认密码必须加密,加密后的密码表示方式为:{加密方式}加密结果
BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();
//加密后的密码表示方式为:{加密方式}加密结果
String password = "{bcrypt}" + bCryptPasswordEncoder.encode("123456");
//设置两个默认用户
auth.inMemoryAuthentication().passwordEncoder(passwordEncoder())
//用户名密码角色
.withUser("zhangsan").password(password).roles("ADMIN")
.and()
.withUser("lisi").password(password).roles("EMPLOYEE");
包括在步骤5重写的方法中也要进行加密。
配置完成后就可以在postman中
需要填入参数:
grant_type | 授权类型 |
code | 回调回来的code,只能使用一次 |
client_id | 自己的服务向第三方服务注册时给第三方服务的,用来表示自己服务的身份的id |
client_secret | 自己服务对应的在第三方服务上的密钥 |