使用 Kong API Gateway key-auth 插件和 keycloak 保护的 rest api

Using Kong API Gateway key-auth plugin with keycloak protected rest apis

我的设置如下:

  1. 休息API秒(Spring开机)
  2. Front-end申请(Angular8)
  3. 授权服务器(Keycloak)

当前场景:

  1. 用户在angular登录页面输入用户名和密码。
  2. Angular 发出 POST 请求并从 keycloak 服务器获取访问令牌、刷新令牌等。
  3. 在所有后续请求休息api服务器(仅承载),访问令牌传入 header 作为“授权:承载
  4. Rest api 查看用户的角色,并根据 returns 所需的数据或抛出 403 禁止异常。

我想要的: 使用 api-key 验证外部用户,然后向其添加 rate-limiting。为此,我正在使用 Kong API 网关。对于通过 angular 应用程序登录的内部或受信任的用户,现有的访问令牌流程应该有效。

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

我找到了解决方案。基本上你需要配置一个匿名消费者和 enable multiple authentication methods 使用 Kong 的 key-auth 插件用于基于 api-key 的安全和 openid-connect 插件用于基于密钥斗篷的安全。

对于没有 Kong Enterprise 的用户,由于 openid-connect 插件不是开源的,您可以只配置启用匿名访问的 key-auth 插件,然后在中处理基于 keycloak 的身份验证你的休息申请。