Asp.net core 在基于Identity Server 4的基础架构上注册新用户时,最佳做法是什么?

Asp.net core 在基于Identity Server 4的基础架构上注册新用户时,最佳做法是什么?,asp.net-core,identityserver4,Asp.net Core,Identityserver4,我正在添加Identity Server 4实现,为ASP.NET核心Web API提供身份验证和授权服务。客户端将是本机iOS应用程序、MVC web应用程序,以及以后可能出现的角度SPA 我能够使用AppAuth在“离线访问”的基础上向iOS客户端提供令牌,这非常好 我只是不确定要做出的一些架构选择: 1/新用户的注册应在哪里进行?为了安全起见,文献建议IS4服务器仅限于登录和注销端点。这是否意味着客户端或API应该处理商店中用户的创建?我认为IS4的全部要点是客户端和API不能访问商店?用

我正在添加Identity Server 4实现,为ASP.NET核心Web API提供身份验证和授权服务。客户端将是本机iOS应用程序、MVC web应用程序,以及以后可能出现的角度SPA

我能够使用AppAuth在“离线访问”的基础上向iOS客户端提供令牌,这非常好

我只是不确定要做出的一些架构选择

1/新用户的注册应在哪里进行?为了安全起见,文献建议IS4服务器仅限于登录和注销端点。这是否意味着客户端或API应该处理商店中用户的创建?我认为IS4的全部要点是客户端和API不能访问商店?用户的添加和修改似乎是由系统中唯一可以访问存储的部分来处理的,不是吗

2/将(1)令牌(2)用户存储和(3)业务数据保存在同一数据库(不同的表但同一服务器上的同一数据库)是否安全?分开数据库更好吗

3/将Identity server应用托管在客户端应用所在域的子域上是否安全?该API已位于同一域的另一子域上

谢谢

1/新用户的注册应在哪里进行?为了安全起见,文献建议IS4服务器仅限于登录和注销端点。这是否意味着客户端或API应该处理商店中用户的创建?我认为IS4的全部要点是客户端和API不能访问商店?用户的添加和修改似乎是由系统中唯一可以访问存储的部分来处理的,不是吗

您可以扩展IDS4以添加用户管理。它是一个中间件,将符合规范的OpenID Connect和OAuth 2.0端点添加到任意ASP.NET核心应用程序中。但这并不意味着你不能扩展它。这是一个样本

2/将(1)令牌(2)用户存储和(3)业务数据保存在同一数据库(不同的表但同一服务器上的同一数据库)是否安全?分开数据库更好吗

这更多地取决于您的部署模型以及对可用性和可伸缩性的考虑,而不是安全性。我建议你多读一些书,以便做出最好的决定

3/将Identity server应用托管在客户端应用所在域的子域上是否安全?该API已位于同一域的另一子域上


这同样与安全无关,因为更多的是可用性/可伸缩性问题

我有以下想法:


  • 1/新用户的注册应在哪里进行?这个 文献建议IS4服务器仅限于登录和 出于安全目的,注销终结点。这是否意味着 客户端或API应该处理商店中用户的创建?我 认为IS4的全部要点是客户端和API没有 进入商店?添加和 用户的修改只能由系统中 可以进入商店吗
  • 建议:如果我从头开始应用程序,并且没有用户注册的现有接口,那么我更愿意将用户注册流作为IdS的一部分提供

  • 2/保存(1)令牌(2)用户存储和(3)安全吗 相同数据库中的业务数据-不同的表但相同 同一服务器上的数据库?分开数据库更好吗
  • 建议:两个选项都可以,但最好的一个是适合您的应用程序体系结构的。例如,如果我有面向服务或微服务体系结构,那么单独的数据库更可行。但是,如果只有一个应用程序作为用户注册点,而其他应用程序将使用该数据库作为用户存储,那么它已经是应用程序数据库的一部分。除非有一些限制,否则我可能更喜欢将IdS表放在单独的数据库中

  • 3/将Identity server应用程序托管在子域上是否安全 到客户端应用将驻留的域?API已经启动 此同一域上的另一个子域
  • 建议:如果您为多个组织提供服务,那么ID可以位于不同的域上,否则,通常做法是位于子域上

您的所有授权和身份验证请求都应通过您的IDP,如果您包括第三方身份验证(谷歌、微软等),您的IDP将重定向到外部提供商。如果您正在进行自己的身份验证/授权,您将需要实现一个userstore,您可以在您的IDP或一个单独的API中实现它,我认为在您的IDP中没有问题,但我想这取决于您希望如何严格地分离您的关注点。IDP的一个主要好处是联合,将使用多种不同登录方法的用户链接到一个用户帐户。我还没有研究过联邦,但它听起来非常强大。正如您可能已经收集到的,我不是一个专业的开发人员,这对我来说都是相当新的,您的评论和回答都有助于我的学习曲线。非常感谢,这非常有帮助。我一直在关注快速入门,其中一个让我将Asp.Net Identity用户存储添加到Identity Server项目中,因此我将继续此操作,并将用户管理添加到同一项目中。非常感谢您的建议!