代码地址与接口看总目录:【学习笔记】记录冷冷-pig项目的学习过程,大概包括Authorization Server、springcloud、Mybatis Plus~~~_清晨敲代码的博客-CSDN博客
目录
C3.用此客户端信息和用户信息登录后返回的token信息是:
C4.OAuth2ClientAuthenticationFilter过滤器认证的客户端信息
C5.OAuth2TokenEndpointFilter过滤器认证的用户信息
C6.OAuth2TokenEndpointFilter过滤器认证的授权token信息
C7.OAuth2TokenIntrospectionEndpointFilter过滤器认证的自省认证的信息
C8.BearerTokenAuthenticationFilter过滤器认证的token认证的信息
C1.开启 @EnableGlobalMethodSecurity,并添加 @PreAuthorize注解
C2.PigCustomOpaqueTokenIntrospector
前两篇文章的学习中,有涉及到用户权限这一块儿,但是我没仔细记住,本来想开发动态鉴权呢,但是觉得对用户权限这一块儿还不是很熟悉,所以在根据授权服务端流程再巩固一下!!!然后实现动态鉴鉴权。
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

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

被折叠的 条评论
为什么被折叠?



