结合使用Kong API Gateway密钥验证插件和受密钥斗保护的rest api

问题描述

我的设置如下:

  1. 其他API(春季启动)
  2. 前端应用程序(Angular 8)
  3. 身份验证服务器(密钥斗篷)

当前情况:

  1. 用户在角度登录页面中输入用户名和密码。
  2. Angular发出POST请求,并从keycloak服务器获取访问令牌,刷新令牌等。
  3. 在所有随后的休息api服务器请求(仅承载)中,访问令牌都将传入 标头为“授权:承载
  4. Rest api会查看用户的角色,并以此返回所需数据或引发403 Forbidden异常。

我想要的东西: 要使用api密钥对外部用户进行身份验证,然后向其添加速率限制。为此,我正在使用Kong API Gateway。对于通过angular应用程序登录的内部或受信任用户,现有访问令牌流应该起作用。

问题: 在Kong中使用apikey时,它确实通过了Kong的身份验证,但是其余的api服务器仍需要访问令牌,因此会收到401未经授权的错误。

解决方法

我找到了解决方案。基本上,您需要配置匿名使用者,并使用Kong的key-auth插件(基于api-key的安全性)和openid-connect插件(基于keycloak的安全性)来配置enable multiple authentication methods

对于那些没有Kong Enterprise的用户,由于openid-connect插件不是开源的,因此您可以仅配置启用了匿​​名访问的key-auth插件,然后在其余应用程序中处理基于keycloak的身份验证。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...