【问题标题】:OpenId Connect Permission/Authorization in Claims Flow声明流程中的 OpenId Connect 权限/授权
【发布时间】:2023-03-05 04:56:01
【问题描述】:

我们正在为我们的少数 SPA 和 WebAPI(我们拥有所有)使用隐式流程来实现带有 MS.Identity 的 IdentityServer4,用于 SSO、身份验证和授权。

对于隐式流,Id_Token 是我们放置额外“声明”的地方。 Spec here.

access_token 不包含根据this. 的自定义权限声明

Implicit Flow Spec is here.

问题:授予和删除权限的流程是什么?

  • 客户端如何在不轮询用户信息端点的情况下知道权限/声明已更改?
  • 资源服务器是怎么知道的?

Id_token 的撤销不是规范。根据我对 OpenID Conenct 的理解,知道权限的令牌中声明的效用似乎不再适用。

我是否缺少明显的内置规范解决方案,或者当权限发生更改时我们是否会实施某种重新颁发 Id_Token 的方法?

谢谢..

【问题讨论】:

    标签: oauth openid jwt openid-connect identityserver4


    【解决方案1】:

    令牌不包含权限。它们包含有关客户和用户的身份数据。

    https://leastprivilege.com/2016/12/16/identity-vs-permissions/

    【讨论】:

    • 感谢您的回复。几周前,当我们决定实施刷新令牌时,我阅读了这篇文章并与我的同事分享了它,最终导致我们整个身份验证/授权的重写。最终,文章以“敬请期待”结束。是否存在任何地方或与 OpenId Connect 相关的现有解决方案或模式?
    • 为了解决有效负载大小,我们将 Enums 编码为 Shorts 到 2 字节 ea,然后 Base64URL 对其进行编码。
    【解决方案2】:

    根据多米尼克的回答。

    我将实现一个权限/授权服务器和端点。

    SPA 和 WebAPI 客户端可以通过身份验证调用它以获得权限。现在我们可以返回我们需要的任何自定义权限对象。

    在 access_token 中,我们将添加一个自定义的“权限 ETAG”,这样如果用户的权限发生变化,每个客户端都知道要获取新权限。

    欢迎提出建设性的批评。

    【讨论】:

      猜你喜欢
      • 2020-11-19
      • 2018-05-20
      • 2018-09-22
      • 2015-12-11
      • 1970-01-01
      • 2018-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多