请求中指定的回复 URL 与回复 URL 不匹配

The reply URL specified in the request does not match the reply URLs

在开发期间为 Web 应用程序设置与 Microsoft Azure API 的连接时,我遇到了以下错误:

AADSTS50011: The reply URL specified in the request does not match the reply URLs configured for the application: 'b9c2d921-$$$$-$$$$-$$$$-$$$$$$$$$$$$'. More details: Reply address did not match because requested address had a trailing slash.

最初,我在此 中发布了另一个错误,将平台配置从 SPA 更改为 Web 确实解决了这个问题。

我已经在应用程序身份验证中设置了重定向 URL:

有解决此问题的想法吗?

Cause: 

应用程序正在尝试针对 AAD 进行身份验证,但无法匹配它正在寻找的 URl。您可能没有在 AAD 中注册您的应用程序时给出正确的回复 URL,或者您没有指定正确的 url 作为 URL 的 redirect_uri 查询参数 when重定向到 AAD 登录页面以允许用户输入凭据。

如果您在 AAD 中的应用程序注册和 Web 应用程序中的两个位置都配置 same/matching URLS 并确保清除缓存,则可以解决问题。

How to check if both URIs are same: 

您可以在错误屏幕的浏览器地址栏中看到在登录/身份验证请求期间回复url/redirect uri(推荐使用Chrome或Edge浏览器)。如果是SAML请求,Assertion Consumer Service(ACS)-代表回复url.

示例:

Work arounds:

按照这些步骤在 AAD 中检查您配置的回复 URLs,同时按照提到的方式添加额外的 URLs 如果您想要在列表中添加新的 uri :

  • 登录portal.azure.com
  • 导航到左侧栏中的 Azure Active Directory > 应用程序 注册 > 您的应用程序 > 身份验证 > 重定向 URI。

WAY1

删除重定向 uri 末尾的斜线。尝试登录。

( 由于请求中的回复 url 以“/”结尾,但在应用程序上配置的回复 url(在上述错误中带有客户端 ID)可能 结尾没有斜杠。)

WAY2:

查看两个 URI 是否具有相同的协议 (https://) 因为 AAD 会将 http://website.com and https://website.com 视为两个不同的 URLs.

参考AAD Auth Failures - Incorrectly configured reply URLs for application | Microsoft Docs

否则, 建议您在 Azure 上重新配置您的 AAD 应用程序并设置一个或多个有效回复 URLs.