【问题标题】:.Net Core Web API with JWT authentication and multiple providers具有 JWT 身份验证和多个提供程序的 .Net Core Web API
【发布时间】:2019-02-10 10:59:01
【问题描述】:

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

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

我不介意从头开始(实际上我学到了很多东西),但我觉得我错过了一些东西。

是否有任何库/nuget 包提供基于 JWT 的开箱即用身份验证以及多个提供者?

【问题讨论】:

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


    【解决方案1】:

    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 代码以获得很好的解释。

    【讨论】:

    • 谢谢!我没有意识到我可以将Microsoft.AspNetCore.AuthenticationAddJwtBearer 一起使用。但是,我认为它并没有太大帮助。我正在寻找一些可以包装与外部提供者的通信的组件,因此我不需要保留 URL 进行身份验证并自己执行 HttpClient 请求。
    • @luizs81 好的,我明白了。我以为你想从头开始做,那么就是这样。如果回答有任何帮助,请点赞:)
    • 抱歉,但这并没有多大帮助,我不确定 Microsoft.AspNetCore.Authentication 如何在控制器级别与 JWT 交互。我找不到任何文档。所有 Microsoft 示例都使用 MVC 和脚手架页面。
    猜你喜欢
    • 2020-10-15
    • 2021-02-28
    • 2014-01-11
    • 2018-03-01
    • 2018-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多