Keycloak Key斗篷-基于资源的角色&;范围基身份验证

Keycloak Key斗篷-基于资源的角色&;范围基身份验证,keycloak,Keycloak,我有一个场景,我想限制keydepeat中的用户 我有一个用户 用户可以访问多个帐户 在多个帐户中,可以使用管理员或代理(读卡器) 我们如何在keybeave中将其映射为策略、权限和角色 任何参考文件或示例都非常有用 也基于: 根据Andy的回答,我创建了一个资源帐户和角色admin&agent 创建了与示例中相同的策略 我期待着向JWT令牌添加作用域(auth scope)和角色,以了解如何映射该部分,以便API网关或服务能够进一步验证 @changa,我已经根据我们的讨论改写了我的答案。希望

我有一个场景,我想限制keydepeat中的用户

我有一个用户

用户可以访问多个帐户 在多个帐户中,可以使用管理员或代理(读卡器)

我们如何在keybeave中将其映射为策略、权限和角色

任何参考文件或示例都非常有用

也基于:

根据Andy的回答,我创建了一个资源帐户和角色admin&agent

创建了与示例中相同的策略

我期待着向JWT令牌添加作用域(auth scope)和角色,以了解如何映射该部分,以便API网关或服务能够进一步验证

@changa,我已经根据我们的讨论改写了我的答案。希望这有帮助

在回答之前,让我先澄清一些关键领域。我主要关注的是您所链接的工具,实际上是如何使用
评估
工具,我并没有深入探讨其中的一些概念,所以让我们这样做:)

在KeyClope中,您将遇到客户机和授权范围。有关这些术语的正式定义,请查看《服务器管理指南》中的,但简单地说:

客户机作用域是通过
作用域
参数请求客户机时授予客户机的作用域(一旦资源所有者允许)。注意,还有
默认客户机范围的概念,但我选择保持简单。此外,您可以利用协议和角色范围映射器来定制访问令牌中存在的声明和断言

另一方面,在针对受保护资源成功评估策略后,授权范围将授予客户端。基于用户同意,这些作用域不会授予客户端

两者之间的关键区别实际上是客户机何时以及如何获得这些作用域。为了帮助您将所有这些可视化,下面是一个场景:

  • 一位名为Bob的著名武术家通过钥匙斗篷进行身份验证

  • Bob
    会出现一个同意屏幕,要求他分享自己的姓名、战斗风格和年龄

  • Bob
    选择透露自己的姓名和战斗风格,但他拒绝透露自己的年龄

  • 当我们现在检查令牌时,我们将看到访问令牌的
    scope
    属性的以下(完全组成的)条目:
    name
    bulling\u style

  • 此外,假设我们已经设置了两个协议映射器(例如,用户属性映射器类型-有一吨)要通过以下令牌声明显示全名和格斗风格的值:
    fighter\u name
    武术
    ,当访问令牌中存在上述两个
    客户端范围时。除了前面提到的两个范围外,在检查访问令牌时,我们还会看到类似于
    战斗机名称:罗伯特·理查兹
    武术:自由式空手道

    • 旁注:鉴于此答案的长度,我决定跳过此主题,但请在7分钟左右查看此主题,以及相关的链接以了解更多信息。自述很好
  • 此外,我们假设
    Bob
    被映射到名为
    competitor
    的领域角色和
    Fighter
    的客户端角色,并且在共享此信息时,我们在keybeave中设置了任何限制。因此,除了上面提到的所有内容之外,我们还可以在令牌中看到这些信息

    • 不用说,这对我来说过于简单了,因为我只是在搭建演示的舞台。目的和访问令牌中的更多信息
  • Bob
    不喜欢锦标赛括号的布局,因为他渴望尽快击败世界冠军,因此他试图通过发送一个针对
    锦标赛/tekken6/bracket/{id}
    的请求来改变自己的位置。此资源与作用域
    括号:modify
    关联。此外,还有一个权限将相关资源与名为
    所需仲裁角色的基于角色的策略相关联。如果
    Bob
    裁判员
    ,那么他将被授予
    范围:修改
    但由于他不是,那么他将被拒绝该范围

    • 当涉及到keydepeat中授权过程的内部工作时,我几乎没有触及表面。有关更多信息,请查看此。你可以用乌玛做一些很酷的事情
  • 好了,这就足够了。让我们设置环境来演示所有这些。我正在使用以下命令:

    • 一个名为
      demo
    • 名为“我的演示客户端”的客户端
    • 名为
      client\u roles
    • 2个用户-
      paul
      law
    • 两个领域级别的角色——
      Admin
      Reader
    • 两个客户端级别的角色-
      demo admin
      demo reader
    请注意,我将使用KeyClope 12.0.4,我将跳过几乎所有的基本设置说明。我将只分享相关的部分。如果您不确定如何设置这一切,请查看或此。答案包含版本8的步骤,但据我所知,差异非常小

    关联用户和角色 要将
    paul
    管理员
    读卡器
    银行管理员
    银行读卡器
    角色关联,请执行以下操作:

    • 点击
      Users
      查看所有用户
      >点击
      ID
      值查看
      paul
      >点击
      角色映射user
      |
      |
      |-------account-1
      |            |
      |            |-------admin
      |-------account-2
      |            |
      |            |-------agent