【问题标题】:Get user role after authorization授权后获取用户角色
【发布时间】:2020-11-12 14:26:09
【问题描述】:

为了安全,我想使用基于 OAuth2 的 Angular 9 实现 Spring Boot 项目。我不清楚的问题是在用户身份验证后获取用户角色的最佳方法是什么。我找到了两种方法:

  1. 在使用 OAuth2 对用户进行身份验证后正确添加到响应负载中:

    {
     "access_token": "wdwdw",
       "token_type": "bearer",
       "refresh_token": "wdwdwdwd",
       "expires_in": 4,
       "scope": "read",
       "role": [
         "ROLE_ADMIN"
       ],
       "jti": "wfwfe"
     }
    
  2. 第二种方法是使用第二个 API 调用 oauth/check_token 来获取角色:

$ curl localhost:8080/oauth/check_token/?token=fc9e4ad4-d6e8-4f57-b67e-c0285ddcdeb58

{
  "scope": [
    "read",
    "write"
  ],
  "active": true,
  "exp": 1544940147,
  "authorities": [
    "ROLE_USER"
  ],
  "client_id": "ger-client-id"
}

我对这两种方式中哪一种在安全性和最佳实践方面更好感兴趣。

【问题讨论】:

    标签: angular spring-security-oauth2 angular9


    【解决方案1】:

    如果您需要根据用户权限控制路由和模块加载,我将采用第一种方式,这样您就无需为查找权限而发起新请求。

    【讨论】:

    • 感谢您的回复。还有一种情况需要讨论。当我将用户配置文件角色更改为 DB 时,我希望在 Angular 端也应用此更改。看起来我需要获取用户角色以便能够动态更改它的每个请求。您是如何实施这样的案例的?
    • 在这种情况下,您可以通过将访问令牌添加到黑名单来强制用户重新登录来使访问令牌无效
    【解决方案2】:

    我更喜欢第一种方式,无论安全凭据将作为对象属性传递并且您可以使用它。

    【讨论】:

      猜你喜欢
      • 2011-09-29
      • 1970-01-01
      • 2019-10-13
      • 1970-01-01
      • 2015-11-17
      • 1970-01-01
      • 2019-07-26
      • 1970-01-01
      • 2018-02-09
      相关资源
      最近更新 更多