# g2rain-iam(IAM:iam, sso)

g2rain-iam 是 G2rain 平台的身份认证与授权管理服务,提供统一的 OAuth2/OIDC 认证能力、JWT 令牌签发/验证、以及与前端/网关协同的访问控制与 SSO(单点登录)流程。

# 核心能力

  • OAuth2 认证授权体系
    • 支持授权码模式、客户端凭证模式、刷新令牌模式
    • 授权码的生成、存储与校验
    • 完整的令牌生命周期:生成、验证、刷新、撤销
  • JWT 令牌管理
    • 支持椭圆曲线签名算法:ES256 / ES384 / ES512
    • 支持多密钥与密钥轮换(TokenKeyManager
    • 通过 Nacos 配置中心动态刷新 JWT 密钥配置
  • 认证服务与会话管理
    • 基于 Redis 的分布式会话存储(示例会话有效期 24 小时)
    • 支持登录状态跟踪
  • 页面渲染支持
    • FreeMarker 登录页与授权同意页
    • 支持国际化页面显示

# 关键配置:JWT 密钥

JWT 密钥通过 Nacos 管理(示例结构):

token:
  keys:
    - key-id: yEMzeGLlhMpK5GxQKP5Fhg7JH9eALB7BK2BkadTOUxw
      algorithm: ES256
      active: true
      public-key: |
        -----BEGIN PUBLIC KEY-----
        ...
        -----END PUBLIC KEY-----
      private-key: |
        -----BEGIN PRIVATE KEY-----
        ...
        -----END PUBLIC KEY-----

# OAuth2 与令牌端点(典型调用)

授权码模式(简化示例):

# 1) 授权端点
GET /auth/authorize?clientId=...&redirectUri=...&response_type=code&state=...

# 2) 登录/授权
POST /auth/login
Content-Type: application/x-www-form-urlencoded
clientId=...&redirectUri=...&username=...&password=...&state=...

# 3) 回调拿到 code
# http://example.com/callback?code=...&state=...

# 4) 换 token(同时携带 DPoP)
POST /auth/token
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code&code=...&client_public_key=...
DPoP: <dpop_proof_jwt>
application-DPoP: <application_dpop_proof_jwt>

同时也支持:

  • 客户端凭证模式:POST /auth/token
  • 刷新令牌模式:POST /auth/token

# 环境要求(快速开始)

  • Java:25+
  • Maven:3.6+
  • Redis:6.0+
  • Nacos:2.0+