[英]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.