Kong API Gateway中的自定义验证服务

时间:2017-08-10 17:06:32

标签: authentication kong api-gateway

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

2 个答案:

答案 0 :(得分:3)

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

简而言之,它如下(此处为授权代码授权):

  • 不是直接向Kong询问令牌,而是向Authorization Server发出请求以获取特定API的令牌(硬编码或参数化,具体取决于您的需要),并包含需要的应用程序的客户端ID在通话中访问(实际上实现了/authorize终点)
  • 授权服务器现在需要使用您需要的任何IdP进行身份验证,以便在授权服务器中拥有经过身份验证的用户
  • 现在通过Kong Admin API获取API的配置代码,然后点击Kong Gateway的/oauth2/authorize端点(端口8443),包括配置密钥;请注意,您可能还需要通过Admin API查找应用程序客户端ID的客户端密钥才能使其正常工作
  • POST/oauth2/authorize中包含客户端ID,客户端密码,经过身份验证的用户ID(来自您的自定义IDP)和最佳范围;这些值将使用应用程序现在可以使用授权码声明的访问令牌添加到API的后端调用中
  • Kong会给你一个授权码,你通过302重定向传回给应用程序(你需要阅读OAuth2规范)
  • 应用程序使用其客户端和机密以及授权代码从Kong的端口8443,URL /oauth2/token获取访问令牌(和刷新令牌)。

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

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

也许这有帮助,马丁

答案 1 :(得分:0)

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