azure - 如何将 NGINX auth_jwt 指令与 Azure Active Directory B2C 自定义策略结合使用?

标签 azure nginx jwt azure-ad-b2c identity-experience-framework

使用 Azure Active Directory B2C (AAD B2C) 进行身份验证和授权时,在使用多个登录策略(每个策略均使用不同的 token 签名 key )时,如何配置 NGINX Plus 以在边缘验证单个应用程序颁发的 JWT?

最佳答案

使用 Azure Active Directory B2C 时,可以通过发出以下命令获取所需的 JWK:

curl -sS https://login.microsoftonline.com/<your_tenant_name_or_id>//discovery/v2.0/keys

但是,如果您正在开发更复杂的身份解决方案(例如白标签、用户创建/注册到多个系统等),那么您可能会通过身份体验框架 (IEF) 使用自定义策略。如果是这种情况,您可能在整个策略中配置了多个 token 签名 key 。这通常不会造成问题,因为您只需附加 ?p=<policy_name> 即可实际检索该策略的 JWK。针对上述请求(例如 curl -sS https://login.microsoftonline.com/<your_tenant_name_or_id>//discovery/v2.0/keys?p=b2c_1_sign_in )。当您有多个登录策略,每个策略都有自己的用于同一应用程序的 token 签名 key ,并且希望 NGINX 验证同一 NGINX 配置文件中所有策略的 JWT 时,这就变得更具挑战性。为此,您需要将所有 JWK 组合成一个 JWK,然后设置 auth_jwt_key_file /etc/nginx/<name_of_combined_json_web_key>.jwk 。这编码起来并不太难,但这里有一个我整理的 GitHub Gist 以提供帮助:build-aad-b2c-combined-policy-jwk.py

您可以通过将输出发送到文件来保存脚本中组合的 JWK。示例:

>> python build-aad-b2c-combined-policy-jwk.py --tenant_url https://login.microsoftonline.com/fabrikamb2c.onmicrosoft.com --policies b2c_1_sign_in,b2c_1a_another_policy > /etc/nginx/azure_active_directory.jwk

此外,鉴于 key 可以而且应该轮换,请务必设置 cron 作业或某种调度程序来定期使用最新 key 更新组合的 JWK。

关于azure - 如何将 NGINX auth_jwt 指令与 Azure Active Directory B2C 自定义策略结合使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51664283/

相关文章:

php - EC2 集群上的 Nginx 扩展和瓶颈识别

c# - Multi-Tenancy Asp.net Core网站中基于参数的JWT认证

.net - System.IO.FileNotFoundException : Could not load file or assembly 'Microsoft. ServiceBus,版本=3.0.0.0

Azure - 使用消耗 API - 不完整日期

python - 时间触发的 Azure 函数不会每分钟触发一次

angular - Docker Nginx Angular2/Angular 路由

python - Django + uwsgi + nginx 。导入错误 : No module named py

javascript - 身份验证如何跨微服务工作?

javascript - 在我的 Angular 2 应用程序中使用 JWT 并将其存储在 localStorage 中。但是,当该项目不存在时我该如何处理?

Azure 负载平衡集保留客户端 IP