Azure AD AADSTS50011错误:回复URL与应用配置不匹配排查
我之前也碰到过一模一样的AADSTS50011错误,大概率是几个容易忽略的配置细节没做好,给你梳理下排查和解决步骤:
严格匹配回复URL的大小写与格式:Azure AD对回复URL的匹配是完全严格区分大小写的,而且结尾的斜杠也会影响匹配结果。比如你配置的是
https://www.dnn.pt/Login,但DNN实际发起OAuth请求时,可能传递的是https://www.dnn.pt/login(小写l)或者https://www.dnn.pt/Login/(带末尾斜杠)。建议用浏览器开发者工具(Network标签)抓取OAuth授权请求,查看redirect_uri参数的真实值,然后将这个值完全一致地添加到Azure应用的replyUrls列表中。确认应用类型与回复URL类型匹配:如果你的Web应用是单页应用(SPA),需要在Azure Portal的应用注册里选择「SPA」类型的回复URL;如果是传统服务器端Web应用,则选择「Web」类型。两种类型的回复URL校验逻辑不同,混配会导致URL明明正确却报错的情况。
核对客户端ID是否对应正确的应用注册:有时候会不小心在多个Azure租户或应用注册中配置,结果实际使用的是另一个未添加对应回复URL的应用。打开DNN的OAuth配置页面,确认填写的Client ID和Azure Portal中你配置replyUrls的应用ID完全一致。
等待配置缓存生效:Azure AD的配置更新可能存在5-10分钟的缓存延迟,刚修改完replyUrls就测试很可能还没生效。可以稍等片刻再尝试,或者重启你的Azure Web应用(在门户的「概述」页点击「重启」按钮)。
排查DNN是否自动追加额外路径/参数:部分DNN OAuth模块可能会给
redirect_uri追加额外的查询参数(比如?returnUrl=xxx),虽然OAuth规范中redirect_uri不包含查询参数,但如果DNN把这些参数拼入了请求的redirect_uri中,就需要将完整的URL(包括参数)添加到replyUrls里。同样通过开发者工具抓取实际请求的redirect_uri值来确认。
按照这几步排查下来,基本能解决AADSTS50011的回复地址匹配问题,我当时就是因为忽略了大小写和应用类型的匹配才踩的坑。
内容的提问来源于stack exchange,提问作者Luis Abreu

