12.6. Direct Naked Impersonation


您可以在不提供 subject_token 的情况下发出内部令牌交换请求。这称为直接的模拟,因为它在客户端中放置了大量信任,因为客户端可以模拟域中的任何用户。对于无法获取主题令牌来交换的应用程序,您可能需要进行桥接。例如,您可以集成一个通过 LDAP 直接登录的传统应用程序。在这种情况下,传统应用程序能够对用户本身进行身份验证,但不能获取令牌。

警告

为客户端启用直接模拟非常风险。如果客户端的凭据被盗了,则该客户端可以模拟系统中的任何用户。

12.6.1. 为交换授予权限

如果提供了 audience 参数,则调用客户端必须具有与客户端交换的权限。本章前文中会讨论如何设置此设置。

另外,必须授予调用客户端的权限来模拟用户。

流程

  1. 点菜单中的 Users
  2. 单击权限选项卡。

    图 12.11. 用户权限

  3. 将" 启用" 的权限切换为 On

    图 12.12. 身份提供程序权限

    该页面显示一个 模拟 链接。

  4. 单击该链接,以开始定义权限。

    这时将显示此设置页面。

    图 12.13. 用户获取权限设置

  5. 在屏幕顶部的面包屑导航栏中点 Client details
  6. 为这个权限定义策略。
  7. 进入 Policies 选项卡,再创建一个客户端策略。

    图 12.14. 客户端策略创建

  8. 输入作为请求令牌交换的经过身份验证的用户的起始客户端。
  9. 返回到用户的 模拟 权限,并添加您刚才定义的客户端策略。

    图 12.15. 应用客户端策略

您的客户端现在有模拟用户的权限。如果不正确,如果您尝试进行此类交换,您将会收到 403 Forbidden 响应。

注意

不允许公共客户端进行直接模拟。

12.6.2. 发出请求

要发出请求,只需指定 requested_subject 参数。这必须是有效用户的用户名或用户 ID。如果想要,您还可以指定 audience 参数。

curl -X POST \
    -d "client_id=starting-client" \
    -d "client_secret=the client secret" \
    --data-urlencode "grant_type=urn:ietf:params:oauth:grant-type:token-exchange" \
    -d "requested_subject=wburke" \
    http://localhost:8080/realms/myrealm/protocol/openid-connect/token
Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat