7.6. direct Naked Impersonation
您可以在不提供 subject_token
的情况下发出内部令牌交换请求。这称为直接人类模拟,因为它将大量信任放在客户端中,因为该客户端可以模拟域中任何用户。对于无法获取主体才能交换的应用,您可能需要进行这个桥接。例如,您可能要集成一个直接与 LDAP 登录的遗留应用程序。在这种情况下,传统应用程序可以验证用户本身,但不能获取令牌。
为客户端启用直接 naked impersonation 存在风险。如果客户端的凭据已被停止,则客户端可以模拟系统中的任何用户。
7.6.1. 授予对交换的权限
如果提供 audience
参数,则调用客户端必须具有与客户端交换的权限。本章前文中介绍了如何设置此设置。
另外,调用客户端必须被授予模拟用户的权限。在管理控制台中.
流程
- 点菜单中的 Users。
单击权限选项卡。
用户权限
将 权限已启用 为 true。
身份供应商权限
该页面显示 模仿 链接。
点击该链接以开始定义权限。
这个设置页面会显示。
用户识别权限设置
- 点 Authorization 链接
前往 Policies 选项卡,再创建客户端策略。
客户端策略创建
- 输入作为请求令牌交换的经过身份验证的用户的起始客户端。
返回到用户的 模拟 权限,再添加您刚刚定义的客户端策略。
应用客户端策略
现在,您的客户端具有模拟用户的权限。如果您没有正确执行此操作,如果您尝试进行这类交换,您将得到一个 403 Forbidden 响应。
不允许公共客户端直接生成模拟。
7.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/auth/realms/myrealm/protocol/openid-connect/token