具有JWT身份验证和多个提供程序的.Net Core Web API

时间:2018-09-05 10:18:40

标签: c# authentication jwt asp.net-core-webapi

我正在创建一个.Net Core Web API应用程序,该应用程序实现基于JWT的身份验证,并计划为用户提供不同的提供程序。他们应该能够使用自己拥有的任何Facebook,Google或Twitter帐户进行注册。

对于MVC应用程序,有诸如AspNet.Security.OAuth.Providers之类的库,它们实现基于cookie的身份验证,但是我找不到与Web API类似的东西。尽管我一直在搜索各种在线资源,但我不相信我是第一个尝试实现此目标的人。

我不介意从头开始(实际上我在学很多东西),但是我有一种缺失的感觉。

是否有任何库/ nuget包提供与多个提供商的基于JWT的现成身份验证?

1 个答案:

答案 0 :(得分:0)

Microsoft.AspNetCore.Authentication库包含您需要的所有扩展。 您可以通过在IServiceCollection的AddAuthentication()方法上链接它们来启用它们。

using Microsoft.AspNetCore.Authentication.Cookies;
using Microsoft.AspNetCore.Authentication.JwtBearer;
...
public void ConfigureServices(IServiceCollection services)
{
    services.AddAuthentication()
        .AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, options => { ...})
        .AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, options => {...})
        .AddMicrosoftAccount(microsoftOptions => { ... })
        .AddGoogle(googleOptions => { ... })
        .AddTwitter(twitterOptions => { ... })
        .AddFacebook(facebookOptions => { ... });

}

阅读this代码下面的部分,以获得很好的解释。