OAuth2认证后获取角色类型

Posted

技术标签:

【中文标题】OAuth2认证后获取角色类型【英文标题】:Get role type after OAuth2 authentication 【发布时间】:2020-10-30 16:14:54 【问题描述】:

我使用 Spring 安全遗留堆栈实现了 OAuth2 身份验证。成功验证后,我收到此有效负载:


    "access_token": "ed090e76-444b-4dd2-8c2a-15d3e52be31d",
    "token_type": "bearer",
    "refresh_token": "4ad590f1-2139-47b8-89f1-29ed4b461b53",
    "expires_in": 30,
    "scope": "read"

我在应用程序中有几种类型的角色。通常在服务器端渲染 Web 应用程序中,我只会根据用户角色显示 UI 组件,并且我会限制未经授权的内容。

在 Angular 中,还有一种基于用户角色显示数据的方法。但问题是Angular如何从BE Spring Server获取用户角色的类型?

身份验证成功后,我需要从 BE 获取用户角色。当有 SPA FE 时,这通常是如何实现的?

【问题讨论】:

因此,每次您向 BE 发出请求时,您都希望收到响应以及该呼叫的角色吗?还是一次接收角色,然后在后续请求中使用它 每次想拿到角色 当您在 BE SecurityContextHolder.getContext().getAuthentication().getAuthorities() 中写入时,BE 中的角色也可用? 【参考方案1】:

默认情况下,Oauth2 Spring 集成使用自己的“令牌类型”(您可以在提供的“示例响应”中看到它们),如果您想使用 JWT(更易于内部管理),您必须指定如何处理他们开发JwtAccessTokenConverter的适当行为。

在下面的link 中,您将能够看到一个完整集成的教程:JWT + Oauth2

另一方面,在下一个中,您将找到一个功能齐全的微服务,用作与 Spring 集成的 Oauth 2.0 安全服务器,其中包括其他几个自定义项:

Oauth 2 security server

JwtAccessTokenConverter实现here为例

【讨论】:

以上是关于OAuth2认证后获取角色类型的主要内容,如果未能解决你的问题,请参考以下文章

oauth2认证后返回#怎么获取accesstoken?

oauth2认证后返回#怎么获取accesstoken?

Spring Security oauth2Login OAuth2UserService 认证后未执行

OAuth2之介绍及授权方式

认证功能实现(spring-oauth2)

OAuth2 认证流程