IdentityServer4的用户注册过程

DMa*_*ion 14 identityserver4

我想在我的ASP.NET Core MVC Web应用程序中使用IdentityServer4进行身份验证,但用户注册过程似乎很尴尬.如果您使用本地用户帐户,大多数需要用户注册的网站都不会重定向您执行单独的网站(例如Facebook,Twitter等)进行注册.

一种解决方案是在与我的MVC客户端相同的进程中托管IdentityServer4,但不鼓励这样做.

IdentityServer4有本地用户注册的真实世界示例吗?

Mas*_*ton 20

IdentityServer用于验证现有用户,而不是真正创建新用户.在我们的用例中,我们有3个项目参与:

  • 身份服务器
  • 受保护的API
  • 身份提供者(aspnet核心身份)项目

用户是通过调用API创建的,API在身份提供者中创建适当的结构.我们的身份服务器在验证令牌请求时调用身份提供者.我们的API使用身份服务器来保护资源,我们的身份提供者可以检索我们可能需要的有关未包含为声明的用户的信息(例如,权限).

通过这种方式,我们的身份提供者可以跨项目共享(一个用户群具有不同的角色),而Identity Server纯粹用于对用户进行身份验证.所有用户管理功能都属于别处.


编辑:@peyman我们没有做任何特别突破性的事情:只使用aspnet核心身份框架(http://odetocode.com/blogs/scott/archive/2013/11/25/asp-net-core-identity .aspx).

IUserStoreUserManager这带来的主要驱动力.创建用户时,会为其分配一个角色,对我们而言,该角色基于哪个应用程序请求创建该用户.我们的实现IUserStore是IdentityServer在验证身份时最终将调用的内容,并且IdentityServer使用所提供的数据来构建声明.我们的资源API使用Policies基于声明的授权进行相对简单的保护(https://docs.microsoft.com/en-us/aspnet/core/security/authorization/claims)

  • 这真的很有帮助。我仍在努力想象使用 IdentityServer 发出身份和访问令牌的整个流程,如何将用户身份与应用程序特定权限等隔离。因此,您的 IdentityServer 调用您的 IdentityProvider。你的身份提供者是一个单独的 API 还是你的主要 asp.net 网站的一部分?那么你如何保护你的身份提供者? (6认同)