# 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+