Skip to content

Identity Server 总览

Identity Server 文档的总入口——涵盖 OAuth 2.0 / OpenID Connect 认证中心的架构、端点体系、授权类型、资源配置和可替换服务。

适用场景

  • 需要自建 OAuth 2.0 / OpenID Connect 认证中心(签发 Token、授权码流程)
  • 多个应用需要统一的单点登录(SSO)入口
  • 需要了解 Identity Server 的整体架构和模块边界
  • 需要评估哪些部分可以替换为自定义实现

核心问题

Identity Server 是一个独立的认证中心。它回答三个问题:

  1. 你是谁? — 通过登录页面验证用户身份,生成 ClaimsPrincipal
  2. 你能访问什么? — 根据客户端申请的作用域和用户的身份资源,决定令牌中包含哪些声明
  3. 我怎么信你? — 签发 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持久化客户端/资源/授权码/刷新令牌等生产环境建议替换

推荐阅读顺序

  1. 快速开始 — 先跑通一个最小认证中心
  2. 客户端与资源 — 理解 Client、Scope、Resource 三层配置模型
  3. 授权类型 — 按需深入每种授权模式
  4. 身份声明 — 理解 Identity Server 产出的 claims 数据结构
  5. JWT 令牌 — 理解底层签名和校验机制

当前边界

  • 已落地:6 个标准端点、4 种内置授权类型 + 扩展授权 + 密码授权、完整的三层资源模型(Client/IdentityResource/ApiScope/ApiResource)、配置文件加载、内存存储实现、可替换的 12 个服务接口 + 8 个存储接口
  • 已支持但文档未展开IRefreshTokenServiceIAuthorizationCodeServiceIClaimsServiceIConsentService 的自定义实现细节、数据库存储替换的完整案例
  • 当前未覆盖:设备授权流程(Device Authorization)、Token 内省(Introspection)、Token 撤销(Revocation)、推送授权(Pushed Authorization)

相关专题