【发布时间】:2018-01-19 01:20:06
【问题描述】:
我们目前正在为我们的微服务分析 API 网关,而 Kong 是可能的候选者之一。我们发现 Kong 支持多个身份验证插件,但所有插件都基于存储在 Kong 数据库本身中的用户。我们需要将此责任委托给我们的自定义身份验证 HTTP 服务,并且不想将这些用户添加到 API 网关数据库中。
【问题讨论】:
标签: authentication kong api-gateway
我们目前正在为我们的微服务分析 API 网关,而 Kong 是可能的候选者之一。我们发现 Kong 支持多个身份验证插件,但所有插件都基于存储在 Kong 数据库本身中的用户。我们需要将此责任委托给我们的自定义身份验证 HTTP 服务,并且不想将这些用户添加到 API 网关数据库中。
【问题讨论】:
标签: authentication kong api-gateway
可以通过一些代码来完成此操作,而不是使用 OpenID 连接插件;实际上,您需要实现一个授权服务器,它通过 Admin (8001) 端口与 Kong 通信,并授权使用具有外部给定用户 ID 的 API。
简而言之,如下(此处为授权码授予):
/authorize 端点)/oauth2/authorize 端点,包括配置密钥;请注意,您可能还需要通过 Admin API 查找应用程序客户端 ID 的客户端密码才能完成这项工作POST 到/oauth2/authorize 中包含客户端ID、客户端密码、经过身份验证的用户ID(来自您的自定义IdP)和可选范围;这些值将使用应用程序现在可以使用授权代码声明的访问令牌添加到对 API 的后端调用中/oauth2/token 获取访问令牌(和刷新令牌)。这听起来比最后更复杂。我为 wicked.haufe.io 做了这个,它基于 Kong 和 node.js,并为 Kong 添加了一个开源开发者门户。以下两个项目中有很多代码展示了与任何 IdP 集成可以做的事情:
我们目前正在调查是否还可以为 wicked 添加默认授权服务器,但现在您必须自己滚动/分叉。
也许这有帮助,马丁
【讨论】:
查看 Kong 的 OpenID Connect 插件 getkong.org/plugins/openid-connect-rp - 它连接到外部身份和身份验证系统。
【讨论】: