Documentation
¶
Index ¶
- func AESDecryptBase64(cipherBase64, key string) (string, error)
- func CleanupGlobalTokenManager()
- func ReloadGlobalTokenManager(cfg *config.AuthConfig)
- type AuthConfig
- type DomainMapConfig
- type DomainMapList
- type DynamicToken
- type DynamicTokenConfig
- type SessionInfo
- type StaticToken
- type TokenManager
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AESDecryptBase64 ¶
AESDecryptBase64 AES解密Base64编码的密文
func CleanupGlobalTokenManager ¶
func CleanupGlobalTokenManager()
CleanupGlobalTokenManager 清理过期 token,会定期调用
func ReloadGlobalTokenManager ¶
func ReloadGlobalTokenManager(cfg *config.AuthConfig)
ReloadGlobalTokenManager 根据最新配置重载全局Token管理器
Types ¶
type AuthConfig ¶
type AuthConfig struct {
TokensEnabled bool `yaml:"tokens_enabled"` // 是否启用 token
TokenParamName string `yaml:"token_param_name"` // token 参数名
DynamicTokens DynamicToken `yaml:"dynamic_tokens"` // 动态 token 配置
StaticTokens StaticToken `yaml:"static_tokens"` // 静态 token 列表
}
AuthConfig 授权 token 配置
type DomainMapConfig ¶
type DomainMapConfig struct {
Name string `yaml:"name"` // 配置名称
Source string `yaml:"source"` // 源域名
Target string `yaml:"target"` // 目标域名
Protocol string `yaml:"protocol"` // 协议 http/https
Auth config.AuthConfig `yaml:"auth"` // 动态/静态 token 配置
ClientHeaders map[string]string `yaml:"client_headers"` // 前端请求使用
ServerHeaders map[string]string `yaml:"server_headers"` // 后端请求使用
}
DomainMapConfig 域名映射配置结构
type DynamicToken ¶
type DynamicToken struct {
EnableDynamic bool `yaml:"enable_dynamic"` // 是否启用动态 token
DynamicTTL time.Duration `yaml:"dynamic_ttl"` // 动态 token 有效期,例如 1h
Secret string `yaml:"secret"` // AES key
Salt string `yaml:"salt"` // salt
}
DynamicToken 动态 token 配置
type DynamicTokenConfig ¶
DynamicTokenConfig 动态 token 配置
type SessionInfo ¶
type SessionInfo struct {
Token string
ConnID string
FirstAccessAt time.Time
LastActiveAt time.Time
ExpireDuration time.Duration
IP string
URL string
OriginalURL string // 记录首次访问的URL
}
SessionInfo 会话信息
type StaticToken ¶
type StaticToken struct {
Token string `yaml:"token"` // token 值
ExpireHours time.Duration `yaml:"expire_hours"` // 例如 30s, 24h
EnableStatic bool `yaml:"enable_static"` // 是否启用静态 token
}
StaticToken 静态 token 配置
type TokenManager ¶
type TokenManager struct {
Enabled bool
TokenParamName string
StaticTokens map[string]*SessionInfo
DynamicTokens map[string]*SessionInfo
DynamicConfig *DynamicTokenConfig
// contains filtered or unexported fields
}
--------------------------- TokenManager 管理 token 与在线状态 ---------------------------
var GlobalTokenManager *TokenManager
全局Token管理器 全局Token管理器
func GetGlobalTokenManager ¶
func GetGlobalTokenManager() *TokenManager
GetGlobalTokenManager 安全获取全局Token管理器
func NewGlobalTokenManagerFromConfig ¶
func NewGlobalTokenManagerFromConfig(globalAuth *config.AuthConfig) *TokenManager
NewGlobalTokenManagerFromConfig 从全局配置创建Token管理器
func NewTokenManagerFromConfig ¶
func NewTokenManagerFromConfig(cfg *DomainMapConfig) *TokenManager
--------------------------- 初始化 ---------------------------
func (*TokenManager) CleanupExpiredSessions ¶
func (tm *TokenManager) CleanupExpiredSessions()
--------------------------- 清理过期 token ---------------------------
func (*TokenManager) GenerateDynamicToken ¶
func (tm *TokenManager) GenerateDynamicToken(urlPath string) (string, error)
--------------------------- 生成动态 token ---------------------------
func (*TokenManager) KeepAlive ¶
func (tm *TokenManager) KeepAlive(token, connID, ip, urlPath string)
--------------------------- KeepAlive 更新会话信息 ---------------------------
func (*TokenManager) ValidateToken ¶
func (tm *TokenManager) ValidateToken(token, urlPath, connID string) bool
--------------------------- 验证 token(结合在线状态) ---------------------------