【问题标题】:LinkedIn Authentication via Oauth2 returns null result (error=access_denied)通过 Oauth2 进行的 LinkedIn 身份验证返回空结果 (error=access_denied)
【发布时间】:2015-06-12 08:43:18
【问题描述】:

我将我的 ASP.NET MVC Web 应用程序从成员身份转移到身份验证,因为我无法再在 LinkedIn 上进行身份验证。

Facebook 身份验证仍然可以正常工作,但在调用 GetExternalLoginInfo 之后 LinkedIn 总是返回 null loginInfo。

对于 LinkedIn,我使用的是 Owin LinkedIn 提供程序:LinkedIn APIs for .NET。我也没有成功尝试关注this post from Jerrie Pelser

应用程序调用执行 ExecuteResult 方法的 ExternalLogin Action 并回调 ExternalLoginCallback(在我允许访问应用程序之后)。如前所述,AuthenticationManager.GetExternalLoginInfoAsync() 方法总是返回 null loginInfo。

我检查了 LinkedIn 中的应用程序设置,一切似乎都正常。

操作!我差点忘了说 LinkedIn 正在返回带有通用错误消息的 URL:"GET /Account/ExternalLoginCallback?error=access_denied HTTP/1.1"

我可以使用 DotNetOpenAuth.Clients(托管 github)进行身份验证,但我只想使用 Identity。

Startup.Auth.cs

var linkedInOptions = new LinkedInAuthenticationOptions();
        linkedInOptions.ClientId = "Xxxxx";
        linkedInOptions.ClientSecret = "Yyyyyyy";

        linkedInOptions.Scope.Add("r_fullprofile");

        linkedInOptions.Provider = new LinkedInAuthenticationProvider()
        {
            OnAuthenticated = async context =>
            {
                context.Identity.AddClaim(new System.Security.Claims.Claim("LinkedIn_AccessToken", context.AccessToken));
            }
        };

        linkedInOptions.SignInAsAuthenticationType = DefaultAuthenticationTypes.ExternalCookie;

        app.UseLinkedInAuthentication(linkedInOptions);

外部登录

public ActionResult ExternalLogin(string provider, string returnUrl)
    {
        // Request a redirect to the external login provider
        return new ChallengeResult(provider, Url.Action("ExternalLoginCallback", "Account", new { ReturnUrl = returnUrl }));
    }

回调操作

var loginInfo = await AuthenticationManager.GetExternalLoginInfoAsync();
if (loginInfo == null)
{
    return RedirectToAction("Login");
}

LinkedIn 回调 URI

http://localhost:3279/signin-linkedin

【问题讨论】:

    标签: asp.net-mvc authentication oauth-2.0 linkedin asp.net-identity


    【解决方案1】:

    经过一些研究和访问 NuGet 包存储库后,我发现了一个 prerelease version of Owin.Security.Providers,它就像一个魅力。我只需要从包管理器控制台安装它,LinkedIn 外部登录返回 null 的问题就消失了。

    Install-Package Owin.Security.Providers -Pre
    

    注意: 请注意,使用预发布包可能会导致意外问题

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-09
    • 2015-03-11
    • 2019-01-31
    • 2014-11-22
    • 1970-01-01
    • 2020-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多