No3.深入学习用户权限和客户端权限的保存与使用,并实现授权服务端动态鉴权(属于security鉴权范围,不是oauth2的授权范围)

本文详细介绍了OAuth2中用户权限和客户端权限的保存与使用逻辑,包括如何通过自定义组件调整权限分配,以及如何实现基于注解的接口访问权限。

代码地址与接口看总目录:【学习笔记】记录冷冷-pig项目的学习过程,大概包括Authorization Server、springcloud、Mybatis Plus~~~_清晨敲代码的博客-CSDN博客

目录

A1.整理用户权限和客户端权限的保存与使用逻辑

B1.程序中的权限与最终返回的权限

C1.程序中持久化的用户信息是:

C2.程序中持久化的客户端信息是:

C3.用此客户端信息和用户信息登录后返回的token信息是:

C4.OAuth2ClientAuthenticationFilter过滤器认证的客户端信息

C5.OAuth2TokenEndpointFilter过滤器认证的用户信息

C6.OAuth2TokenEndpointFilter过滤器认证的授权token信息

C7.OAuth2TokenIntrospectionEndpointFilter过滤器认证的自省认证的信息

C8.BearerTokenAuthenticationFilter过滤器认证的token认证的信息

A2.资源鉴权的三种方式

B1.基于注解的接口访问权限(资源服务端)

C1.开启 @EnableGlobalMethodSecurity,并添加 @PreAuthorize注解

C2.PigCustomOpaqueTokenIntrospector

C3.PermissionService

B2.基于过滤器的动态访问权限(后期补充~)


前两篇文章的学习中,有涉及到用户权限这一块儿,但是我没仔细记住,本来想开发动态鉴权呢,但是觉得对用户权限这一块儿还不是很熟悉,所以在根据授权服务端流程再巩固一下!!!然后实现动态鉴鉴权。

A1.整理用户权限和客户端权限的保存与使用逻辑

我打算先从头尾两处看起,首先先确认用户都有哪些权限,客户端都有哪些权限,然后看登陆成功的token信息中都返回了哪些权限,看先两处对比的格式。

然后在其代码里面查找处理逻辑,首先客户端认证时会处理客户端权限,用户认证时会处理用户权限,再去这两个地方查看逻辑。

最终,再把这些串起来。

B1.程序中的权限与最终返回的权限

C1.程序中持久化的用户信息是:

    @Bean
    UserDetailsService userDetailsService(){
​
        UserDetails userDetails = User.builder()
                .username("qc")
                .password("123")
                .passwordEncoder(PasswordEncoderFactories.createDelegatingPasswordEncoder()::encode)
                .roles("read","write")
                .build();
        //new一个用户管理业务,注入一盒用户信息
        return new InMemoryUserDetailsManager(userDetails);
    }

C2.程序中持久化的客户端信息是:

    private RegisteredClient createRegisteredClient(final String id) {
        return RegisteredClient.withId(UUID.randomUUID().toString())
//               客户端ID和密码
                .clientId("qingchen")
//               此处为了避免频繁启动重复写入仓库
                .id(id)
//                client_secret_basic    客户端需要存明文   服务器存密文
                .clientSecret(PasswordEncoderFactories.createDelegatingPasswordEncoder().encode("secret"))
//                名称 可不定义
                .clientName("qingchen")
//                其它Scope
                .scope("server")
                .build();
    }

C3.用此客户端信息和用户信息登录后返回的token信息是:

{
    "sub": "qc",
    "clientId": "qingchen",
    "iss": "http
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值