2026-04-27 02:29:42 +08:00

112 lines
4.0 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 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
}