在基于Identity Server 4的基础结构上注册新用户时的最佳实践是什么?

时间:2020-07-18 13:12:51

标签: asp.net-core identityserver4

我正在添加Identity Server 4实现以为ASP.NET Core Web API提供身份验证和授权。客户端将是本机iOS应用程序,MVC Web应用程序,以及稍后的Angular SPA。

我能够使用AppAuth以“脱机访问”方式向iOS客户端提供令牌-很棒。

我只是不确定要做出的某些建筑选择

1 /应该在哪里进行新用户注册?为了安全起见,文献建议将IS4服务器限制为登录和注销端点。这是否意味着客户端或API应该在商店中处理用户的创建?我以为IS4的全部目的是客户端和API无法访问商店?在系统中唯一有权访问商店的部分来处理用户的添加和修改是合理的,不是吗?

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

3 /将Identity Server应用程序托管在客户端应用程序所在的域的子域上是否安全?该API已经在同一域的另一个子域中。

谢谢

2 个答案:

答案 0 :(得分:0)

1 /应该在哪里进行新用户注册?为了安全起见,文献建议将IS4服务器限制为登录和注销端点。这是否意味着客户端或API应该在商店中处理用户的创建?我以为IS4的全部目的是客户端和API无法访问商店?在系统中唯一有权访问商店的部分来处理用户的添加和修改是合理的,不是吗?

您可以扩展IDS4以添加用户管理。对于IDS4 docs,它是一种中间件,它将符合规范的OpenID Connect和OAuth 2.0端点添加到任意ASP.NET Core应用程序中。但这并不意味着您不能扩展它。 Here是一个示例。

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

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

3 /将Identity Server应用程序托管在客户端应用程序所在的域的子域上是否安全?该API已经在同一域的另一个子域中。

这又与安全无关,更多的是可用性/可伸缩性

答案 1 :(得分:0)

我的想法如下:


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

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

  • 3/ 将身份服务器应用托管在子域上是否安全 到客户端应用程序所在的域? API 已经开启 同一域上的另一个子域。
  • 建议:如果您为多个组织服务,那么 IdS 可以在不同的域中,否则,通常做法是在子域中。
相关问题