112 lines
4.0 KiB
Go
112 lines
4.0 KiB
Go
// 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
|
||
}
|