我开发了一个允许MSA(Microsoft帐户)身份验证的应用程序。我在这里注册了我的应用:https://apps.dev.microsoft.com。
在本地测试我的应用时,我可以通过https://localhost:44300的SSL网址轻松访问我的应用,并且MSA正常工作。当我注册我的应用时,我使用https://localhost:44300/signin-microsoft作为重定向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.
错误页面的网址显示错误与重定向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页面中,当我尝试将重定向URI从https://localhost:44300/signin-microsoft更新为https://127.0.0.1:44300/signin-microsoft时,它不允许我保存我的更改并显示此错误:{{1它提供了“了解更多”链接:https://docs.microsoft.com/en-us/azure/active-directory/active-directory-v2-limitations#restrictions-on-redirect-uris
在阅读此链接中的信息后,我看不到像我这样的URI(https://127.0.0.1:44300/signin-microsoft)将是一个不可接受的URL,因为我没有违反他们的任何规则:我没有无效的字符,没有查询字符串等
我的研究:在线查看,人们正在获取Your URL can't contain a query string or invalid special characters
,因为他们实际上使用的是查询字符串或无效的特殊字符,例如在此链接中: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云服务,带有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/)向公众网站公开此网站,以便任何人都可以访问我的网站。
因此,我的主要问题是:如何将重定向URI设为https://127.0.0.1:44300/signin-microsoft而不是https://localhost:44300/signin-microsoft?
答案 0 :(得分:1)
确保您通过https://identity.microsoft.com访问此门户网站,因为这是以下步骤的唯一方式。
您现在可以通过清单添加回复网址来解决此错误。登录the portal,选择您要配置的应用,然后向下滚动并点击Edit Application Manifest
按钮。然后,您可以将https://127.0.0.1:44300/
添加到replyUrls
字段。
如果您只注册其他localhost回复网址,那么有一些有趣的行为现在只允许这样做。如果这是您需要的唯一回复URL,那么它应该不是问题。