Microsoft Identity 和 Identity Server 4 过程流关系
Microsoft Identtiy & Identity Server 4 process flow relationships
我正在使用 Aspnet Core 构建一系列微服务。移动应用程序、桌面应用程序和 Web 应用程序将使用 Http REST APIs.
上的服务
对于用户身份验证,我正在使用 Aspnet Core Identity 平台,但我通过 REST API 公开了用户帐户的创建。客户端使用凭据信息进行 REST 调用,我的 API 使用 Microsoft Identity API 来配置用户。用户将被授权使用 IdentityServer4 使用身份验证服务器访问各个资源服务器。
我有两个问题无法从安全角度找到明确的指导。使用 Microsoft Identity 进行用户创建的 Aspnet Core 项目是否应该位于独立于通过 IdentityServer4 处理身份验证的项目的 Aspnet Core 项目中?将两者分开是否有缺点,我需要考虑?
Microsoft Identity API 具有模板和 Razor 视图,可用于从服务器端角度处理身份验证,包括帐户创建或登录时的重定向等。如果我正在做所有事情通过 SPA 或客户端本机应用程序,仅提供接受用户信息的 POST API 是否有任何问题,通过 UserManager<T>
和 returns 创建帐户 UserId
?
我想提供一个专用的登录页面,类似于 FB/Google/Twitter 等,以便在任何想要授权用户使用我的服务的应用程序中进行身份验证。不过,我通常不会将帐户创建视为 OAuth 流程的一部分。您是否允许重定向到帐户创建页面,在成功创建帐户后重定向回客户端,或者该过程通常仅用于通过 OAuth 流程进行身份验证?
我建议考虑为 IDS4 和 ASP.NET Identity 使用一项服务,因为它们可以集成并为您提供所需的全部功能(身份验证和用户管理)。
IDS4 有相关的例子和很好的文档。
对我来说,我认为将它们分开是一种过度工程。
一个例子:当 IDS4 为用户生成访问令牌时,您应该获取声明、角色并验证用户名和密码,所有这些都存储在 ASP.NET Identity 中。
因此,有关更多详细信息,您可以查看 Identity Server 4 的文档:http://docs.identityserver.io/en/latest/quickstarts/0_overview.html
或者很高兴查看我的小博客 post,我试图提供一些更详细的步骤。
https://feras.blog/how-to-use-asp-net-identity-and-identityserver4-in-your-solution/
从 IDS4 link 开始,因为它可能就足够了:)
考虑安全管理 UI 的要点是如何保护 UI。今天最安全的方法是 cookie-based auth with same-site cookie(MVC 默认使用的方式)。考虑何时以及是否选择无服务器 SPA 模式。对于管理 purposes-app 具有严格的后端比 token-based 访问分布式 api-s.
更安全
关于应用程序托管,@VidmantasBlazevicius 是完全正确的,没有唯一的策略:在一个应用程序中托管所有服务更简单,因此它更适合中等负载的系统。但是随着用户和身份验证请求数量的增加,您可能想要扩展,将管理 UI 与身份验证分开是处理该问题的方法之一。
我正在使用 Aspnet Core 构建一系列微服务。移动应用程序、桌面应用程序和 Web 应用程序将使用 Http REST APIs.
上的服务对于用户身份验证,我正在使用 Aspnet Core Identity 平台,但我通过 REST API 公开了用户帐户的创建。客户端使用凭据信息进行 REST 调用,我的 API 使用 Microsoft Identity API 来配置用户。用户将被授权使用 IdentityServer4 使用身份验证服务器访问各个资源服务器。
我有两个问题无法从安全角度找到明确的指导。使用 Microsoft Identity 进行用户创建的 Aspnet Core 项目是否应该位于独立于通过 IdentityServer4 处理身份验证的项目的 Aspnet Core 项目中?将两者分开是否有缺点,我需要考虑?
Microsoft Identity API 具有模板和 Razor 视图,可用于从服务器端角度处理身份验证,包括帐户创建或登录时的重定向等。如果我正在做所有事情通过 SPA 或客户端本机应用程序,仅提供接受用户信息的 POST API 是否有任何问题,通过 UserManager<T>
和 returns 创建帐户 UserId
?
我想提供一个专用的登录页面,类似于 FB/Google/Twitter 等,以便在任何想要授权用户使用我的服务的应用程序中进行身份验证。不过,我通常不会将帐户创建视为 OAuth 流程的一部分。您是否允许重定向到帐户创建页面,在成功创建帐户后重定向回客户端,或者该过程通常仅用于通过 OAuth 流程进行身份验证?
我建议考虑为 IDS4 和 ASP.NET Identity 使用一项服务,因为它们可以集成并为您提供所需的全部功能(身份验证和用户管理)。
IDS4 有相关的例子和很好的文档。
对我来说,我认为将它们分开是一种过度工程。
一个例子:当 IDS4 为用户生成访问令牌时,您应该获取声明、角色并验证用户名和密码,所有这些都存储在 ASP.NET Identity 中。
因此,有关更多详细信息,您可以查看 Identity Server 4 的文档:http://docs.identityserver.io/en/latest/quickstarts/0_overview.html
或者很高兴查看我的小博客 post,我试图提供一些更详细的步骤。 https://feras.blog/how-to-use-asp-net-identity-and-identityserver4-in-your-solution/
从 IDS4 link 开始,因为它可能就足够了:)
考虑安全管理 UI 的要点是如何保护 UI。今天最安全的方法是 cookie-based auth with same-site cookie(MVC 默认使用的方式)。考虑何时以及是否选择无服务器 SPA 模式。对于管理 purposes-app 具有严格的后端比 token-based 访问分布式 api-s.
更安全关于应用程序托管,@VidmantasBlazevicius 是完全正确的,没有唯一的策略:在一个应用程序中托管所有服务更简单,因此它更适合中等负载的系统。但是随着用户和身份验证请求数量的增加,您可能想要扩展,将管理 UI 与身份验证分开是处理该问题的方法之一。