希望NGINX基于OAuth2令牌对传入的请求进行身份验证,包括验证特定的令牌声明,例如"aud“受众声明、"iss”发行者声明等。
ngx_http_auth_jwt_module (module.html)只对令牌进行验证,以确保它由预期的当事方和有效期进行签名。
问题是,如果您使用的是云IdP (例如Azure ),上面的验证是不够的,因为用于签名令牌的密钥在不同的客户租约之间共享。因此,令牌中的索赔需要进一步验证,包括发行者、受众等。
怎样才能用NGINX完成这件事呢?但是,下面的模块支持索赔验证:https://github.com/auth0/nginx-jwt
发布于 2022-04-12 20:38:52
ngx_http_auth_jwt_module公开包含从JWT有效负载解码的声明的变量,包括aud和iss,它们将相应地出现在变量$jwt_claim_aud和$jwt_claim_iss中。您可以在文档下的嵌入式变量部分中阅读更多内容。
有了这些变量,您可以结合使用它们和auth_jwt_require指令在访问阶段验证声明:
auth_jwt_require定义了用于JWT验证的附加条件。该值可以包含文本、变量及其组合。只有当所有值都不是空值且不等于“0”时,身份验证才会成功。 地图$jwt_claim_iss $valid_jwt_iss {“好”1;}.auth_jwt_require $valid_jwt_iss;
还有一件事,虽然ngx_http_auth_jwt_module是商业发行版的一部分(如果已经有Nginx,您肯定应该充分利用它),还有社区为Nginx编写的相当多免费JWT模块。其中一些还支持变量和索赔验证。
https://stackoverflow.com/questions/65713529
复制相似问题