香港API网关自定义身份验证服务
问题描述:
我们目前正在分析我们微服务的API网关,Kong是可能的候选人之一。我们发现Kong支持一些用于身份验证的插件,但全部都基于存储在Kong数据库本身中的用户。我们需要将此责任委派给我们的自定义auth HTTP服务,并且不希望将这些用户添加到API网关数据库中。香港API网关自定义身份验证服务
答
查看Kong的OpenID Connect插件getkong.org/plugins/openid-connect-rp - 它连接到外部身份验证和身份验证系统。
答
可以用一些代码来做到这一点,而不是使用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集成以下两个项目:
- https://github.com/apim-haufe-io/wicked.portal-kong-adapter
- https://github.com/Haufe-Lexware/wicked.auth-passport
- https://github.com/Haufe-Lexware/wicked.auth-saml
目前我们正在调查,看我们是否也可以添加一个默认授权服务器给邪恶的,但现在你必须滚动/分叉你自己的。
也许这有帮助,马丁
感谢您的答案。我一定会更深入地看待建议。 –
如果我已经有一个微服务处理认证(用户+密码),授权(用户是否可以访问特定资源)和注册(将用户添加到绑定到此微服务的用户数据库)会怎么样?有没有办法将用户服务与kong整合?看起来这种用户交互级别更适合于特定应用。 – user1790300
这听起来像是你可以或许应该用OAuth2来解决,这是退步,通常将授权抽象为范围。如何详细完成* your *服务很难从您在此处陈述的内容中分辨出来。理想情况下,您的API只需获取Kong提供的授权和身份验证,即可从事先收集的信息中获取。这往往是可能的,但并非总是如此。 – donmartin