12.2.3. 外部令牌交换的内部令牌
您可以为外部身份提供程序以 mint 的外部令牌交换域令牌。此外部身份提供程序必须在管理控制台的 Identity Provider 部分中配置。目前只支持基于 OAuth/OpenID Connect 的外部身份提供程序,包括所有社交提供程序。红帽构建的 Keycloak 不对外部供应商执行后端通道交换。因此,如果帐户没有链接,您将无法获取外部令牌。要能够获取外部令牌,必须满足这些条件之一:
- 用户必须至少使用外部身份提供程序登录
- 用户必须通过用户帐户服务与外部身份提供程序相关联
- 用户帐户通过外部身份提供程序使用 Client Initiated Account Linking API 链接。
最后,外部身份提供程序必须配置为存储令牌,或者上述一个操作必须使用与您交换的内部令牌相同的用户会话执行。
如果帐户未链接,交换响应将包含您可以用来建立它的链接。在 Making the Request 部分中将对此进行详细讨论。
12.2.3.1. 为交换授予权限 复制链接链接已复制到粘贴板!
外部令牌交换请求的内部将拒绝 403, Forbidden 响应,直到您向调用客户端授予了与外部身份提供程序交换令牌的权限。要向客户端授予权限,请转至身份提供程序的配置页面,进入 Permissions 选项卡。
图 12.8. 身份提供程序权限
流程
将" 启用" 的权限切换为 On。
图 12.9. 身份提供程序权限
页面中显示 token-exchange 链接。
单击链接以开始定义权限。
此时会出现此设置页面。
图 12.10. 身份提供程序交换权限设置
- 在屏幕顶部的面包屑导航栏中点 Client details。
点 Policies 选项卡创建客户端策略。
图 12.11. 客户端策略创建
- 输入作为请求令牌交换的经过身份验证的用户的起始客户端。
返回到身份提供程序的 token-exchange 权限,并添加您刚才定义的客户端策略。
图 12.12. 应用客户端策略
您的客户端现在有调用的权限。如果不正确这样做,如果您尝试进行交换,您将会收到 403 Forbidden 响应。