Microsoft 应用程序 - 重定向 URI 允许 'localhost' 但不允许 '127.0.0.1'

Microsoft application - Redirect URI allows 'localhost' but not '127.0.0.1'

我开发了一个允许 MSA(Microsoft 帐户)身份验证的应用程序。我已经在这里注册了我的应用程序:https://apps.dev.microsoft.com.

在本地测试我的应用程序时,我可以在 https://localhost:44300, and MSA works fine. When I registered my app, I used https://localhost:44300/signin-microsoft 的 SSL URL 作为重定向 URI 毫无问题地访问我的应用程序。

问题: 我也可以在 https://127.0.0.1:44300 访问我的应用程序,正如人们所期望的那样。但是,这里的 MSA 不起作用。错误页面显示,We're unable to complete your request. Microsoft account is experiencing technical problems. Please try again later. 错误页面的 URL 显示错误与重定向 URI 不匹配:https://login.live.com/err.srf?lc=1033#error=invalid_request&error_description=The+provided+value+for+the+input+parameter+'redirect_uri'+is+not+valid.+The+expected+value+is+'https://login.live.com/oauth20_desktop.srf'+or+a+URL+which+matches+the+redirect+URI+registered+for+this+client+application.

在 Microsoft Apps 页面中,当我尝试从 https://localhost:44300/signin-microsoft to https://127.0.0.1:44300/signin-microsoft, it doesn't allow me to save my change and it shows me this error: Your URL can't contain a query string or invalid special characters, and it provides a 'Learn More' link: https://docs.microsoft.com/en-us/azure/active-directory/active-directory-v2-limitations#restrictions-on-redirect-uris

更新重定向 URI 时

阅读此 link 中的信息后,我没有发现像我的 (https://127.0.0.1:44300/signin-microsoft) 这样的 URI 是不可接受的 URL,因为我没有破坏任何他们的规则:我没有无效字符,没有查询字符串等

我的研究: 在线查看,人们得到 Your URL can't contain a query string or invalid special characters 因为他们实际上使用的是查询字符串或无效的特殊字符,例如 link:https://social.msdn.microsoft.com/Forums/en-US/4f638860-ea57-4f0e-85e0-b28e1e357fe2/office-365-app-authorization-redirect-uri-issue?forum=WindowsAzureAD。我找不到有人输入有效 URI 但不允许保存的情况。

为什么我需要 127.0.0.1 才能工作: 我需要公开这个网站,它在我的本地盒子上 运行。为了让网站 运行 没有一直打开 Visual Studio 的实例,我使用 csrun 在 Azure 本地结构中托管我的网站(顺便说一句,我的应用程序是 Azure Cloud服务,使用 ASP.NET MVC 5 应用程序作为 Web 角色)。我遵循了 csrun 的说明:http://www.bardev.com/2013/03/12/how-to-deploy-application-to-windows-azure-compute-emulator-with-csrun/。使用 csrun,它允许我在 https://127.0.0.1:444 中托管我的网站(但是,与 https://127.0.0.1:44300 一样,MSA 不起作用)。我的最终目标是使用 ngrok (https://www.sitepoint.com/use-ngrok-test-local-site/) 以 public URL 公开该网站, 这样任何人都可以访问我的网站。

因此,我的主要问题是:如何让重定向 URI 成为 https://127.0.0.1:44300/signin-microsoft 而不是 https://localhost:44300/signin-microsoft

确保您通过 https://identity.microsoft.com 访问此门户,因为这是以下步骤起作用的唯一方式。

您现在可以通过清单添加回复 URL 来解决此错误。登录到 the portal、select 您要配置的应用程序,然后向下滚动并点击 Edit Application Manifest 按钮。然后您可以将 https://127.0.0.1:44300/ 添加到 replyUrls 字段。

有一些有趣的行为,如果您只注册其他本地主机回复 Urls,则现在只允许这样做。如果这是您唯一需要的回复 URL,那应该不是问题。