oauth2.0的配置信息AuthorizationServerConfigurerAdapter

2023-11-06

继承AuthorizationServerConfigurerAdapter方法的配置

@Configuration
@EnableAuthorizationServer
public class Oauth2ServerConfig extends AuthorizationServerConfigurerAdapter {

    @Autowired
    private BCryptPasswordEncoder bCryptPasswordEncoder;  //加密

    @Autowired
    private UserServiceImpl userDetailsService;  //加载用户信息

    @Autowired
    private AuthenticationManager authenticationManager; //认证管理器

    @Autowired
    private TokenStore tokenStore;  //JWT令牌存储方案

    @Autowired
    private DataSource dataSource; //数据源,用于从数据库获取数据进行认证操作,测试可以从内存中获取

    @Autowired
    private JwtTokenEnhancer jwtTokenEnhancer;  //jwt设置需要的字段

    @Autowired
    private JwtAccessTokenConverter jwtAccessTokenConverter;  //jks公钥

    @Autowired
    private AuthorizationCodeServices authorizationCodeServices;  //授权码

    @Autowired
    private ClientDetailsService clientDetailsService;  //将客户端client id secret这些信息存储到数据库

    @Bean  //设置授权码模式的授权码如何存取
    public AuthorizationCodeServices authorizationCodeServices(DataSource dataSource) {
        return new JdbcAuthorizationCodeServices(dataSource);
    }

    @Bean  //客户端配置,将客户端client id secret这些信息存储到数据库
    public ClientDetailsService clientDetailsService() {
        return new JdbcClientDetailsService(dataSource);
    }

    @Bean  //令牌管理服务
    public AuthorizationServerTokenServices tokenService() {
        //jwt令牌内容增强
        TokenEnhancerChain enhancerChain = new TokenEnhancerChain();
        List<TokenEnhancer> delegates = new ArrayList<>();
        delegates.add(jwtTokenEnhancer);
        delegates.add(jwtAccessTokenConverter);
        enhancerChain.setTokenEnhancers(delegates); //配置JWT的内容增强器
        // 配置tokenServices参数
        DefaultTokenServices service=new DefaultTokenServices();
        service.setClientDetailsService(clientDetailsService); //客户端详情服务
        service.setSupportRefreshToken(true); //支持刷新令牌

        service.setTokenStore(tokenStore); //令牌存储,把access_token和refresh_token保存到数据库
        service.setTokenEnhancer(enhancerChain); //配置JWT的内容增强

        service.setAccessTokenValiditySeconds(7200);  // 令牌默认有效期2小时
        service.setRefreshTokenValiditySeconds(259200);  // 刷新令牌默认有效期3天
        return service;
    }

    @Override
    public void configure(ClientDetailsServiceConfigurer clientsDetails) throws Exception {
        //从数据库加载认证信息
        clientsDetails.withClientDetails(clientDetailsService);
/*        // 测试用,将客户端信息存储在内存中
        clientsDetails.inMemory()
                .withClient("client")   // client_id
                .secret(bCryptPasswordEncoder.encode("123456"))       // client_secret
                .authorizedGrantTypes("password", "authorization_code", "refresh_token")     // 该client允许的授权类型
                .scopes("all")     // 允许的授权范围
                .accessTokenValiditySeconds(3600)
                .refreshTokenValiditySeconds(86400)
                //加上验证回调地址
                .redirectUris("http://www.baidu.com")
                .autoApprove(true); //登录后绕过批准询问(/oauth/confirm_access)*/
    }

    @Override
    public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
        endpoints.authenticationManager(authenticationManager) //配置授权管理认证对象
                .userDetailsService(userDetailsService) //配置加载用户信息的服务
                .authorizationCodeServices(authorizationCodeServices) //授权码服务,添加就可以保存到数据库了
                .accessTokenConverter(jwtAccessTokenConverter) //jwt保存的信息
                .tokenServices(tokenService()) //令牌管理服务,调用上面的方法
                .allowedTokenEndpointRequestMethods(HttpMethod.GET, HttpMethod.POST);
    }

    @Override
    public void configure(AuthorizationServerSecurityConfigurer security) throws Exception {
        security.allowFormAuthenticationForClients()
                .passwordEncoder(bCryptPasswordEncoder)
                .tokenKeyAccess("permitAll()")            //oauth/token_key是公开
                .checkTokenAccess("isAuthenticated()");   //oauth/check_token公开
    }

}

 

如果对我的其它文章有更多的兴趣,可以访问我的个人博客:uniqueho.xyz

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

oauth2.0的配置信息AuthorizationServerConfigurerAdapter 的相关文章

