【问题标题】:ASP.NET MVC Microsoft Live Account Authentication on Localhost本地主机上的 ASP.NET MVC Microsoft 实时帐户身份验证
【发布时间】:2014-09-22 20:12:36
【问题描述】:

我创建了一个空白的新 ASP.NET MVC 站点。

我在https://account.live.com/developers/ 设置了一个应用程序端点,如下所示:

API 设置:http://i.imgur.com/bIoV3x9.png

应用设置和代码隐藏:http://i.imgur.com/P3KFyhV.png

我尝试启动我的网站,连接到https://localhost:44300/,点击“登录”,然后点击“Microsoft”,然后我得到一个显示以下内容的页面:

微软帐户

我们无法完成您的请求

Microsoft 帐户遇到技术问题。请稍后再试。

但是它将我重定向到的 URL 是:

https://login.live.com/err.srf?lc=1033#error=invalid_request&error_description=The%20provided%20value%20for%20the%20input%20parameter%20'redirect_uri'%20is%20not%20valid.%20The%20expected%20value%20is%20'https://login.live.com/oauth20_desktop.srf'%20or%20a%20URL%20which%20matches%20the%20redirect%20URI%20registered% 20for%20this%20client%20application

我相信redirect_uri 无效。预期值是 oauth20_desktop.srf 的某个 URI。我不知道世界上发生了什么/问题是什么。任何人都可以了解我必须做什么来测试 Microsoft 帐户登录到我的本地主机运行的 MVC 站点吗?

【问题讨论】:

  • “匹配为此客户端应用程序注册的重定向 URI”就是答案。您的设置会显示一些“.com”返回 url,而您可能会通过某种 localhost... 一个。查看我在stackoverflow.com/questions/4532721/… 中的回答来处理它。
  • @AlexeiLevenkov 它可以在 IIS Express 上运行吗?我尝试将我的 hosts 文件更改为指向 127.0.0.1 mydomain.com,其中 mydomain 是图片中的域(已空白),但这不起作用。它只适用于 IIS 吗?
  • 您需要 Fiddler 解决方法 - 主机文件不适用于开发服务器/IIS express,它们只需要默认配置中的 localhost。

标签: c# asp.net asp.net-mvc-4 oauth oauth-2.0


【解决方案1】:

您的发现是正确的,Microsoft 不允许将 localhost 设置为 redirect_uri,它在 ASP.NET Documentations 中进行了解释...

在 Facebook 注册您的站点时,您可以为站点域提供“localhost”,为 URL 提供“http://localhost/”,如下图所示。使用 localhost 适用于大多数提供程序,但目前不适用于 Microsoft 提供程序。对于 Microsoft 提供商,您必须包含有效的网站 URL。

如果你想让它工作,你需要设置一个带有自定义主机头的 IIS 站点,这将需要你修改你机器中的主机文件...假设你当然是在 Windows 机器上开发

设置环境

  1. 打开 IIS 管理控制台并创建一个新站点
  2. 输入站点名称、应用程序池、物理路径,最重要的是主机标头....见下面的屏幕截图

  1. 单击“确定”创建站点,然后确保站点和应用程序池都在运行
  2. 在“运行命令”实用程序中输入以下系统路径%SystemRoot%\system32\drivers\etc打开hosts文件所在的路径...一般为C:\Windows\system32\drivers\etc
  3. 以管理员身份打开主机文件并添加与您设置的主机头匹配的条目...

    127.0.0.1 www.testsite.com

  4. 保存后,您可以打开浏览器窗口来测试设置,输入http://www.testsite.com

  5. 如果它有效,那么您可以将该 URL 用于 Microsoft OAuth API 或任何其他提供商(如 Google、Facebook、LinkedIn 等)的测试目的

【讨论】:

  • 它能在 IIS Express 上运行吗?我尝试将我的 hosts 文件更改为指向 127.0.0.1 mydomain.com,其中 mydomain 是图片中的域(已空白),但这不起作用。它只适用于 IIS 吗?
  • @Alexandru 仅设置主机文件条目是不够的。您需要将自定义主机标头添加到与主机文件中指定的条目匹配的站点。我不知道您是否可以使用 IIS Express 来实现这一点,因为我从不使用它......我总是设置一个尽可能接近实时环境的开发环境。所以,使用 IIS 7/7.5,建立一个站点并添加主机头,它应该可以工作
  • @Alexandru 我刚刚注意到你接受了答案,因为我正在添加更多细节......我会把它留在那里以防你有任何疑问和/或将来参考
猜你喜欢
  • 2014-02-20
  • 1970-01-01
  • 1970-01-01
  • 2021-07-07
  • 2017-02-12
  • 1970-01-01
  • 2020-11-10
  • 2015-07-26
  • 1970-01-01
相关资源
最近更新 更多