// Package auth 定义 user-service 认证领域模型,不包含密码明文或三方 SDK 细节。 package auth // PasswordAccount 是用户主动设置密码后的密码身份记录。 // 登录入口使用 user.current_display_user_id 解析用户,不再维护独立账号命名空间。 type PasswordAccount struct { // UserID 是密码身份绑定的系统用户 ID。 UserID int64 // DisplayUserID 是登录时解析出的当前展示短号快照,不作为独立唯一账号命名空间持久化。 DisplayUserID string // PasswordHash 保存 bcrypt 等安全 hash,永远不保存密码明文。 PasswordHash string // HashAlg 标记 hash 算法,方便后续升级算法。 HashAlg string // CreatedAtMs 是密码身份创建时间。 CreatedAtMs int64 // UpdatedAtMs 是密码身份更新时间。 UpdatedAtMs int64 } // Token 表达 user-service 签发给 gateway 的登录结果。 // refresh token 原文只能出现在返回路径,持久化层必须保存 hash。 type Token struct { // UserID 是系统内部不可变用户 ID。 UserID int64 // DisplayUserID 是当前展示短号,可能是默认短号或有效靓号。 DisplayUserID string // DefaultDisplayUserID 是用户永久默认短号。 DefaultDisplayUserID string // DisplayUserIDKind 表示当前展示号来源。 DisplayUserIDKind string // DisplayUserIDExpiresAtMs 是当前靓号过期时间,默认短号为 0。 DisplayUserIDExpiresAtMs int64 // SessionID 是服务端 refresh session 标识。 SessionID string // AccessToken 是返回给 gateway/client 的 JWT。 AccessToken string // RefreshToken 是一次性轮换的 refresh token 原文,只能在响应中出现。 RefreshToken string // ExpiresInSec 是 access token 有效期秒数。 ExpiresInSec int64 // TokenType 固定为 Bearer。 TokenType string } // Session 表达服务端会话和 refresh token 生命周期。 type Session struct { // SessionID 是服务端会话主键。 SessionID string // UserID 是会话所属用户。 UserID int64 // RefreshTokenHash 是 refresh token 的 hash,持久化层不得保存原文。 RefreshTokenHash string // DeviceID 绑定 refresh token 轮换设备,防止跨设备复用。 DeviceID string // ExpiresAtMs 是 refresh session 过期时间。 ExpiresAtMs int64 // RevokedAtMs 非 0 表示会话已吊销。 RevokedAtMs int64 // CreatedAtMs 是会话创建时间。 CreatedAtMs int64 // UpdatedAtMs 是会话更新时间。 UpdatedAtMs int64 } // ThirdPartyIdentity 是 provider + subject 到用户的稳定绑定。 type ThirdPartyIdentity struct { // UserID 是绑定到的系统用户。 UserID int64 // Provider 是三方平台标识,例如 wechat。 Provider string // ProviderSubject 是 provider 内稳定用户标识。 ProviderSubject string // ProviderUnionID 是 provider 可选的跨应用联合 ID。 ProviderUnionID string // CreatedAtMs 是绑定创建时间。 CreatedAtMs int64 // UpdatedAtMs 是绑定更新时间。 UpdatedAtMs int64 } // LoginAudit 是登录注册链路的审计记录。 // 审计不能包含密码、三方 credential 或 refresh token 原文。 type LoginAudit struct { // RequestID 是 gateway 透传的请求 ID,用于串联审计。 RequestID string // UserID 是已知用户 ID,认证失败且未解析身份时可以为 0。 UserID int64 // LoginType 区分 password、third_party、refresh、logout 等链路。 LoginType string // Provider 只在三方登录链路中有值。 Provider string // Result 是 success 或 failed。 Result string // FailureCode 保存稳定错误 reason,不能写敏感凭证。 FailureCode string // ClientIP 是 gateway 观察到的客户端 IP。 ClientIP string // UserAgent 是客户端 UA。 UserAgent string // CreatedAtMs 是审计写入时间。 CreatedAtMs int64 } // ThirdPartyProfile 是三方凭证校验后的稳定身份结果。 type ThirdPartyProfile struct { // ProviderSubject 是三方平台内稳定身份。 ProviderSubject string // ProviderUnionID 是可选联合身份。 ProviderUnionID string }