随机推荐

  • vue父组件监听子组件生命周期

    还是记一下吧 总是忘 通过在子组件生命周期里公开一个事件 通过父组件监听 在子组件中 mounted this emit mounted mounted 触发了 父组件监听
  • 解决AD 敷铜连不上焊盘的问题

    一 如下选择 第二步 点击 添加 新建一个网络点 GND 网络名 GND 然后点击 确定 第三步 选择需要连线的焊盘 Net处选择 GND 第四步 选择敷铜按钮 网络选项中 链接到网络选择 GND 结果
  • C++多态的理解

    1 多态的概念及分类 多态是面向对象程序设计的一个重要特征 多态的字面意思就是多种状态 在面向对象的程序设计中 一个接口 多种实现即为多态 c 的多态性具体体现在编译和运行两个阶段 编译时多态是静态多态 在编译时就可以确定使用的接口 运行时
  • 查找一个数组中出现次数最多的元素。(c于c++)

    三键三连 输入输出 输入 n n lt 100 n个元素值 输出 数组中出现次数最多的元素 样例 输入样例 1 3 1 1 2 输出样例 1 1 include
  • 关于删除redis缓存

    验证环境的redis有三个节点 你必须三个节点的缓存数据都删掉 删掉之后记得要到系统工具里面刷新缓存 别单词地就是删了缓存就不管了 CROSSSLOT Keys in request don t hash to the same slot这
  • 可以赚钱的网络游戏?这六款也许有你想要的!

    随着人们生活水平的提高 娱乐方式也趋向多样化 而网络游戏已经成为当代人生活中不或缺的娱乐项目之一 所谓人生如戏 现实生活中 我们总是受各种因素的约束 没有办法得到释放 而网络游戏却开启了我们的第二人生 很多在现实中无法实现的梦想 我们都可以
  • 学习笔记--配置DHCP服务器(基于接口的地址池)

    一 开启DHCP功能 并且把相应端口加入VLAN 并且设置vlan网关1 开启dhcp功能 Huawei dhcp enable 2 创建vlan 10 20 Huawei vlan batch 10 20 3 把g0 0 1 跟g0 0
  • 分组转发算法

    1 首先从IP数据报首部提取出目的主机的IP地址D 得出其所在的网络N 2 若N就是与此路由器直接相连的某个网络 则进行直接交付 不需要经过其它的路由器 进行转发 直接把数据报交付给目的主机 否则就执行 3 3 若路由表中有目的地址为D的特
  • torch包下载和安装失败的解决

    今天打算使用python的 torch包的时候 输入pip install torch 在pycharm下载一直失败 报错信息里面提示一开始是pip版本出错 WARNING You are using pip version 20 0 2
  • ora-30926:无法在源表中获得一组稳定的行

    解决办法 原表的数据保证唯一 可以distinct
  • dll、so库转Java代码

    dll so库转Java代码 下载jar JNA代码生成 参数说明 生成的maven项目代码结构如下 众所周知 java程序如果要调用动态库 so dll 的函数 最传统方式是使用JNI技术 用JNI写java调用接口代码是非常痛苦的 调试
  • 538.把二叉搜素树转换为累加树

    538 把二叉搜索树转换为累加树 题干描述 解题思路 递归 1 递归函数参数以及返回值 2 确定终止条件 3 确定单层递归的逻辑 迭代 代码实现 递归法 迭代法 题干描述 力扣入口 给出二叉搜索树的根节点 该树的节点值各不相同 请你将其转换
  • 13智慧农业

    一张图读懂一个产业之智慧农业 一般认为 智慧农业指的是利用物联网 人工智能 大数据等现代信息技术与农业进行深度融合 实现农业生产全过程的信息感知 精准管理和智能控制的一种全新的农业生产方式 可实现农业可视化诊断 远程控制以及灾害预警等功能
  • 时序预测:使用MATLAB实现时间序列回归中的偏差估计

    时序预测 使用MATLAB实现时间序列回归中的偏差估计 时间序列数据分析是指对某个时间段内连续的数据进行建模和预测的过程 在时间序列分析中 通常需要进行时序预测 即预测未来的数据值 时间序列回归是一种在保持时间序列结构的同时 通过相关数据来
  • 性能测试项目实战:应用加载慢该怎么办?

    一 背景 app收到留学push 课堂 资讯 用户点击push消息 进入app 应用加载很慢 容易出现应用假死 app崩溃或提示网络异常等信息 给用户体验十分不友好 监控阿里云资源tcp连接数飙高 cpu打满 自愈能力 系统恢复能力 低 二
  • taro + linaria styled 报错 Property ‘__linaria‘ is missing

    更新 下面的解决方案不好 估计暂时不支持 我先用css 功能 报错信息 FileDescription Author 刘凯 Date 2021 04 26 08 53 19 LastEditors 刘凯 LastEditTime 2021
  • C++对于const重铸,在结构体中的const引用通过const_cast转换值

    include
  • 在VS中安装Qt插件(配置Qt环境)

    1 下载Qt的插件 Qt插件的网址 http download qt io archive 2 将Qt插件安装到vs上 下载完毕后会得到后缀名为 vsix 的工具 直接运行这个插件 前提是你电脑上已经安装了vs 安装过程等待 安装成功 3
  • 2019南科大计算机系夏令营笔试&面试

    2019南科大计算机系夏令营笔试 面试 笔试 笔试时间2个小时 卷面总分200分 其中操作系统50分 数据结构50分 离散数学50分 计算机网络50分 操作系统为中文题目 其余均为英文题目 操作系统考察进程相关知识占比很大 如进程执行时间
  • oauth2.0的配置信息AuthorizationServerConfigurerAdapter

    继承AuthorizationServerConfigurerAdapter方法的配置 Configuration EnableAuthorizationServer public class Oauth2ServerConfig exte