首页 文章

Kong API网关中的自定义验证服务

提问于
浏览
0

我们目前正在为我们的微服务分析API网关,Kong是可能的候选者之一 . 我们发现Kong支持几个用于身份验证的插件,但所有插件都基于存储在Kong数据库本身的用户 . 我们需要将此职责委托给我们的自定义身份验证HTTP服务,并且不希望在API网关数据库中添加这些用户 .

2 回答

  • 2

    可以使用一些代码执行此操作,而不是使用OpenID连接插件;实际上,您需要实现一个授权服务器,该服务器通过Admin(8001)端口与Kong通信,并授权使用外部给定用户ID的API .

    简而言之,它如下(这里是授权代码授权):

    • 而不是直接向Kong询问令牌,而是通过请求获取特定API的令牌(硬编码或参数化,具体取决于您的需要)来命令授权服务器,并包括需要访问的应用程序的客户端ID调用(实际上你实现了 /authorize 终点)

    • 授权服务器现在需要使用您需要的任何IdP进行身份验证,以便在授权服务器中拥有经过身份验证的用户

    • 现在通过Kong Admin API获取API的配置代码,然后点击Kong Gateway(端口8443)的 /oauth2/authorize endpoints ,包括配置密钥;请注意,您可能还需要通过Admin API查找应用程序客户端ID的客户端密钥才能使其正常工作

    • 包括客户端ID,客户端密码,经过身份验证的用户ID(来自您的自定义IdP)以及 POST/oauth2/authorize 中的optinally范围;这些值将使用应用程序现在可以使用授权代码声明的访问令牌添加到API的后端调用中

    • Kong会给你一个授权码,你通过302重定向传回给应用程序(你需要阅读OAuth2规范)

    • 应用程序使用其客户端和机密以及授权代码从Kong的端口8443,URL /oauth2/token 获取访问令牌(和刷新令牌) .

    这听起来比最终更复杂 . 我为wicked.haufe.io做了这个,它基于Kong和node.js,并为Kong添加了一个开源开发者门户网站 . 以下两个项目中有很多代码显示了可以与任何IdP集成的方法:

    我们目前正在调查我们是否也可以向恶人添加默认授权服务器,但是现在你必须自己滚动/分叉 .

    马丁,也许这会有所帮助

  • 0

    查看Kong的OpenID Connect插件getkong.org/plugins/openid-connect-rp - 它连接到外部身份和身份验证系统 .

相关问题