wicked.io 能否与 keycloak 集成,以 keycloak 提供客户端 ID 和机密,当然还有身份验证的方式?

Can wicked.io integrate with keycloak, in a way that keycloak will provide client ids and secrets, and of course, authentication?

我正在寻找一个 API 管理系统,它将与 Keycloak 集成(Keycloak 应该提供所有的身份验证)。 Wicked.io (kong based) 看起来不错。

我试过添加 oAuth2 作为身份验证方法,但 wicked 一直在生成自己的客户端 ID 和机密。

有什么办法可以用 wicked 做到这一点吗?

wicked.haufe.io 这里是维护者。

将 wicked/Kong 与 KeyCloak 结合使用可能不是一个好主意。 Wicked 解决了很多 KeyCloak 也打算解决的问题,并且重叠非常大,例如对 OAuth2 工作流程进行身份联合(SAML、OAuth2)等等。

KeyCloak 和 wicked/Kong 遵循不同的原则; KeyCloak 发行令牌,这些令牌通过您服务中的 KeyCloak 库进行验证。这或多或少地取代了 API 网关 - 它基于 KeyCloak 库在您的服务中实现。

wicked/Kong 作为对比的不同之处在于,最大的区别是 API Portal wicked 在 Kong 之上提供,并且你有一个专用的 API 网关(Kong ). Wicked 为您提供自己的客户端凭据,它还想完成整个身份验证和授权工作。作为交换,您得到的是自助服务 API 门户;如果你不需要那个,你可能不需要 wicked。

可以做的是通过让 KeyCloak 充当 SAML 或 OAuth2 身份提供者,将 KeyCloak OAuth2 流联合到 wicked。然后,您将使用 wicked(使用单一服务提供商 (SAML) 或客户端 (OAuth2))将您的 KeyCloak 授权服务器注册为身份提供商。这里的 "but" 是你仍然需要为你的服务提供一个入口点,它 不是 通过 KeyCloak 库。

wicked/Kong 总是这样工作:它消除了在您的服务中实现 Authentication/Authorization 的需要;相反,您需要检查 headers X-Authenticated-UserIdX-Authenticated-Scope。对于 wicked,这通常会包含类似 sub=<some id> 的内容,这也取决于您配置 wicked 使用的身份提供者的类型。但这种方法通常取代 KeyCloak。好处是你可以有一个单一的服务入口点(=Kong),并且你有一种非常轻量级的方式来保护任意服务——不仅仅是用 KeyCloak 支持的语言编写的服务! - 在 API 网关后面,同时通过 API 门户提供自助服务访问(具有可配置的计划、文档等)。

这一切显然有些复杂; wicked 在使用上非常灵活,但它并不是真的要与 KeyCloak 结合使用(同样如此。这一切都归结为真正理解用例并找到以最佳方式解决您的用例的解决方案架构。

如果您的用例涉及 API 门户和 API 文档(应该如此),那么 wicked/Kong 可能是个不错的选择。如果没有,您可能更愿意坚持使用 KeyCloak(您可以将其视为具有您想要的去中心化网关的无头 API 管理系统)。

免责声明:我对KeyCloak的了解有些过时;可能有更新也进入 API 门户方向,但我不知道这一点。