登录后重定向URI未保留:Azure B2C部署至App Service后异常
Azure B2C 迁移至App Service后重定向异常解决方案
先检查App Service的转发头配置
因为App Service在App Gateway反向代理后面,得让应用能识别真实的客户端请求地址,而不是App Service内部的地址。直接在App Service的「应用程序设置」里加这两个配置:WEBSITE_ENABLE_FORWARDED_HEADERS设为1- 如果开了
WEBSITE_USE_HTTP2,部分场景下可能和转发头冲突,可先关闭试试
修正ASP.NET里的重定向URI生成逻辑
对于Web Forms的Login.aspx,处理B2C认证回调时,别用服务器内部地址生成重定向URI,要从转发头里拿真实的客户端地址。比如:// 别这么写:拿的是App Service内部地址 // var redirectUri = Request.Url.AbsoluteUri; // 改成从转发头取真实地址 var forwardHost = Request.Headers["X-Forwarded-Host"]; var forwardProto = Request.Headers["X-Forwarded-Proto"]; var redirectUri = $"{forwardProto}://{forwardHost}{Request.Url.PathAndQuery}";也可以直接在web.config里加反向代理支持的配置:
<system.webServer> <rewrite> <rules> <rule name="Forwarded Headers" stopProcessing="true"> <match url=".*" /> <conditions> <add input="{HTTP_X_FORWARDED_PROTO}" pattern="https" /> </conditions> <serverVariables> <set name="HTTP_X_FORWARDED_HOST" value="{HTTP_HOST}" /> <set name="HTTP_X_FORWARDED_SCHEME" value="https" /> </serverVariables> </rule> </rules> </rewrite> </system.webServer>确认App Gateway的后端转发设置
检查App Gateway的后端HTTP配置,确保它给App Service转发请求时,带上了X-Forwarded-Host和X-Forwarded-Proto头,而且没乱改请求的路径或主机信息。核对B2C应用注册的重定向URI
虽然首次传入的redirect_uri是对的,但再确认下B2C应用注册里的回复URL,只保留App Gateway的内网URI,别混着加App Service的地址,而且要完全匹配(包括HTTP/HTTPS、完整路径)。排查会话初始化的重定向代码
看看Login.aspx里处理完id_token后的跳转逻辑,是不是硬编码了App Service的.azurewebsites.net地址?要是有,改成动态从请求头里拿App Gateway的地址。
内容的提问来源于stack exchange,提问作者Matt Felzani
相关产品推荐
相关产品推荐

