Azure静态Web应用仅允许Entra B2C认证用户访问配置异常
问题排查与修复方案
1. 修正登录跳转端点(核心问题)
你的responseOverrides中配置的跳转路径是/.auth/login/aad,但你定义的自定义OpenID Connect提供者名称是aadb2c,二者不匹配,导致未认证时无法正确触发B2C登录流程。需要将跳转路径改为对应自定义提供者的端点:
"responseOverrides": { "401": { "statusCode": 302, "redirect": "/.auth/login/aadb2c" } }
2. 验证B2C应用注册的回复URL
确保你在Entra B2C中注册的应用程序已添加以下回复URL(替换为你的静态Web应用域名):
https://<你的静态Web应用域名>/.auth/login/aadb2c/callback
如果缺少这个URL,登录流程会失败,导致认证状态无法正确同步。
3. 优化路由规则(可选)
你的routes规则"route": "/*"已覆盖所有路径,但可以明确排除无需认证的静态资源,避免图片、CSS等资源触发认证检查:
"routes": [ { "route": "/images/*", "allowedRoles": ["anonymous"] }, { "route": "/css/*", "allowedRoles": ["anonymous"] }, { "route": "/*", "allowedRoles": ["authenticated"] } ]
4. 调整内容安全策略(可选)
当前CSP的script-src仅允许userscripts.example.com,但B2C登录页面和认证脚本需要从B2C域名加载,需补充对应域名到CSP规则:
"globalHeaders": { "Content-Security-Policy": "default-src 'self'; img-src *; media-src media1.com media2.com; script-src userscripts.example.com https://mytenantb2c.b2clogin.com; connect-src 'self' https://mytenantb2c.b2clogin.com", "X-Content-Type-Options": "nosniff", "X-Frame-Options": "DENY" }
5. 重新部署配置
修改staticwebapp.config.json后,重新部署静态Web应用,确保新配置生效。
内容的提问来源于stack exchange,提问作者tridy
相关产品推荐
相关产品推荐

