我的设置如下:
- Rest API(Spring 启动)
- 前端应用程序 (Angular 8)
- 身份验证服务器(Keycloak)
当前情况:
- 用户在 Angular 登录页面中输入用户名和密码。
- Angular 发出 POST 请求并从 keycloak 服务器获取访问 token 、刷新 token 等。
- 在对rest api服务器(仅持有者)的所有后续请求中,都会传入访问 token
header 为“授权:持有者
” - Rest API 会查看用户的角色,并据此返回所需的数据或引发 403 Forbidden 异常。
我想要什么: 使用 api-key 对外部用户进行身份验证,然后为其添加速率限制。为此,我使用 Kong API Gateway。对于通过 Angular 应用程序登录的内部或受信任用户,现有的访问 token 流程应该可以工作。
问题: 当在 Kong 中使用 apikey 时,它确实通过了 Kong 的身份验证,但其余 api 服务器仍然需要访问 token ,因此会收到 401 未经授权的错误。
最佳答案
我找到了这个问题的解决方案。基本上你需要配置一个匿名消费者和 enable multiple authentication methods使用 Kong 的 key-auth 插件实现基于 api-key 的安全性,使用 openid-connect 插件实现基于 keycloak 的安全性。
对于那些没有 Kong Enterprise 的人,由于 openid-connect 插件不是开源的,您可以仅配置启用匿名访问的 key-auth 插件,然后在其余应用程序中处理基于 keycloak 的身份验证。
关于spring-boot - 使用 Kong API Gateway key-auth 插件和 keycloak 保护的其余 api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63351505/