IdentityServer4和用户管理

cdi*_*die 3 asp.net-identity asp.net-core identityserver4

我一直在网上粉碎,发现了一些关于IdentityServer4及其真正用途的数据.

对于我到目前为止所理解的,IdentityServer4是令牌发行者,它是系统,它将保持特定客户端可以访问的资源与之间的链接.因此,IdentityServer将获得客户端标识,以确定是否,是或否,它有权访问此资源,或者它将获得用户标识(也称为邮件和密码)以获取令牌以说明用户是否已注册.

如果我没有误会,这意味着用户存储必须靠近IdentityServer,或者IdentityServer应该知道在用户存储中进行的每个修改.关于身份服务器的最新版本,我没有找到一些有价值的东西.而且,IdentityServer似乎需要AspNet Identity,这意味着信息将被复制......

有什么我不明白或出错的吗?如果没有,它是如何轻松实现的(考虑到我从头开始,我必须迁移旧的旧用户存储)?

m3n*_*ak3 8

您有几个用户管理选项:

  1. 正如你所说 - 使用Asp NET Identity
  2. 使用实体框架
  3. 使用自己创建的自定义逻辑

选项1和2有很多例子和每个选项的快速入门,所以我不会深入到那里.

选项3 - 自定义实施.我们最终得到了这一点.我们有很多自定义的东西(感觉与扩展/覆盖EF方法无关),我们不需要Asp NET Identity,因此决定采用自定义实现.

或多或少 - 我们有一个数据库,它拥有我们的用户.用于访问数据库的EF(与PostgreSQL,SQL Server等配合使用,因此您可以自由使用)和自定义服务,可用于CRUD操作以及表所需的任何其他内容.

IdentityServer允许您连接几乎所有正在使用的服务/商店的自定义实现:

services.AddIdentityServer()
            .AddInMemoryCaching()
            .AddProfileService<ProfileService>()
            .AddClientStoreCache<ClientStore>()
            .AddResourceStoreCache<ApiResourceStore>()
Run Code Online (Sandbox Code Playgroud)

所有这些都是其接口的自定义实现.您也可以自由地修改AccountController实际登录的位置,这样您就可以在那里连接您的用户服务,并检查您自己的数据库.

所以基本上这里的方法取决于你,你的时间框架等.