2017-08-10 164 views
0

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

回答

0

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

2

可以用一些代码来做到这一点,而不是使用OpenID连接插件;实际上,您需要实现授权服务器,该授权服务器通过管理员(8001)端口与Kong进行对话,并授权使用具有外部给定用户ID的API。

总之,这是不言而喻的(这里的授权码补助金)如下:相反

  • 直接问香港的令牌,打认证服务器并请求获得特定API令牌(根据需要选择硬编码或参数化),并且包含需要在呼叫中访问的应用程序的客户端ID(实际上您实现了/authorize端点)
  • 授权服务器现在需要使用任何IdP进行身份验证您需要,以便您的授权服务器中有经过验证的用户
  • 现在通过Kong Admin API获取API的供应代码,并点击Kong网关(端口8443)的/oauth2/authorize端点,包括配置密钥;请注意,您可能还需要通过管理API为应用客户端ID查找客户端密钥,以使其工作
  • 包括客户端ID,客户端密钥,已验证的用户ID(来自您的自定义IdP),并且可选范围为POST/oauth2/authorize;这些值将被添加到使用访问令牌的API的后端调用中,该应用程序现在可以使用授权代码声明
  • Kong将为您提供授权码,您将通过302重定向传递回应用程序(您将需要阅读OAuth2规范)
  • 该应用程序使用其客户端和秘密,以及授权码,从Kong的端口8443,URL /oauth2/token获取访问令牌(和刷新令牌)。

这听起来比最后更多地涉及到了。我为wicked.haufe.io做了这个工作,它基于Kong和node.js,并为Kong增加了一个开源开发者门户。有很多的代码中显示什么可以做任何的IdP集成以下两个项目:

目前我们正在调查,看我们是否也可以添加一个默认授权服务器给邪恶的,但现在你必须滚动/分叉你自己的。

也许这有帮助,马丁

+0

感谢您的答案。我一定会更深入地看待建议。 –

+0

如果我已经有一个微服务处理认证(用户+密码),授权(用户是否可以访问特定资源)和注册(将用户添加到绑定到此微服务的用户数据库)会怎么样?有没有办法将用户服务与kong整合?看起来这种用户交互级别更适合于特定应用。 – user1790300

+0

这听起来像是你可以或许应该用OAuth2来解决,这是退步,通常将授权抽象为范围。如何详细完成* your *服务很难从您在此处陈述的内容中分辨出来。理想情况下,您的API只需获取Kong提供的授权和身份验证,即可从事先收集的信息中获取。这往往是可能的,但并非总是如此。 – donmartin