入口如何支持 JWT 身份验证?



现在我正在使用Ingress-Nginx作为外部流量的路由服务。但是,很少有文章介绍入口如何播放 JWT 身份验证来保护内部 API。 有人可以分享一些关于它的信息吗?

根据研究:

不同的身份验证 API 调用已以 OAuth 2.0 访问令牌的形式合并。

这些是从客户端传递到 API 服务器的身份验证凭据,通常作为 HTTP 标头携带。

RFC 7519定义的JSON Web Token(JWT(就是其中之一。

根据文档:

JSON Web 令牌 (JWT( 是一种紧凑的、URL 安全的表示方式 索赔在双方之间转移。 智威汤逊中的声明 被编码为用作 JSON 有效负载的 JSON 对象 Web 签名 (JWS( 结构或作为 JSON Web 的明文 加密 (JWE( 结构,使声明能够以数字方式进行 使用邮件身份验证代码进行签名或完整性保护 (MAC( 和/或加密。

这种机制可以使用不同的入口控制器来应用,如 kubernetes nginx-ingress 或 nginxinc 入口控制器。

根据nginx inc文档:

NGINX auth_request模块用于代表后端服务验证令牌。

仅当客户端提供有效令牌时,请求才会到达后端服务 可以使用访问令牌保护现有后端服务,而无需更改代码 只有 NGINX 实例(不是每个应用程序(需要向 IdP 注册 每个错误条件的行为都是一致的,包括缺少或无效的令牌

因此,对于充当一个或多个应用程序的反向代理的 NGINX,我们可以在将请求代理到后端之前使用 auth_request 模块触发对 IdP 的 API 调用。

  • 在 kubernetes 入口中,您可以找到有关外部身份验证的信息

若要使用提供身份验证的现有服务,可以使用nginx.ingress.kubernetes.io/auth-url对入口规则进行批注,以指示应将 HTTP 请求发送到的 URL。

在这里你可以找到工作示例nginx-subrequest-auth-jwt

该项目实现了一个简单的JWT验证端点,旨在与NGINX的子请求身份验证一起使用,特别是与Kubernetes NGINX Ingress Controller外部身份验证注释配合使用。

它根据配置的公钥验证在授权标头中传递的 JWT 令牌,并进一步验证 JWT 是否包含适当的声明。

这个例子是使用PyJwt python库,它允许你编码和解码JSON Web令牌(JWT(。

其他资源:

  • 金芯控制器
  • kubernetes on github JWT Authentication

希望这有帮助。

相关内容

  • 没有找到相关文章

最新更新