当前位置: 首页 > 知识库问答 >
问题:

带有OpenIdConnect外部标识提供程序的Keycloak

葛阳
2023-03-14

我有一个注册了< code>Keycloak的外部< code>openidconnect身份提供者。当客户端应用程序试图访问受保护的资源时,它会被重定向到< code>KeyCloak登录页面。在登录页面上,我启用了外部< code>openidconnect提供程序按钮。一旦用户单击该按钮,他将被带到外部身份提供者(即identityserver3实例)。外部提供商对用户进行身份验证并发回一个代码。

现在,外部身份提供程序中注册客户端的重定向是密钥斗篷的重定向。因此,在外部IDP上身份验证成功后,它会将代码(因为它是Auth代码流)发送回重定向url处的key Cloak:

http://localhost:5555/auth/realms/QA/broker/keycloak-client/endpoint?code=7bcf5157105199d50874e64eabf03858

在 URL 中,如果看到它以终结点结尾。我认为这是不正确的,但我无法在 KeyCloak 中更改它(它已禁用),因此在外部 IDP 客户端配置中也是如此。

KeyCloak不理解上述url,并错误显示消息“使用身份提供程序进行身份验证时出现意外错误”

KeyCloak不是应该理解代码流并在收到代码后再次请求令牌吗。然后,外部IDP将用令牌进行响应,<code>Keyclop</code>将把该令牌发送回客户端(也将存储该令牌以备将来使用)。

有人可以分享一些关于<code>Keyclock</code>如何与外部openidconnect ID提供程序一起使用的知识吗。

共有2个答案

贾成天
2023-03-14

您收到此错误,因为keyclaok无法通过交换授权代码从identityserver3获取令牌。您在哪里托管了identityserver3?它是否有真正的ca证书或您正在使用自签名证书?您是否在keyclock外部IDP配置中正确配置了client_idsecret令牌endpoint?您可以手动测试我在identityserver3的令牌endpoint中发布的client_idsecretcode(您收到的)。

冯德佑
2023-03-14

通常,外部身份提供者的重定向URI采用{key聘用主机}/auth/Realms/{领域}/经纪人/{提供者}/endpoint的形式。当您在外部身份提供者中注册客户端时,您必须将其指定为重定向URI。一旦用户通过外部IdP进行身份验证,授权码将被发送到此url,该url将反过来将其重定向到您的客户端应用程序的重定向url(在KeyCloak中注册客户端时指定)。

使用身份提供程序进行身份验证时出现意外错误是Keyclock针对OAuth流中发生的几个错误发送的常规错误消息。如果不查看堆栈跟踪或提示符中的日志,就无法确定实际原因。

 类似资料:
  • 我想为我的web应用程序实现单点登录功能。 我们的团队使用Spring框架,它似乎支持CAS作为其SSO身份验证技术。 CAS似乎对管理本地用户非常有用,但是(如果我错了,请纠正我)它通过SAML对联邦用户的支持似乎是缺乏的。 我想知道是否有人有将CAS与外部SAML身份提供商(如Salesforce)集成的经验。i、 例如,外部公司将对其用户进行身份验证,并让我们知道哪些用户应该有访问权限,而不

  • 我正在使用omniauth saml对Ruby on Rails应用程序上的用户进行身份验证。 身份验证一直运行良好,直到我们声明尝试与使用ADFS(Windows Active Directory)的公司合作。 我们的应用程序能够路由到ADFS登录屏幕,进行登录操作,当ADFS重定向回我们的应用程序时,我们会看到错误消息: 通过调试,我们可以看到omniauth saml生成了此消息。 通过挖掘

  • 我正试图在应用程序处于退出状态时从firebase保存一个通知到redux。 但是我需要在app.js中这样做,当我甚至不在组件上时,我如何分派redux操作呢? 这就是我要做的

  • 我正在尝试发送电子邮件完成的EMR工作。我在sbt依赖项中使用了libraryDependencies+=“com.sun.mail”%“javax.mail”%“1.6.2”。 }`

  • 但是,我在Github文档的任何地方都找不到关于要填充的endpoint和数据的适当概述。 以下字段为必填字段: 发行人->? 我到处都找不到Jwks uri。如有任何帮助,我们将不胜感激。