【问题标题】:asp.net core identity + apiasp.net 核心标识 + api
【发布时间】:2017-01-11 11:30:21
【问题描述】:

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

我只是在试图弄清楚 ASP.NET Core 身份和 cookie/令牌身份验证时有点卡住了......

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

感谢您的帮助!

【问题讨论】:

  • 无需任何身份和cookie/token认证即可创建和消费。
  • 对,但是我可以使用身份吗(我希望有能够登录的用户,我想根据用户角色等限制对 api 的访问)所以我想使用 asp net核心身份。我可以在没有任何令牌身份验证的情况下这样做吗?
  • 您可以这样做,但需要在您的 api 上处理和维护会话。浏览器为我们做了这个,但在 api 中你也需要处理这个。
  • @Ahmar 你不应该为 API 维护会话,它们中继 o REST 动词,并且必须像 HTTP 一样是无状态的。你可以根据这篇文章 blogs.msdn.microsoft.com/webdev/2016/10/27/… 添加对 JWT 的支持

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


【解决方案1】:

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

您可以使用 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();
}

然后,您必须将 Angular 应用程序配置为 IdentityServer 的“客户端”,并能够访问您的 API“资源”。有一整套关于添加 JavaScript 客户端的教程:https://identityserver4.readthedocs.io/en/release/quickstarts/7_javascript_client.html

【讨论】:

    【解决方案2】:

    我可以只创建一个 API 并为数据库使用实体框架吗 处理和 ASP.NET Core Identity 来处理创建和管理 用户和授权?:

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-07-19
      • 2017-07-17
      • 1970-01-01
      • 2021-04-30
      • 1970-01-01
      • 2018-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多