我正在尝试配置我们自己的基于Keycloak (开源身份和访问管理解决方案)的授权服务器。目前,我对“Account linking”有一个问题。我想集成Keycloak与外部身份提供商(自定义,而不是社交),但不想提供通过这些身份提供商登录的选项。因此,现有用户帐户可以链接到不同的外部IDPs。因此,一个帐户(在我们这边,由Keycloak管理)可以与许多不同的外部身份提供商链接。
我们提供了一个REST API (基于.Net核心),它在服务器端而不是客户端生成代理URI。因此,客户端只需调用REST API,它将返回格式正确的URI。在客户端,我做类似这样的window.location.replace(accountLinkUri)。这将调用Keycloak代理,它应该将我们重定向到身份提供者。在我们这边,我认为,我们满足了所有必需的前提条件:-必须在管理控制台中为用户的领域配置和启用所需的身份提供者。-用户帐户必须已通过OIDC协议以现有用户身份登录。-用户必须具有帐户.管理-帐户或帐户.管理-帐户-链接角色映射。-必须为应用程序授予其访问令牌中这些角色的作用域。-应用程序必须能够访问其访问令牌,因为它需要其中的信息来生成重定向URL。
但是,我们没有被重定向到身份提供者的登录页面,而是得到了这样的错误:我试图仅在客户端构造最终的URI,而没有后端参与,但得到了相同的错误。
Snapshots from web-based (javascript) client
我使用的是Keycloak版本8.0.1。我认为我面临的问题主要与配置或用户会话管理有关。Keycloak非常讲究如何创建“散列”。
如果有任何有用的信息或帮助,我将不胜感激。
提前谢谢你!
发布于 2019-12-23 19:05:02
我成功地解决了这个问题。明显的一步被遗漏了。一旦我切换到SSL,这就解决了我的问题。
https://stackoverflow.com/questions/59396997
复制相似问题