我可以在我的 Web API 解决方案中使用 Microsoft.AspNetCore.Identity Nuget 吗?

Can I use Microsoft.AspNetCore.Identity Nuget in my Web API solution?

我目前有一个 Blazor WASM 项目,它从 AspNetCore 5 应用服务获取它的 ID/Access 令牌,Azure 中托管了 IdentityServer4 IDP,利用 Microsoft Identity 进行用户存储。 IDP 中的 MS Identity 组件使用的实际数据库托管在 Azure SQL 中。我还有一个单独的 AspNetCore 5 web API 解决方案,该解决方案针对 IDP 进行了身份验证。

目前,新用户需要在 IDP 中使用 MS 身份注册 UI 进行注册。

现在我有一个请求,允许站点管理员为其组织创建初始用户(可能批量或批量),而不是让用户自己直接访问 IDP 中基于 MS 身份的注册 link .

所以我想我基本上可以在我的 API 中创建一个用户控制器,它连接到我的 IDP 通过 EntityFramework 使用的 Azure SQL 数据库。我希望我能以某种方式利用 Microsoft.AspNetCore.Identity 包来利用 Identity 项目的 类 和我的 AspNetCore 5 API 中用于 UserManager、RoleManager、IdentityUser 等的方法。但是,我这样做看不到如何在 Startup.cs --> ConfigureServices 中注册服务,这样我就可以在 API 的服务中通过 DI 实际访问 UserManager 和 RoleManager 工具(例如)。

我不想在此处实际验证登录或生成我自己的 Identity/Access 令牌。我只想 create/edit 用户,也许批量或分批。

我不认为使用...

        services.AddIdentity<User, IdentityRole>()
            .AddRoles<IdentityRole>()
            .AddRoleManager<RoleManager<IdentityRole>>()
            .AddEntityFrameworkStores<UsersDbContext>(); services.AddIdentity

在我的 API 的 startup.cs 中,因为这似乎会干扰...

        services.AddAuthentication("Bearer")
            .AddJwtBearer("Bearer", options =>
            {
                ...
                ...
            });  

我正在使用访问令牌进行身份验证。

我只是想我可以使用 Microsoft 的 AspNetCore Identity 包从我自己的 API 中访问 CRUD 用户帐户所需的用户和角色工具,也许是分批访问,而不是角色我自己的 类 和我的 API.

中的方法

有谁知道这是否可行,如果可行,如何在 DI 中正确注册 Microsoft AspNetCore Identity 服务?

我的建议是仅使用 AddJwtBearer() 来保护您的 API,并将身份信息放在不同的客户端 service/application 中。因此 API 所要做的就是接受带有访问令牌的请求。这将使您的解决方案更容易推理和理解。

保持API简单纯粹!

事实证明,有一个名为 AddIdentityCore 的 services.AddIdentity 版本,它提供了没有 ID/Access 令牌元素的用户管理实用程序。

将以下代码添加到 Startup.cs --> 我的 API 中的 ConfigureServices 成功了。

services.AddIdentityCore<User>()
    .AddRoles<IdentityRole>()
    .AddRoleManager<RoleManager<IdentityRole>>()
    .AddEntityFrameworkStores<UsersDbContext>()
    .AddDefaultTokenProviders();

.AddDefaultTokenProviders() 添加了生成回调中使用的代码的功能 link 当您在创建新帐户时发送确认电子邮件时。

使用 Startup 中的这段代码,我能够根据需要将 Usermanager 和 RoleManager 注入我的服务,并且仍然正确授权 OAuth2 令牌以安全访问 API 本身。