OAuth2(Keycloak):client_credentials授权类型附加声明

vyu0f0g1  于 2023-11-16  发布在  其他
关注(0)|答案(1)|浏览(131)

我有一个场景,其中有多个应用程序/服务需要访问我的资源:
这是三个外部服务:service 1,service 2,service 3。
现在我使用client_credentials授权类型,因为这是机器到机器的,不涉及用户。
我所做的是为Keycloak中的每个服务创建1个客户端。它工作正常,但是我需要在令牌中添加更多细节,特别是,每个客户端的人类可读名称,因为客户端ID使用recommended naming命名。
我知道如何将用户声明Map到令牌,但是否有可能在没有用户而只有客户端的情况下使用类似的东西?

xwbd5t1u

xwbd5t1u1#

是,转到应用的领域,然后:

  • 转到“客户端”;
  • 选择您的客户端;
  • 选择Map器;
  • 点击按钮[Create];
  • 选择Hardcoded Claim作为Mapper Type;
  • 填写索赔的细节

单击[Save]。“

使用更多详细信息更新答案

我知道如何将用户声明Map到令牌,但是对于没有用户而只有客户端的场景,是否可以有类似的东西?
是,您需要创建“硬编码声明Map器”。
为此:

  • 选择应用程序的realm
  • 转到clients
  • 为您的使用情形选择适当的client
    (对于旧的Keycloak用户界面)
  • 转到Mappers
  • 单击Create
  • Mapper type中选择Hardcoded claim
  • 相应地填写索赔的详细信息。
  • 点击Save
    (适用于新的Keycloak用户界面)
  • 转到Client Scopes选项卡
  • 单击客户端范围<the client ID of your client>-dedicated(* 例如,* 下图中的测试专用)

x1c 0d1x的数据

  • 单击Configure a new mapper(或者如果您之前已经为该客户端创建了Map器,则单击Add Mapper> By configuration


  • 选择Hardcoded claim
  • 相应地填写索赔的详细信息。
  • 点击Save

该客户端将是您用来进行身份验证的客户端。

相关问题