不透明令牌
解决什么问题
Section titled “解决什么问题”IAM 发行的 accessToken 是不透明令牌(opaque token):它本身不可读、不含用户信息。服务端通过 IamBearerTokenFilter 持令牌去 Redis 换取 IamPrincipal,避免把敏感身份数据编码进令牌。
- TokenRecord(record):
(sessionId, principal, expiresAt),是 Redis 中令牌对应的主体记录。 - AuthSession(record):
(sessionId, userId, clientType, clientInstance, ipAddress, userAgent, loginAt, lastSeenAt, expiresAt, revokedAt, logoutAt, revokeReason),提供revoked()/revoke(at,reason)/touch(at)。 - 令牌 TTL 由
iam.token.ttl(默认 8h,必须为正)控制;Redis 键前缀由iam.token.redis-prefix(默认iam,非空)配置。
请求携带 Authorization: Bearer <accessToken> → IamBearerTokenFilter → Redis 查 TokenRecord → 取出 IamPrincipal 注入安全上下文- TokenRecord / AuthSession / LoginResult:https://github.com/wbh123/iam/blob/main/muer-session/src/main/java/io/github/muer/session/
- IamBearerTokenFilter:https://github.com/wbh123/iam/blob/main/muer-spring-boot-autoconfigure/src/main/java/io/github/muer/autoconfigure/IamBearerTokenFilter.java