点击上方关注“汪宇杰博客” ^_^
导语
最近我给博客系统加上了 Azure Front Door,集齐了12项 Azure 服务打算召唤神龙。没想到刚上线,Azure AD 的单点登录就爆了。
OIDC 跳转错误
当我尝试登录博客后台的时候,OIDC的跳转URL突然变成了 https://ediwang-web.azurewebsites.net/signin-oidc 这是 App Service 的默认域名,而不是我的自定义域名,域名不匹配导致登录失败。
正常情况下,OIDC应该跳转到 https://edi.wang/signin-oidc
究其原因是由于 Azure Front Door 只是对符合规则的请求流量做了单纯的转发,当流量打到 App Service 上的时候,App Service 看到的 host header 实际为 *.azurewebsites.net,它会继续把这个 host header 传递给 Azure AD 用作构建 OIDC URL,而该 host header 已经不是用户实际访问的域名了,因此 URL 会构建错误。
解决方法
既然原因出在不正确的 host header 上,那么我们如何给 Azure Front Door 分配一个正确的 host header 呢?
做法非常简单。默认情况下,当我们向 Azure Front Door 的 backend pool 里添加一个 App Service 网站的时候,Backend host header 字段会自动填充为 App Service 的域名。
像我这种刚上手的小白肯定不敢去改这个默认配置。
其描述为:
“
The host header value sent to the backend with each request. If you leave this blank, the request hostname determines this value. Azure services, such as Web Apps, Blob Storage, and Cloud services, require this host header value to match the target host name by default.
”所以,我们只需要将其留空即可。对于已经添加完成的 Backend pool,我们也可以修改这个设置。
点击 Backend pools 中需要编辑的条目,例如我的 appservice-edi-wang
在 BACKENDS 下点击需要修改的条目
删除 Backend host header 中的内容
保存设置后,稍等几分钟,Azure AD 单点登录又能正常工作了!
汪宇杰博客
.NET | Azure | 微软MVP
长按二维码获取我的最新技术分享
喜欢本篇内容请点个在看