0

我有一个迁移到 ASP.NET Identity 的 ASP.NET MVC 5 应用程序,并且正在实施 OAuth 身份验证。在迁移之前,我使用的是带有 OpenID 的 Yahoo,它确实有效,但不再受支持。
所有常见的提供商(谷歌、MS、Facebook ......)都工作正常,但我无法让雅虎工作。
我正在使用THIS提供程序。

当我进行身份验证时,一切看起来都很好,直到它回到我的页面。那里await AuthenticationManager.GetExternalLoginInfoAsync()返回null。

然后我检查了完整的“请求堆栈”并看到了以下“请求流”:

  1. 回帖到http://mydomain.net/Account/ExternalLogin
  2. 带有标头的响应Location: https://api.login.yahoo.com/oauth/v2/request_auth?oauth_token=hwwvmgr
  3. 通过雅虎登录
  4. 请求https://api.login.yahoo.com/oauth/v2/request_auth
  5. 带有标头的响应Location: http://mydomain.net/signin-yahoo?oauth_token=hwwvmgr&oauth_verifier=p2bppu
  6. 对该 URL 的请求
  7. 带有标头的响应Location: /Account/ExternalLoginCallback?error=access_denied

有谁知道为什么会发生这种情况?

我在雅虎验证的“真实域”上执行了此操作。
配置如下所示:

var options = new YahooAuthenticationOptions();
options.ConsumerKey = settings.ConsumerKey;
options.ConsumerSecret = settings.ConsumerSecret;
app.UseYahooAuthentication(options);
4

1 回答 1

1

发现问题:是提供程序中的错误。如果您在此处查看历史记录:

版本 1.5.1 - 修复了 Yahoo 提供商的问题。请参阅http://www.jerriepelser.com/blog/introducing-the-yahoo-linkedin-oauth-security-providers-for-owin了解如何正确使用 Yahoo 提供程序。请注意在 localhost 上进行测试的要求。

我刚刚将提供程序更新到 1.6 版(它们上周刚刚发布,所以我还没有更新),它现在正在运行。

于 2014-07-20T16:39:14.370 回答