Identity Server 总览
Identity Server 文档的总入口——涵盖 OAuth 2.0 / OpenID Connect 认证中心的架构、端点体系、授权类型、资源配置和可替换服务。
适用场景
- 需要自建 OAuth 2.0 / OpenID Connect 认证中心(签发 Token、授权码流程)
- 多个应用需要统一的单点登录(SSO)入口
- 需要了解 Identity Server 的整体架构和模块边界
- 需要评估哪些部分可以替换为自定义实现
核心问题
Identity Server 是一个独立的认证中心。它回答三个问题:
- 你是谁? — 通过登录页面验证用户身份,生成
ClaimsPrincipal - 你能访问什么? — 根据客户端申请的作用域和用户的身份资源,决定令牌中包含哪些声明
- 我怎么信你? — 签发 JWT 令牌,资源服务器通过 JWKS 端点获取公钥校验签名
它与应用内认证(JWT Bearer / Cookie)的区别在于——Identity Server 是签发令牌的服务端,而应用内认证是校验令牌的消费端。两者配合使用:Identity Server 签发 Token → 客户端携带 Token 访问资源服务器 → 资源服务器用 JWT Bearer 认证校验 Token。
模块地图
架构总览
text
客户端请求
│
▼
IdentityServerMiddleware(路由到匹配的端点处理器)
│
├── TokenEndpoint ───────── 签发令牌(密码/授权码/客户端凭证/刷新令牌)
├── AuthorizeEndpoint ───── 授权码流程入口(未登录→跳登录页,未同意→跳同意页)
├── UserInfoEndpoint ────── 返回当前 Token 对应的用户信息
├── DiscoveryEndpoint ───── OIDC 发现文档(.well-known/openid-configuration)
├── DiscoveryJwksEndpoint ─ JWKS 公钥集
└── EndSessionEndpoint ──── 结束会话
│
▼
响应生成器(Authorize/Token/Discovery/UserInfo)
│
▼
TokenService.createSecurityToken() → JWT 字符串核心模块
| 模块 | 职责 | 文档 |
|---|---|---|
| 端点体系 | 6 个 OAuth 2.0 / OIDC 标准端点 | 本页 |
| 授权类型 | 4 种内置授权 + 扩展授权 + 密码验证器 | 授权类型 |
| 客户端与资源 | Client、IdentityResource、ApiScope、ApiResource 配置 | 客户端与资源 |
| 签名凭据 | 对称/非对称密钥、多凭据注册、JWKS 公钥分发 | 客户端与资源 |
| 可替换服务 | IProfileService、ITokenService、各类 Store 和 Validator | 快速开始 |
可替换服务
Identity Server 通过 tryAddTransient 注册所有默认服务,你可以替换其中任意一个:
| 接口 | 职责 | 是否必须自定义 |
|---|---|---|
IProfileService | 获取用户声明,写入令牌 | 必须 |
IResourceOwnerPasswordValidator | 验证密码授权 | 使用密码模式时必须 |
IExtensionGrantValidator | 验证自定义授权类型 | 使用扩展授权时必须 |
ITokenService | 创建和序列化令牌 | 可选 |
IRefreshTokenService | 管理刷新令牌 | 可选 |
IAuthorizationCodeService | 管理授权码 | 可选 |
IConsentService | 管理用户同意记录 | 可选(授权码流程) |
IClaimsService | 收集令牌声明 | 可选 |
IUserSession | 管理用户登录态 | 可选 |
IKeyManager | 管理签名密钥 | 可选 |
IServerUrls | 提供服务器基础 URL | 可选 |
IClientStore 等 8 个 Store | 持久化客户端/资源/授权码/刷新令牌等 | 生产环境建议替换 |
推荐阅读顺序
- 快速开始 — 先跑通一个最小认证中心
- 客户端与资源 — 理解 Client、Scope、Resource 三层配置模型
- 授权类型 — 按需深入每种授权模式
- 身份声明 — 理解 Identity Server 产出的 claims 数据结构
- JWT 令牌 — 理解底层签名和校验机制
当前边界
- 已落地:6 个标准端点、4 种内置授权类型 + 扩展授权 + 密码授权、完整的三层资源模型(Client/IdentityResource/ApiScope/ApiResource)、配置文件加载、内存存储实现、可替换的 12 个服务接口 + 8 个存储接口
- 已支持但文档未展开:
IRefreshTokenService、IAuthorizationCodeService、IClaimsService、IConsentService的自定义实现细节、数据库存储替换的完整案例 - 当前未覆盖:设备授权流程(Device Authorization)、Token 内省(Introspection)、Token 撤销(Revocation)、推送授权(Pushed Authorization)
相关专题
- 需要理解身份数据模型 → 身份声明
- 需要理解 JWT 令牌 → JWT 令牌
- 需要理解资源服务器如何校验 Token → JWT Bearer 认证
- 需要理解安全文档的整体组织 → 安全与身份总览