Documentation
¶
Index ¶
- Constants
- Variables
- func ValidateURI(baseURI string, redirectURI string) error
- type ACConfig
- type ACGenerate
- type ACGenerateDefault
- type ACInfo
- type ACManager
- type ACMemoryStore
- type ACStore
- type CCConfig
- type CCManager
- type Client
- type ClientMongoStore
- type ClientStore
- type DefaultClient
- type ImplicitConfig
- type ImplicitManager
- type MongoConfig
- type OAuthConfig
- type OAuthManager
- func (om *OAuthManager) CheckAccessToken(accessToken string) (token *Token, err error)
- func (om *OAuthManager) GenerateToken(cli Client, userID, scopes string, atExpireIn, rtExpireIn int64, ...) (token *Token, err error)
- func (om *OAuthManager) GetACManager() *ACManager
- func (om *OAuthManager) GetCCManager() *CCManager
- func (om *OAuthManager) GetClient(clientID string) (cli Client, err error)
- func (om *OAuthManager) GetImplicitManager() *ImplicitManager
- func (om *OAuthManager) GetPasswordManager() *PasswordManager
- func (om *OAuthManager) RefreshAccessToken(refreshToken, scopes string) (token *Token, err error)
- func (om *OAuthManager) RevokeAccessToken(accessToken string) (err error)
- func (om *OAuthManager) SetACGenerate(generate ACGenerate)
- func (om *OAuthManager) SetACStore(store ACStore)
- func (om *OAuthManager) ValidateClient(clientID, redirectURI string) (cli Client, err error)
- type PasswordConfig
- type PasswordManager
- type STATUS
- type Token
- type TokenBasicInfo
- type TokenGenerate
- type TokenGenerateDefault
- type TokenMongoStore
- func (tm *TokenMongoStore) Create(item *Token) (id int64, err error)
- func (tm *TokenMongoStore) GetByAccessToken(accessToken string) (*Token, error)
- func (tm *TokenMongoStore) GetByRefreshToken(refreshToken string) (*Token, error)
- func (tm *TokenMongoStore) Update(id int64, info map[string]interface{}) (err error)
- type TokenStore
Constants ¶
const ( // DefaultRandomCodeLen 默认随机码的长度 DefaultRandomCodeLen = 6 // DefaultACExpiresIn 默认授权码模式的授权码有效期(10分钟) DefaultACExpiresIn = 60 * 10 // DefaultATExpiresIn 默认授权码模式的访问令牌有效期(7天) DefaultATExpiresIn = 60 * 60 * 24 * 7 // DefaultRTExpiresIn 默认授权码模式的更新令牌有效期(30天) DefaultRTExpiresIn = 60 * 60 * 24 * 30 // DefaultIATExpiresIn 默认简化模式的访问令牌有效期(1小时) DefaultIATExpiresIn = 60 * 60 // DefaultCCATExpiresIn 默认客户端模式的访问令牌有效期(1天) DefaultCCATExpiresIn = 60 * 60 * 24 )
const (
// DefaultClientCollectionName 默认的客户端存储集合名称
DefaultClientCollectionName = "ClientInfo"
)
const (
// DefaultTokenCollectionName 默认的令牌存储集合名称
DefaultTokenCollectionName = "AuthToken"
)
Variables ¶
var ( // ErrClientNotFound Client not found ErrClientNotFound = errors.New("The client is not found.") // ErrACNotFound Authorization code not found ErrACNotFound = errors.New("The authorization code is not found.") // ErrACInvalid Authorization code invalid ErrACInvalid = errors.New("The authorization code is invalid.") // ErrCSInvalid Client secret invalid ErrCSInvalid = errors.New("The client secret is invalid.") // ErrATNotFound Refresh token not found ErrATNotFound = errors.New("The access token is not found.") // ErrATInvalid Access token invalid ErrATInvalid = errors.New("The access token is invalid.") // ErrATExpire Access token expire ErrATExpire = errors.New("The access token is expire.") // ErrRTNotFound Refresh token not found ErrRTNotFound = errors.New("The refresh token is not found.") // ErrRTInvalid Refresh token invalid ErrRTInvalid = errors.New("The refresh token is invalid.") // ErrRTExpire Refresh token expire ErrRTExpire = errors.New("The refresh token is expire.") )
Functions ¶
func ValidateURI ¶
ValidateURI 验证基础的Uri与重定向的URI是否一致
Types ¶
type ACConfig ¶
type ACConfig struct { RandomCodeLen int // 随机码的长度(用于生成授权码的随机码) ACExpiresIn int64 // 授权码有效期(单位秒) ATExpiresIn int64 // 访问令牌有效期(单位秒) RTExpiresIn int64 // 更新令牌有效期(单位秒) }
ACConfig 授权码模式配置参数(Authorization Code Config)
type ACGenerate ¶
type ACGenerate interface { // Code 根据授权码相关信息生成授权码 Code(info *ACInfo) (string, error) // Parse 解析授权码,返回授权信息ID Parse(code string) (int64, error) // Verify 验证授权码的有效性 Verify(code string, info *ACInfo) (bool, error) }
ACGenerate 授权码生成接口(Authorization Code Generate)
func NewDefaultACGenerate ¶
func NewDefaultACGenerate() ACGenerate
NewDefaultACGenerate 创建默认的授权码生成方式
type ACGenerateDefault ¶
type ACGenerateDefault struct{}
ACGenerateDefault 默认的授权码生成方式
func (*ACGenerateDefault) Code ¶
func (ag *ACGenerateDefault) Code(info *ACInfo) (string, error)
Code Authorization code
type ACInfo ¶
type ACInfo struct { ID int64 // 唯一标识 ClientID string // 客户端标识 UserID string // 用户标识 RedirectURI string // 重定向URI Scope string // 申请的权限范围 Code string // 随机码 CreateAt int64 // 创建时间(时间戳) ExpiresIn time.Duration // 有效期(单位秒) }
ACInfo 授权码信息(Authorization Code Info)
type ACManager ¶
type ACManager struct {
// contains filtered or unexported fields
}
ACManager 授权码模式管理(Authorization Code Manager)
func NewACManager ¶
func NewACManager(oaManager *OAuthManager, config *ACConfig) *ACManager
NewACManager 创建授权码模式管理实例 oaManager OAuth授权管理 config 配置参数(nil则使用默认值)
type ACMemoryStore ¶
ACMemoryStore 提供授权码的内存存储
type ACStore ¶
type ACStore interface { // Put 将元素放入存储,返回存储的ID // 如果存储发生异常,则返回错误 Put(item ACInfo) (int64, error) // TakeByID 根据ID取出元素 // 如果元素找不到或发生异常,则返回错误 TakeByID(id int64) (*ACInfo, error) }
ACStore 授权码存储接口(临时存储,提供自动GC过期的元素)(Authorization Code Store)
func NewACMemoryStore ¶
NewACMemoryStore 创建授权码的内存存储 gcInterval GC周期(单位秒,默认60秒执行一次)
type CCConfig ¶
type CCConfig struct {
ATExpiresIn int64 // 访问令牌有效期(单位秒)
}
CCConfig 客户端模式配置参数(Client Credentials Config)
type CCManager ¶
type CCManager struct {
// contains filtered or unexported fields
}
CCManager 客户端模式管理(Client Credentials Manager)
func NewCCManager ¶
func NewCCManager(oaManager *OAuthManager, config *CCConfig) *CCManager
NewCCManager 创建默认的客户端模式管理实例 oaManager OAuth授权管理 config 配置参数(nil则使用默认值)
type Client ¶
type Client interface { // ID 客户端唯一标识 ID() string // Secret 客户端秘钥 Secret() string // Domain 客户端域名 Domain() string // RetainData 保留数据 RetainData() interface{} }
Client 客户端的验证信息接口
type ClientMongoStore ¶
type ClientMongoStore struct {
// contains filtered or unexported fields
}
ClientMongoStore 基于MongoDB的默认客户端信息存储
type ClientStore ¶
type ClientStore interface { // GetByID 根据ID获取客户端信息; // 如果客户端不存在则返回nil GetByID(id string) (Client, error) }
ClientStore 客户端存储接口(持久化存储)
func NewClientMongoStore ¶
func NewClientMongoStore(mongoConfig *MongoConfig, cName string) (ClientStore, error)
NewClientMongoStore 创建基于MongoDB的客户端存储方式 mongoConfig MongoDB配置参数 cName 存储客户端的集合名称(默认为ClientInfo)
type DefaultClient ¶
type DefaultClient struct { ClientID string `bson:"_id"` // 客户端唯一标识 ClientSecret string `bson:"Secret"` // 客户端秘钥 ClientDomain string `bson:"Domain"` // 客户端域名 }
DefaultClient 默认的客户端信息
func (DefaultClient) RetainData ¶
func (dc DefaultClient) RetainData() interface{}
RetainData Get retain data
type ImplicitConfig ¶
type ImplicitConfig struct {
ATExpiresIn int64 // 访问令牌有效期(单位秒)
}
ImplicitConfig 简化模式配置参数
type ImplicitManager ¶
type ImplicitManager struct {
// contains filtered or unexported fields
}
ImplicitManager 简化模式管理
func NewImplicitManager ¶
func NewImplicitManager(oaManager *OAuthManager, config *ImplicitConfig) *ImplicitManager
NewImplicitManager 创建默认的简化模式管理实例 oaManager OAuth授权管理 config 配置参数(nil则使用默认值)
func (*ImplicitManager) GenerateToken ¶
func (im *ImplicitManager) GenerateToken(clientID, userID, redirectURI, scopes string) (token *Token, err error)
GenerateToken 生成令牌(只生成访问令牌) clientID 客户端标识 userID 用户标识 redirectURI 重定向URI scopes 应用授权标识
type MongoConfig ¶
MongoConfig MongoDB配置参数
func NewMongoConfig ¶
func NewMongoConfig(url, dbName string) *MongoConfig
NewMongoConfig 创建MongoDB配置参数的实例
type OAuthConfig ¶
type OAuthConfig struct { ACConfig *ACConfig // 授权码模式配置参数 ImplicitConfig *ImplicitConfig // 简化模式配置参数 PasswordConfig *PasswordConfig // 密码模式配置参数 CCConfig *CCConfig // 客户端模式配置参数 }
OAuthConfig OAuth授权配置参数
type OAuthManager ¶
type OAuthManager struct { Config *OAuthConfig // 配置参数 ACGenerate ACGenerate // 授权码生成 ACStore ACStore // 授权码存储 TokenGenerate TokenGenerate // 令牌生成 TokenStore TokenStore // 令牌存储 ClientStore ClientStore // 客户端存储 }
OAuthManager OAuth授权管理
func CreateDefaultOAuthManager ¶
func CreateDefaultOAuthManager(mongoConfig *MongoConfig, tokenCollectionName, clientCollectionName string, oauthConfig *OAuthConfig) (*OAuthManager, error)
CreateDefaultOAuthManager 创建默认的OAuth授权管理实例 mongoConfig MongoDB配置参数 tokenCollectionName 存储令牌的集合名称(默认为AuthToken) clientCollectionName 存储客户端的集合名称(默认为ClientInfo) oauthConfig 配置参数
func (*OAuthManager) CheckAccessToken ¶
func (om *OAuthManager) CheckAccessToken(accessToken string) (token *Token, err error)
CheckAccessToken 检查访问令牌是否可用,同时返回该令牌的相关信息 accessToken 访问令牌
func (*OAuthManager) GenerateToken ¶ added in v1.1.0
func (om *OAuthManager) GenerateToken(cli Client, userID, scopes string, atExpireIn, rtExpireIn int64, isGenerateRefresh bool) (token *Token, err error)
GenerateToken 生成令牌 cli 客户端信息 userID 用户标识 scopes 应用授权标识 isGenerateRefresh 是否生成更新令牌
func (*OAuthManager) GetACManager ¶
func (om *OAuthManager) GetACManager() *ACManager
GetACManager 获取授权码模式管理实例
func (*OAuthManager) GetCCManager ¶
func (om *OAuthManager) GetCCManager() *CCManager
GetCCManager 获取客户端模式管理实例
func (*OAuthManager) GetClient ¶
func (om *OAuthManager) GetClient(clientID string) (cli Client, err error)
GetClient 根据客户端标识获取客户端信息 clientID 客户端标识
func (*OAuthManager) GetImplicitManager ¶
func (om *OAuthManager) GetImplicitManager() *ImplicitManager
GetImplicitManager 获取简化模式管理实例
func (*OAuthManager) GetPasswordManager ¶
func (om *OAuthManager) GetPasswordManager() *PasswordManager
GetPasswordManager 获取密码模式管理实例
func (*OAuthManager) RefreshAccessToken ¶
func (om *OAuthManager) RefreshAccessToken(refreshToken, scopes string) (token *Token, err error)
RefreshAccessToken 更新访问令牌(在更新令牌有效期内,更新访问令牌的有效期),同时返回更新后的令牌信息 refreshToken 更新令牌 scopes 申请的权限范围(不可以超出上一次申请的范围,如果省略该参数,则表示与上一次一致)
func (*OAuthManager) RevokeAccessToken ¶
func (om *OAuthManager) RevokeAccessToken(accessToken string) (err error)
RevokeAccessToken 废除访问令牌(将该访问令牌的状态更改为删除) accessToken 访问令牌
func (*OAuthManager) SetACGenerate ¶
func (om *OAuthManager) SetACGenerate(generate ACGenerate)
SetACGenerate 设置授权码生成接口
func (*OAuthManager) SetACStore ¶
func (om *OAuthManager) SetACStore(store ACStore)
SetACStore 设置授权码存储接口
func (*OAuthManager) ValidateClient ¶
func (om *OAuthManager) ValidateClient(clientID, redirectURI string) (cli Client, err error)
ValidateClient 验证客户端的重定向URI clientID 客户端标识 redirectURI 重定向URI
type PasswordConfig ¶
PasswordConfig 密码模式配置参数
type PasswordManager ¶
type PasswordManager struct {
// contains filtered or unexported fields
}
PasswordManager 密码模式管理
func NewPasswordManager ¶
func NewPasswordManager(oaManager *OAuthManager, config *PasswordConfig) *PasswordManager
NewPasswordManager 创建默认的密码模式管理实例 oaManager OAuth授权管理 config 配置参数(nil则使用默认值)
func (*PasswordManager) GenerateToken ¶
func (pm *PasswordManager) GenerateToken(clientID, userID, clientSecret, scopes string, isGenerateRefresh bool) (token *Token, err error)
GenerateToken 生成令牌(只生成访问令牌) clientID 客户端标识 userID 用户标识 clientSecret 客户端秘钥 scopes 应用授权标识
type Token ¶
type Token struct { ID int64 `bson:"_id"` // 唯一标识(自增ID) ClientID string `bson:"ClientID"` // 客户端标识 UserID string `bson:"UserID"` // 用户标识 AccessToken string `bson:"AccessToken"` // 访问令牌 ATID string `bson:"ATID"` // 访问令牌标识(uuid) ATCreateAt int64 `bson:"ATCreateAt"` // 访问令牌创建时间(时间戳) ATExpiresIn time.Duration `bson:"ATExpiresIn"` // 访问令牌有效期(单位秒) RefreshToken string `bson:"RefreshToken"` // 更新令牌 RTID string `bson:"RTID"` // 更新令牌标识(uuid) RTCreateAt int64 `bson:"RTCreateAt"` // 更新令牌创建时间(时间戳) RTExpiresIn time.Duration `bson:"RTExpiresIn"` // 更新令牌有效期(单位秒) Scope string `bson:"Scope"` // 申请的权限范围 CreateAt int64 `bson:"CreateAt"` // 创建时间(时间戳) Status STATUS `bson:"Status"` // 令牌状态 }
Token 令牌信息
type TokenBasicInfo ¶
type TokenBasicInfo struct { Client Client // 客户端信息 UserID string // 用户标识 TokenID string // 令牌标识 CreateAt int64 // 创建令牌的时间戳 }
TokenBasicInfo 用于生成令牌的基础信息
func NewTokenBasicInfo ¶
func NewTokenBasicInfo(cli Client, tokenID, userID string, createAt int64) *TokenBasicInfo
NewTokenBasicInfo 创建用于生成令牌的基础信息 cli 客户端信息 userID 用户标识 createAt 创建令牌的时间戳
type TokenGenerate ¶
type TokenGenerate interface { // AccessToken 生成访问令牌 AccessToken(basicInfo *TokenBasicInfo) (string, error) // RefreshToken 生成刷新令牌 RefreshToken(basicInfo *TokenBasicInfo) (string, error) }
TokenGenerate 令牌生成接口
func NewDefaultTokenGenerate ¶
func NewDefaultTokenGenerate() TokenGenerate
NewDefaultTokenGenerate 创建默认的访问令牌生成方式
type TokenGenerateDefault ¶
type TokenGenerateDefault struct{}
TokenGenerateDefault 提供访问令牌、更新令牌的默认生成函数
func (*TokenGenerateDefault) AccessToken ¶
func (tg *TokenGenerateDefault) AccessToken(basicInfo *TokenBasicInfo) (token string, err error)
AccessToken 生成访问令牌(md5) basicInfo 生成访问令牌的基础参数
func (*TokenGenerateDefault) RefreshToken ¶
func (tg *TokenGenerateDefault) RefreshToken(basicInfo *TokenBasicInfo) (string, error)
RefreshToken 生成刷新令牌(sha1) basicInfo 生成刷新令牌的基础参数
type TokenMongoStore ¶
type TokenMongoStore struct {
// contains filtered or unexported fields
}
TokenMongoStore 基于MongoDB的令牌存储方式
func (*TokenMongoStore) Create ¶
func (tm *TokenMongoStore) Create(item *Token) (id int64, err error)
Create Add item
func (*TokenMongoStore) GetByAccessToken ¶
func (tm *TokenMongoStore) GetByAccessToken(accessToken string) (*Token, error)
GetByAccessToken 根据访问令牌获取令牌信息
func (*TokenMongoStore) GetByRefreshToken ¶
func (tm *TokenMongoStore) GetByRefreshToken(refreshToken string) (*Token, error)
GetByRefreshToken 根据更新令牌获取令牌信息
type TokenStore ¶
type TokenStore interface { // Create 创建新的令牌,返回令牌ID // 如果创建发生异常,则返回错误 Create(item *Token) (int64, error) // Update 根据ID更新令牌信息 // id 令牌ID // info 需要更新的字段信息(字段名称与结构体的字段名保持一致) // 如果更新发生异常,则返回错误 Update(id int64, info map[string]interface{}) error // GetByAccessToken 根据访问令牌,获取令牌信息 // 如果不存则返回nil GetByAccessToken(accessToken string) (*Token, error) // GetByRefreshToken 根据更新令牌,获取令牌信息 // 如果不存则返回nil GetByRefreshToken(refreshToken string) (*Token, error) }
TokenStore 令牌存储接口(持久化存储)
func NewTokenMongoStore ¶
func NewTokenMongoStore(mongoConfig *MongoConfig, cName string) (TokenStore, error)
NewTokenMongoStore 创建基于MongoDB的令牌存储方式 mongoConfig MongoDB配置参数 cName 存储令牌的集合名称(默认为AuthToken)