我一直在浏览整个网站,以找到一些关于IdentityServer4及其真正用途的数据。
据我所知,IdentityServer4是令牌颁发者,它是一个系统,将保持特定客户端可以访问或不可以访问的资源之间的链接。因此,IdentityServer将获得客户端标识,说明它是否有权访问此资源,或者它将获得用户标识(也称为邮件和密码(,以获得令牌,说明用户是否注册。
如果我没有弄错的话,这意味着用户存储必须靠近IdentityServer,或者Identity服务器应该知道用户存储中所做的每一次修改。关于身份服务器的最后一个版本,我还没有发现一些有价值的东西。此外,Identity Server似乎需要AspNet Identity,这意味着信息将被复制。。。
有什么我不理解或出错的地方吗?如果不是,它是如何容易实现的(考虑到我从零开始,并且我必须迁移一个旧的遗留用户存储(?
您有几个用户管理选项:
- 正如您所说-使用Asp NET标识
- 使用实体框架
- 使用自己创建的自定义逻辑
选项1&2有很多例子,每个例子都有一个快速的开始,所以我不会深入讨论。
选项3-自定义实现。我们最终站在了我们这边。我们有很多自定义的东西(感觉与扩展/覆盖EF方法无关(,我们不需要Asp NET Identity,所以决定使用自定义实现。
或多或少,我们有一个数据库,用来容纳我们的用户。EF用于访问数据库(可与PostgreSQL、SQL Server等一起使用,因此您在这里可以自由使用(和自定义服务,这些服务用于CRUD操作和表所需的任何其他操作。
IdentityServer允许您连接它正在使用的几乎每个服务/商店的自定义实现:
services.AddIdentityServer()
.AddInMemoryCaching()
.AddProfileService<ProfileService>()
.AddClientStoreCache<ClientStore>()
.AddResourceStoreCache<ApiResourceStore>()
所有这些都是它们接口的自定义实现。此外,您还可以自由修改实际登录的AccountController
,这样您就可以在那里连接用户服务,并根据自己的数据库进行检查。
所以基本上,这里的方法取决于你,你的时间框架等。