我希望在我的ASP.NET Core MVC web应用程序中使用IdentityServer4进行身份验证,但用户注册流程似乎很别扭。大多数需要用户注册的网站不会将您重定向到单独的网站(例如Facebook、Twitter等)以使用本地用户帐户进行注册。
一种解决方案是在与我的MVC客户端相同的进程中托管IdentityServer4,但这是不被推荐的。
是否有任何使用IdentityServer4进行本地用户注册的好的现实世界示例?
我希望在我的ASP.NET Core MVC web应用程序中使用IdentityServer4进行身份验证,但用户注册流程似乎很别扭。大多数需要用户注册的网站不会将您重定向到单独的网站(例如Facebook、Twitter等)以使用本地用户帐户进行注册。
一种解决方案是在与我的MVC客户端相同的进程中托管IdentityServer4,但这是不被推荐的。
是否有任何使用IdentityServer4进行本地用户注册的好的现实世界示例?
IdentityServer 用于验证现有用户,而不是创建新用户。 在我们的用例中,有三个项目参与其中:
通过对API的调用来创建用户,并在身份提供者中创建适当的结构。 我们的身份验证服务器在验证令牌请求时调用身份提供者。 我们的API使用身份验证服务器来保护资源,使用身份提供者检索关于该用户的信息(例如权限),这些信息不能作为声明(claims)包含。
这样,我们的身份提供者可以跨项目共享(具有不同角色的单个用户库),而 Identity Server 纯粹用于验证用户。所有用户管理功能属于其他位置。
编辑: @peyman 我们没有做任何特别突破性的事情:只是使用 aspnet core identity 框架 (http://odetocode.com/blogs/scott/archive/2013/11/25/asp-net-core-identity.aspx)。
IUserStore
和 UserManager
是主要驱动程序。当创建用户时,它们被分配一个角色,对于我们来说,这基于请求创建该用户的应用程序。我们的 IUserStore
实现将是 IdentityServer 在验证身份时最终调用的内容,提供的数据用于构建声明。我们的资源API使用基于声明的授权的 Policies
相对简单地受到保护(https://learn.microsoft.com/en-us/aspnet/core/security/authorization/claims)。