项目

分层解决方案:认证

本文档中提到的一些功能可能在免费版本中不可用。我们使用 * 符号表示该功能在 团队版高级版 许可证中可用。

分层解决方案模板已为认证进行了完整配置。所有服务和应用程序均配置为使用 OpenIddict 库进行认证。它们按照通用的方式进行认证配置。本文档解释了这种通用的认证结构。

如果在创建解决方案时选择了 分层 选项,解决方案将包含 *.AuthServer 项目。

OpenIddict

OpenIddict 是一个开源库,为在应用程序中实现 OpenID Connect 服务器提供了一种简单便捷的方法。ABP 提供了内置模块(OpenIddictOpenIddict UI *)以将 OpenIddict 集成到解决方案中。

领域层

分层解决方案模板的领域层负责 OpenIddict 的定义(应用程序、作用域等)。同时,它提供了 OpenIddictDataSeedContributor 类来初始化数据。它会为解决方案创建默认的客户端(应用程序)和作用域。

OpenIddict UI * 模块仅当您在创建解决方案时选择了 OpenIddict UI 模块才会被添加。

new-solution-openiddict-module

OpenIddict UI * 模块提供了一个用户界面来管理 OpenIddict 实体,例如应用程序、作用域等。您可以从应用程序界面管理这些实体。

openiddict-ui

认证应用程序

如果您在解决方案创建过程中选择了 分层 选项,解决方案可能会包含一个外部认证服务器 (auth-server) 应用程序。否则,认证服务器将集成到其中一个 Web 应用程序中。

认证服务器负责令牌的生成、验证以及用户账户管理(例如登录、注册)。它使用账户账户专业版 *模块。账户专业版 *模块额外支持社交登录(例如 Google、Facebook)。社交登录功能可以从应用程序的用户界面直接启用、禁用和配置。

account-external-provider

认证流程

解决方案中的应用程序根据应用程序类型使用不同的认证流程:

  • MVC UI Web 应用程序: 使用混合流程(OpenID Connect 认证)进行用户认证。
  • SPA 和 Swagger 应用程序: 使用授权码流程来认证用户。

一旦用户登录系统并从认证服务器获取令牌,*.HttpApi.Host 应用程序将使用 JWT Bearer 认证来授权用户的操作。


在本文档中