asp.net核心身份+ api

时间:2017-01-11 11:30:22

标签: asp.net-mvc asp.net-web-api asp.net-core asp.net-core-mvc

我刚开始学习asp.net核心。我想创建一个简单的Web应用程序,我将在asp.net核心中有一个rest API,然后是一个单独的前端,有一些角度消耗该API。

我试图弄清楚ASP.NET核心身份和cookie /令牌身份验证有点困难......

我的问题非常简单:我是否可以创建一个API并使用Entity Framework进行数据库处理和ASP.NET Core Identity来处理用户和授权的创建和管理?我是否还必须使用一些JWT,OAuth或类似的东西?只是这对我来说都是超级新手而且我感到困惑,因为每个示例/教程都以不同的方式显示它并且我变得非常困惑......

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

我正在开展一个非常相似的项目。查看IdentityServer4 https://identityserver4.readthedocs.io/en/release/index.html。它是由来自leastprivilege https://leastprivilege.com的人创建的ASP.NET Core的开源OpenID Connect / OAuth 2框架。

您可以使用JWT处理保护API,并将IdentityServer配置为为其用户存储使用ASP.NET Core Identity。此部分介绍如何保护API:https://identityserver4.readthedocs.io/en/release/configuration/apis.html

这基本上是如何添加ASP.NET Identity,IdentityServer和配置IdentityServer以在Startup.cs中使用ASP.NET Identity:

public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<ApplicationDbContext>(options =>
    options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));

services.AddIdentity<ApplicationUser, IdentityRole>()
    .AddEntityFrameworkStores<ApplicationDbContext>()
    .AddDefaultTokenProviders();

services.AddMvc();

// Adds IdentityServer
services.AddIdentityServer()
    .AddAspNetIdentity<ApplicationUser>();
}

然后保护API只是Startup.cs中的几行代码

public void Configure(IApplicationBuilder app)
{
    app.UseIdentityServerAuthentication(new IdentityServerAuthenticationOptions
    {
        Authority = "https://demo.identityserver.io",
        AllowedScopes = { "api1" },
    });

    app.UseMvc();
}

然后你必须将你的角度应用程序配置为&#34;客户端&#34; IdentityServer能够访问您的API&#34;资源&#34;。有一个关于添加JavaScript客户端的完整教程:https://identityserver4.readthedocs.io/en/release/quickstarts/7_javascript_client.html

答案 1 :(得分:0)

  

我可以创建一个API并使用Entity Framework for database   处理和ASP.NET核心标识来处理创建和管理   用户和授权?:

ASP.NET核心身份框架利用实体框架来处理/管理用户身份验证和授权。实现后,框架将使用Entity Framework生成Identity Framework所需的数据库和表。因此,在使用Identity Framework编写用于用户管理的api /逻辑时,您将不得不使用EF。对于所有其他模型/实体,您可以使用自己的数据库(与身份数据库分开),并仍然选择使用EF作为该部分,但这取决于您。

  

我是否还必须使用一些JWT,OAuth或类似的东西?

这也取决于您并且受到支持,但不是强制性的。