我正在尝试基于Keycloak(开放源代码身份和访问管理解决方案)配置我们自己的授权服务器。目前,我对“ Account linking”有疑问。我想将Keycloak与外部身份提供程序(自定义,而非社交)集成在一起,但不希望提供通过这些身份提供程序登录的选项。结果,现有的用户帐户可以链接到不同的外部IDP。因此,一个帐户(在我们这边,由Keycloak管理)可以与许多不同的外部身份提供者链接。
我们提供了REST API(基于.Net Core),该API在服务器端而不是客户端上生成代理URI。因此,客户端只需要调用REST API,它就会返回格式正确的URI。在客户端,我执行以下操作:window.location.replace(accountLinkUri)。这将调用Keycloak代理,该代理应将我们重定向到身份提供者。 我认为,就我们而言,我们满足了所有必需的先决条件: -必须在管理控制台中为用户领域配置并启用所需的身份提供者。 -该用户帐户必须已经通过OIDC协议以现有用户身份登录。 -用户必须具有一个account.manage-account或account.manage-account-links角色映射。 -必须授予应用程序其访问令牌内这些角色的作用域。 -应用程序必须有权访问其访问令牌,因为它需要其中的信息才能生成重定向URL。
但是,我们没有得到以下错误,而是被重定向到身份提供者的登录页面: 我试图仅在客户端上构造最终URI,而没有后端参与,但是出现了相同的错误。
Snapshots from web-based (javascript) client
我正在使用Keycloak版本8.0.1。我认为我面临的问题主要与配置或用户会话管理有关。 Keycloak对于创建“哈希”的方式非常讲究。
对于任何有用的信息或帮助,我将不胜感激。
提前谢谢!
答案 0 :(得分:0)
我成功解决了该问题。明显的步骤已经错过了。我一改用SSL,就解决了我的问题。