auth

package
v0.6.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 3, 2026 License: MIT Imports: 18 Imported by: 0

Documentation

Overview

Package auth 处理 Golem 的身份验证逻辑,支持 OAuth 2.0 流程及凭据持久化。

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BuildAuthorizeURL

func BuildAuthorizeURL(cfg OAuthProviderConfig, pkce PKCECodes, state, redirectURI string) string

BuildAuthorizeURL builds OAuth authorize URL with PKCE.

func DeleteAllCredentials

func DeleteAllCredentials() error

DeleteAllCredentials 清空整个身份验证存储并删除相关文件。

func DeleteCredential

func DeleteCredential(provider string) error

DeleteCredential 从存储中删除指定供应商的身份验证凭据。

func FilePath

func FilePath() string

FilePath 返回身份验证凭据存储文件的路径 (~/.golem/auth.json)。

func SaveStore

func SaveStore(store *Store) error

SaveStore 将身份验证存储持久化到磁盘。

func SetCredential

func SetCredential(provider string, cred *Credential) error

SetCredential 保存指定供应商的身份验证凭据到存储中。

Types

type Credential

type Credential struct {
	AccessToken  string    `json:"access_token"`            // 访问令牌
	RefreshToken string    `json:"refresh_token,omitempty"` // 刷新令牌(可选)
	Provider     string    `json:"provider"`                // 供应商名称(如 "openai")
	AuthMethod   string    `json:"auth_method"`             // 认证方法(如 "oauth")
	ExpiresAt    time.Time `json:"expires_at,omitempty"`    // 令牌过期时间
}

Credential 存储单个供应商的身份验证凭据(如访问令牌、刷新令牌等)。

func GetCredential

func GetCredential(provider string) (*Credential, error)

GetCredential 获取指定供应商的身份验证凭据。

func LoginBrowser

func LoginBrowser(cfg OAuthProviderConfig) (*Credential, error)

LoginBrowser 通过启动本地临时 HTTP 服务器并在浏览器中打开授权页面来完成 OAuth 登录。

func LoginDeviceCode

func LoginDeviceCode(cfg OAuthProviderConfig) (*Credential, error)

LoginDeviceCode completes OAuth login via device-code flow.

func RefreshAccessToken

func RefreshAccessToken(cred *Credential, cfg OAuthProviderConfig) (*Credential, error)

RefreshAccessToken refreshes OAuth access token when refresh token exists.

func (*Credential) IsExpired

func (c *Credential) IsExpired() bool

IsExpired 检查当前凭据是否已过期。

func (*Credential) NeedsRefresh

func (c *Credential) NeedsRefresh() bool

NeedsRefresh 检查凭据是否即将过期(5分钟内),需要刷新。

type OAuthProviderConfig

type OAuthProviderConfig struct {
	Issuer   string // 供应商的发行者 URL
	ClientID string // OAuth 客户端 ID
	Scopes   string // 请求的权限范围
	Port     int    // 本地回调服务器监听的端口
}

OAuthProviderConfig 定义了单个 OAuth 供应商的元数据。

func OpenAIOAuthConfig

func OpenAIOAuthConfig() OAuthProviderConfig

OpenAIOAuthConfig 返回 OpenAI OAuth 的默认配置。

type PKCECodes

type PKCECodes struct {
	CodeVerifier  string
	CodeChallenge string
}

PKCECodes holds verifier/challenge pair for OAuth PKCE.

func GeneratePKCE

func GeneratePKCE() (PKCECodes, error)

GeneratePKCE creates random verifier and S256 challenge.

type Store

type Store struct {
	Credentials map[string]*Credential `json:"credentials"` // 供应商名称到凭据的映射
}

Store 是身份验证凭据的磁盘存储容器。

func LoadStore

func LoadStore() (*Store, error)

LoadStore 从磁盘加载身份验证存储。如果文件不存在,则返回一个空的存储实例。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL