【问题标题】:Microsoft Identtiy & Identity Server 4 process flow relationshipsMicrosoft Identity 和 Identity Server 4 处理流程关系
【发布时间】:2019-06-03 19:07:36
【问题描述】:

我正在使用 Aspnet Core 构建一系列微服务。移动应用程序、桌面应用程序和 Web 应用程序将通过 Http REST API 使用服务。

对于用户身份验证,我使用的是 Aspnet Core Identity 平台,但我通过 REST API 公开了用户帐户的创建。客户端使用凭据信息进行 REST 调用,我的 API 使用 Microsoft 身份 API 来配置用户。用户将被授权通过使用 IdentityServer4 的身份验证服务器访问各个资源服务器。

我有两个问题无法从安全角度找到明确的指导。使用 Microsoft Identity 进行用户创建的 Aspnet Core 项目是否应该位于通过 IdentityServer4 处理身份验证的项目的独立 Aspnet Core 项目中?将两者分开是否有我需要考虑的缺点?

Microsoft Identity API 具有模板和 Razor 视图,可用于从服务器端的角度处理身份验证,包括帐户创建或登录时的重定向等。如果我通过 SPA 或客户端进行所有操作原生应用,只提供一个接受用户信息的 POST API,通过UserManager<T> 创建帐户并返回UserId,有什么问题吗?

我想提供一个专用的登录页面,类似于 FB/Google/Twitter 等,以便在任何想要授权用户使用我的服务的应用程序中进行身份验证。不过,我通常不会将帐户创建视为 OAuth 流程的一部分。您是否通常允许重定向到帐户创建页面,在成功创建帐户后重定向回客户端,或者该过程通常仅用于通过 OAuth 流程进行身份验证?

【问题讨论】:

  • 您正在考虑的方法没有任何问题,您可以将 IDS4 作为单独的项目或与用户管理相同的项目。所有这一切都取决于您,这就是为什么您没有找到太多关于此的信息的原因,因为它的问题过于宽泛和固执己见。

标签: c# asp.net-core oauth-2.0 asp.net-identity identityserver4


【解决方案1】:

我建议考虑为 IDS4 和 ASP.NET Identity 使用一项服务,因为它们可以集成并为您提供所需的全部功能(身份验证和用户管理)。

IDS4 有这方面的示例和良好的文档。

对我来说,我认为将它们分开是一种过度设计。

一个示例:当 IDS4 为用户生成访问令牌时,您应该获取声明、角色并验证用户名和密码,所有这些都存储在 ASP.NET Identity 中。

因此,有关更多详细信息,您可以查看 Identity Server 4 的文档:http://docs.identityserver.io/en/latest/quickstarts/0_overview.html

或者很高兴查看我的小博客文章,我试图提供一些更详细和逐步的内容。 https://feras.blog/how-to-use-asp-net-identity-and-identityserver4-in-your-solution/

从 IDS4 链接开始,因为它可能就足够了 :)

【讨论】:

  • 谢谢,我会整合它们。使用微服务,我试图避免跨服务共享数据库。如果我将它们拆分,那么我必须共享数据库,这将违反微服务设计模式。
  • 不客气。是的 没错,避免共享数据库是保留它们的另一个重要原因。
【解决方案2】:

考虑安全管理 UI 时的要点是如何保护该 UI。目前最安全的方法是使用同站点 cookie 的基于 cookie 的身份验证(MVC 默认使用的方式)。考虑一下何时以及是否选择无服务器 SPA 模式。出于管理目的 - 具有严格后端的应用程序比基于令牌的分布式 api-s 访问更安全。

关于应用程序托管,@VidmantasBlazevicius 绝对正确,没有唯一的策略:在一个应用程序中托管所有服务更简单,因此更适合中等负载系统。但是随着用户数量和身份验证请求的增加,您可能想要扩展,将管理 UI 与身份验证分开是处理此问题的方法之一。

【讨论】:

    猜你喜欢
    • 2021-11-11
    • 1970-01-01
    • 2018-06-27
    • 1970-01-01
    • 2021-01-22
    • 2018-02-02
    • 2021-08-02
    • 2021-06-29
    • 1970-01-01
    相关资源
    最近更新 更多