IdentityServer4 Usermanagement with separate MVC Client (Asp



经过大量的阅读和反复试验,我的目标设计开始工作:

  1. IdentityServer4(与AspNetIdentity独立)与IdentityUser数据库
  2. MVC客户端(单机版),这是用户的前端,目前没有数据库链接
  3. 1-n 个 WebAPI,它为 MVC 客户端提供功能并拥有自己的数据库

目前,我使用已经存在的IdentityUser数据库并将IS4指向该数据库,手动添加了角色和声明以进行测试。

我的问题是关于注册新用户的最佳实践。

由于 MVC 客户端是用户的前端,因此此处应显示指向用户注册的链接。

但是注册在技术上在哪里完成?

  1. 我应该在 MVC 客户端(使用默认的 IdentityUser 注册)中执行此操作并将数据库指向 IS4 数据库或
  2. 我是否应该在 IS4 应用程序中添加一个寄存器函数,以使 MVC 客户端没有任何数据库依赖项,并将 MVC 客户端"寄存器"链接指向此 IS4 寄存器函数?

基本上,IdentityServer 有两个职责:

  1. 对用户进行身份验证
  2. 授权客户端

IdentityServer 的"问题"在于用户不局限于一个应用程序。虽然MVC网站可能是您的前线,但IdentityServer不会将用户与特定应用程序联系起来。通过身份验证后,用户可以访问使用 IdentityServer 作为身份验证服务器的所有应用程序。

那么在MVC网站上注册用户有意义吗?可能不是,因为用户也可以访问(未来的)"mvc2"网站。

IdentityServer 的创建者承认了这一点,因此他们创建了 PolicyServer:

我们认为,将"身份和访问管理"紧密耦合在一个 单一解决方案是错误的方法。这两个问题应该是 分明分开。

换句话说:身份验证是身份服务器的一部分,授权(用户)不是。

回到问题,用户的注册应该由IdentityServer管理。因为这是唯一有权访问身份存储的应用程序。此外,用户还可以注册而无需被应用程序重定向。

关键是如何管理(用户的)授权。这实际上不是IdentityServer的一部分。我不会详细介绍,因为这超出了问题的范围。

但是要回答您的问题,我会做什么(包括电子邮件验证,但没有自动登录):

向 IdentityServer 添加注册功能并实现 ReturnUrl(就像登录一样)。

在您的 mvc 网站上添加一个指向 IdentityServer 上的注册功能的链接。让用户在IdentityServer中注册,发送电子邮件验证链接,将用户发送到登录页面(保留返回URL),允许用户在注册并登录后重定向回mvc网站。

如何为注册用户添加授权是一个不同的问题。

我不会互换使用"用户管理"和"用户注册"。用户管理不仅仅是注册。但要回答你的问题:

我应该在MVC客户端中执行此操作(使用默认的IdentityUser) 注册)并将数据库指向 IS4 数据库或

你可以,而且这不会有什么大问题。这将在很大程度上取决于您的业务需求,但最常见的情况是,我看到身份提供程序(在本例中为IdentityServer4)中内置了"用户注册"。

最新更新