本教程聚焦统一身份认证和授权解决方案。在相对复杂的系统架构中,通常会将认证作为单独应用开发,即实现统一认证平台。统一认证平台的实现目前已有成熟行业通用标准:OAuth 2.0 和 OpenID Connect 协议。
在解决方案中,统一认证平台可能还被称为认证服务(Authentication Service)、身份提供商(Identity Provider)或身份验证服务中心(Authentication Service Center)。
统一认证平台本质上是一个专门处理身份验证和授权逻辑的中心化服务,负责用户登录、认证、颁发令牌以及管理会话等任务,提供一致、安全、高效的身份认证服务。
在项目开发过程中,身份认证和授权是一个重点,同时也是一个难点。开始学习本教程,将是一次挑战与乐趣并存的学习旅程,让我们现在就开始吧!相信您会收获满满!
1. 系统掌握 OAuth 2.0 & OpenID Connect 核心规范
2. 快速搭建可用于生产环境的身份验证服务器
3. ABP Framework应用模块开发实战:实现 OpenIddict 管理模块
该部分介绍 OAuth 2.0 和 OpenId Connect 核心规范;详细解释 OAuth 2.0 和 OpenId Connect 每一种授权类型,以及 OAuth 2.0 扩展协议 PKCE 和设备码授权;分析不同授权类型适用的场景。
该部分涉及以下核心主题:
该部分基于 ASP.NET Core + OpenIddict 开发统一认证平台;详解 OpenIddict 使用、配置和集成;结合项目开发对 OpenIddict 核心源码进行解析,探索实现原理。
该部分涉及以下核心主题:
ABP Framework 通过提供 Volo.Abp.OpenIddict 应用模块,实现与 OpenIddict 的集成,并将其作为分层架构启动模板中认证服务器 AuthServer 依赖的核心应用模块。
该部分涉及以下核心主题:
ABP Framework + Volo.Abp.OpenIddict
开发统一认证平台Volo.Abp.OpenIddict 应用模块提供的功能相对底层,对客户端应用程序、作用域管理只提供了领域层、基础设施层,在本部分中,在 Volo.Abp.OpenIddict 应用模块之上开发应用服务层和UI层,实现对客户端及其权限、作用域的在线管理。
该部分涉及核心主题:
本章主要介绍 OAuth 协议的核心概念,授权类型以及 OAuth 协议的基本原理。
本章重点介绍了 OAuth 2.0 授权码授权的流程和安全性。通过授权码,客户端应用可以在不暴露访问令牌的情况下,安全地获取用户授权。详细步骤包括用户身份验证、授权码获取以及访问令牌的交换,同时解释了前端通道和后端通道在授权过程中的作用。
本章重点介绍了 OAuth 2.0 授权码授权的流程和安全性。通过授权码,客户端应用可以在不暴露访问令牌的情况下,安全地获取用户授权。详细步骤包括用户身份验证、授权码获取以及访问令牌的交换,同时解释了前端通道和后端通道在授权过程中的作用。
本章重点介绍了客户端凭证授权的流程和适用场景。客户端通过身份认证获取访问令牌,适用于应用自身需要与服务提供商互动的情况。
本章重点介绍隐式授权流程,该类型直接在浏览器中完成所有步骤,令牌对访问者可见,不支持刷新令牌。由于访问令牌可能被暴露,推荐使用 OAuth 2.0 + PKCE 作为替代方案。
本章重点介绍了 PKCE 的概念、实现原理及其在 OAuth 2.0 协议中的应用。PKCE 通过动态生成的凭证密钥,增强了公共客户端的安全性,防止授权码被拦截。
本章重点介绍了OAuth 2.0的四种授权类型及其适用场景,详细解释了如何通过授权码、密码凭证、客户端凭证和隐式授权来安全地访问用户数据。
本章重点介绍了OAuth 2.0协议中的访问令牌,包括如何使用访问令牌发起授权请求,以及如何刷新访问令牌。
本章重点介绍了OAuth 2.0规范的发展历程和OAuth 2.1的更新要点。随着技术进步和安全需求的提高,OAuth 2.1对原有规范进行了重要改进,包括强化客户端认证、去除不安全流程、精确匹配重定向URI等,以适应现代应用的安全需求。
本章重点介绍了 OAuth 2.0 设备授权流程,这是一种适用于输入受限设备的授权方式。用户可以通过扫描二维码或输入用户码在其他设备上完成授权,而设备客户端通过轮询获得访问令牌,以实现对在线账户的安全访问。
本章重点介绍了OAuth 2.0如何通过多种设计机制来确保授权流程的安全性。包括前端与后端通道的使用、HTTPS的安全传输、State参数的请求验证,以及PKCE在单页应用程序中的应用,这些都是为了防范常见的OAuth攻击方式。
本章重点介绍了OpenID Connect协议的核心概念和工作流程。OIDC通过新增id token和UserInfo端点,在OAuth 2.0的基础上实现了用户身份的认证。它定义了授权终结点、令牌终结点和用户信息终结点,以及与之相关的授权流程,包括授权码、隐式和混合授权流程,以满足不同应用场景的需求。
本章重点介绍了OIDC中的服务发现机制,通过配置端点实现客户端与OP之间的动态交互。客户端利用从配置端点获取的信息,无需硬编码即可与不同的OP进行通信,简化了配置过程并增强了系统的适应性。
本章重点介绍了OIDC的用户会话管理机制,涵盖了从用户认证到会话结束的整个流程。OIDC通过身份提供者进行用户认证,颁发必要的令牌,并支持会话的建立、维护和刷新。客户端负责监控会话状态,并在用户注销时,通过单点注销和后端服务的注销逻辑,确保所有会话信息和令牌被清除。
本章重点介绍了OpenID Connect如何作为OAuth 2.0的扩展,提供身份认证功能。它通过定义新的授权范围和响应类型,以及引入混合授权类型,增强了OAuth 2.0的安全性和灵活性。OpenID Connect使用JWT格式的身份令牌和用户信息终结点,允许客户端应用获取用户详细信息。
本章重点介绍了 OpenID Connect 中身份令牌的概念和功能,它们是用户身份的数字化表示,包含关键属性以确保安全性和认证强度。身份令牌支持单点登录,允许用户在不同客户端间无缝切换。
本章重点介绍了统一认证平台的构建需求和核心功能,强调了在多应用程序集成和跨域认证场景下,统一认证平台的重要性。平台通过提供标准化的认证协议和单点登录功能,简化了开发和维护工作,同时增强了系统的安全性和合规性。
本章重点介绍了统一认证中心的概念、OAuth和OpenID Connect的流程,以及在ASP.NET Core中实现这些认证协议的技术选型。尽管ASP.NET Core提供了OAuth 2.0认证方案,但服务器端实现需要自定义开发。IdentityServer和OpenIddict是两个常用的开源类库,但考虑到IdentityServer的商用转变,本教程选择了OpenIddict来构建统一认证中心。