繁体   English   中英

使用ASP.NET Core Web API进行Facebook JWT身份验证

[英]Facebook JWT authentication using ASP.NET Core Web API

我正在使用ASP.NET Core 2.0 Web API来创建具有身份验证的应用程序。 我想使用“登录/密码”组合并使用Facebook登录。 我正在使用JWT令牌进行授权。 Startup.cs我调用扩展方法RegisterAuth

public static void RegisterAuth(this IServiceCollection services, AuthSettings authSettings)
{
    services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
        .AddJwtBearer(options =>
        {
            options.SaveToken = true;
            options.TokenValidationParameters = new TokenValidationParameters
            {
                ValidateIssuer = true,
                ValidateAudience = false,
                ValidateLifetime = true,
                ValidateIssuerSigningKey = false,
                ValidIssuer = authSettings.Issuer,
                ValidAudience = authSettings.Audience,
                IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(authSettings.SecretKey))
            };
        })
        .AddFacebook(facebookOptions =>
        {
            facebookOptions.AppId = authSettings.Facebook.AppId;
            facebookOptions.AppSecret = authSettings.Facebook.AppSecret;
            facebookOptions.SignInScheme = "Bearer";
        });
}

在我的控制器中我有2种方法。 Login的“登录/密码”组合,并返回jwt令牌。 SignIn for facebook无法正常工作。

[Route("SignIn/{provider}")]
public IActionResult SignIn(string provider)
{
    return Challenge(new AuthenticationProperties(), provider);
}

SignIn重定向到facebook页面,登录后会抛出异常。

InvalidOperationException:没有配置IAuthenticationSignInHandler来处理该方案的登录:Bearer

所以请帮我修复Facebook Auth。 谢谢!

只需要更改Facebook SignInScheme并添加cookie。

1)改变"Bearer"; CookieAuthenticationDefaults.AuthenticationScheme; 并添加cookie。

2) AddAuthentication添加后

.AddCookie()
.AddFacebook(facebookOptions =>
{
    facebookOptions.AppId = authSettings.Facebook.AppId;
    facebookOptions.AppSecret = authSettings.Facebook.AppSecret;
    facebookOptions.SignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM