博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Boot 2.0 整合 Spring Security Oauth2
阅读量:6352 次
发布时间:2019-06-22

本文共 2688 字,大约阅读时间需要 8 分钟。

是金子在哪都会发光的——每个说这句话的人都误以为自己是金子。

前言

在中,我们使用Spring Boot 1.5.6.RELEASE版本整合Spring Security Oauth2实现了授权码模式、密码模式以及用户自定义登录返回token。但更新至Spring Boot 2.0.1.RELEASE版本时会出现一些小问题。在此,帮大家踩一下坑。关于OAuth2请参考

修改pom.xml

更新Spring Boot版本为Spring Boot 2.0.1.RELEASE

org.springframework.boot
spring-boot-starter-parent
2.0.1.RELEASE
复制代码

新增SecurityConfig配置

新增SecurityConfig用于暴露AuthenticationManager

@Configurationpublic class SecurityConfig extends WebSecurityConfigurerAdapter {    @Bean    @Override    public AuthenticationManager authenticationManagerBean() throws Exception {        AuthenticationManager manager = super.authenticationManagerBean();        return manager;    }    @Bean    public PasswordEncoder passwordEncoder() {        return new BCryptPasswordEncoder();    }    @Override    protected void configure(HttpSecurity http) throws Exception {        http//                .formLogin().and()                .httpBasic().and()                .csrf().disable();    }}复制代码

修改MerryyouAuthorizationServerConfig

修改MerryyouAuthorizationServerConfig用于加密clientsecret和设置重定向地址

...... @Override    public void configure(ClientDetailsServiceConfigurer clients) throws Exception {        InMemoryClientDetailsServiceBuilder build = clients.inMemory();        if (ArrayUtils.isNotEmpty(oAuth2Properties.getClients())) {            for (OAuth2ClientProperties config : oAuth2Properties.getClients()) {                build.withClient(config.getClientId())                        .secret(passwordEncoder.encode(config.getClientSecret()))                        .accessTokenValiditySeconds(config.getAccessTokenValiditySeconds())                        .refreshTokenValiditySeconds(60 * 60 * 24 * 15)                        .authorizedGrantTypes("refresh_token", "password", "authorization_code")//OAuth2支持的验证模式                        .redirectUris("http://www.merryyou.cn")                        .scopes("all");            }        }......复制代码

修改application.yml

由于在2.x版本中由于引入了不同的客户端,需要指定配置哪种连接池。

server:  port: 8888  redis:    host: localhost    port: 6379    jedis:      pool:        max-active: 8        max-wait: -1        min-idle: 0        max-idle: 8logging:  level:    org.springframework: infomerryyou:  security:    oauth2:      storeType: redis #或者jwt      jwtSigningKey: merryyou      clients[0]:        clientId: merryyou        clientSecret: merryyou      clients[1]:              clientId: merryyou1              clientSecret: merryyou1复制代码

效果如下

授权码模式

密码模式

自定义登录

刷新token

代码下载

  • github:
  • gitee:

参考

推荐文章


???关注微信小程序java架构师历程 上下班的路上无聊吗?还在看小说、新闻吗?不知道怎样提高自己的技术吗?来吧这里有你需要的java架构文章,1.5w+的java工程师都在看,你还在等什么?

转载地址:http://uomla.baihongyu.com/

你可能感兴趣的文章
servlet笔记
查看>>
JVM(五)垃圾回收器的前世今生
查看>>
Spring Boot 自动配置之@EnableAutoConfiguration
查看>>
web前端笔记
查看>>
import 路径
查看>>
finally知识讲解
查看>>
Matplotlib绘图与可视化
查看>>
openstack ocata版(脚本)控制节点安装
查看>>
【微信公众号开发】获取并保存access_token、jsapi_ticket票据(可用于微信分享、语音识别等等)...
查看>>
datatable 获取最大值
查看>>
sqlserver2012一直显示正在还原(Restoring)和从单用户转换成多用户模式(单用户连接中)...
查看>>
spark复习总结02
查看>>
李瑞红201771010111《第九周学习总结》
查看>>
[译]ZOOKEEPER RECIPES-Barriers
查看>>
NFC 鏈表操作
查看>>
pymongo模块
查看>>
第0次作业
查看>>
Ubuntu里设置python默认版本为python3(转载)
查看>>
快排+折半查找
查看>>
c# GC 新典型
查看>>