Categorygithub.com/go-oauth2/oauth2
modulepackage
1.2.0
Repository: https://github.com/go-oauth2/oauth2.git
Documentation: pkg.go.dev

# README

Golang OAuth 2.0协议实现

GoDoc Go Report Card

获取

$ go get -v gopkg.in/oauth2.v1

范例

使用之前,初始化客户端信息

package main

import (
	"fmt"

	"gopkg.in/oauth2.v1"
)

func main() {
	// 初始化配置参数
	ocfg := &oauth2.OAuthConfig{
		ACConfig: &oauth2.ACConfig{
			ATExpiresIn: 60 * 60 * 24,
		},
	}
	mcfg := oauth2.NewMongoConfig("mongodb://127.0.0.1:27017", "test")

	// 创建默认的OAuth2管理实例(基于MongoDB)
	manager, err := oauth2.NewDefaultOAuthManager(ocfg, mcfg, "xxx", "xxx")
	if err != nil {
		panic(err)
	}
	manager.SetACGenerate(oauth2.NewDefaultACGenerate())
	manager.SetACStore(oauth2.NewACMemoryStore(0))

	// 模拟授权码模式
	// 使用默认参数,生成授权码
	code, err := manager.GetACManager().
		GenerateCode("clientID_x", "userID_x", "http://www.example.com/cb", "scopes")
	if err != nil {
		panic(err)
	}

	// 生成访问令牌及更新令牌
	genToken, err := manager.GetACManager().
		GenerateToken(code, "http://www.example.com/cb", "clientID_x", "clientSecret_x", true)
	if err != nil {
		panic(err)
	}

	// 检查访问令牌
	checkToken, err := manager.CheckAccessToken(genToken.AccessToken)
	if err != nil {
		panic(err)
	}

	// TODO: 使用用户标识、申请的授权范围响应数据
	fmt.Println(checkToken.UserID, checkToken.Scope)

	// 更新令牌
	newToken, err := manager.RefreshAccessToken(checkToken.RefreshToken, "scopes")
	if err != nil {
		panic(err)
	}
	fmt.Println(newToken.AccessToken, newToken.ATExpiresIn)
	// TODO: 将新的访问令牌响应给客户端
	
}

执行测试

$ go test -v
# 或
$ goconvey -port=9090

License

Copyright 2016.All rights reserved.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

# Functions

NewACManager 创建授权码模式管理实例 oaManager OAuth授权管理 config 配置参数(nil则使用默认值).
NewACMemoryStore 创建授权码的内存存储 gcInterval GC周期(单位秒,默认60秒执行一次).
NewACRedisStore 创建Redis存储的实例 config Redis配置参数 key Redis存储授权码唯一标识的键(默认为ACID).
NewCCManager 创建默认的客户端模式管理实例 oaManager OAuth授权管理 config 配置参数(nil则使用默认值).
NewClientMongoStore 创建基于MongoDB的客户端存储方式 mongoConfig MongoDB配置参数 cName 存储客户端的集合名称(默认为ClientInfo).
NewDefaultACGenerate 创建默认的授权码生成方式.
NewDefaultOAuthManager 创建默认的OAuth授权管理实例 cfg 配置参数 mcfg MongoDB配置参数 ccName 存储客户端的集合名称(默认为ClientInfo) tcName 存储令牌的集合名称(默认为AuthToken).
NewDefaultTokenGenerate 创建默认的访问令牌生成方式.
NewImplicitManager 创建默认的简化模式管理实例 oaManager OAuth授权管理 config 配置参数(nil则使用默认值).
NewMongoConfig 创建MongoDB配置参数的实例.
NewOAuthManager 创建OAuth授权管理实例 cfg 配置参数.
NewPasswordManager 创建默认的密码模式管理实例 oaManager OAuth授权管理 config 配置参数(nil则使用默认值).
NewTokenBasicInfo 创建用于生成令牌的基础信息 cli 客户端信息 userID 用户标识 createAt 创建令牌的时间戳.
NewTokenMongoStore 创建基于MongoDB的令牌存储方式 mongoConfig MongoDB配置参数 cName 存储令牌的集合名称(默认为AuthToken).
ValidateURI 验证基础的Uri与重定向的URI是否一致.

# Constants

Actived 激活状态.
Blocked 冻结状态.
DefaultACExpiresIn 默认授权码模式的授权码有效期(10分钟).
DefaultACRedisIDKey Redis存储授权码唯一标识的键.
DefaultATExpiresIn 默认授权码模式的访问令牌有效期(7天).
DefaultCCATExpiresIn 默认客户端模式的访问令牌有效期(1天).
DefaultClientCollectionName 默认的客户端存储集合名称.
DefaultIATExpiresIn 默认简化模式的访问令牌有效期(1小时).
DefaultRandomCodeLen 默认随机码的长度.
DefaultRTExpiresIn 默认授权码模式的更新令牌有效期(30天).
DefaultTokenCollectionName 默认的令牌存储集合名称.
Deleted 删除状态.
Expired 过期状态.

# Variables

ErrACInvalid Authorization code invalid.
ErrACNotFound Authorization code not found.
ErrATExpire Access token expire.
ErrATInvalid Access token invalid.
ErrATNotFound Refresh token not found.
ErrClientNotFound Client not found.
ErrCSInvalid Client secret invalid.
ErrRTExpire Refresh token expire.
ErrRTInvalid Refresh token invalid.
ErrRTNotFound Refresh token not found.

# Structs

ACConfig 授权码模式配置参数(Authorization Code Config).
ACGenerateDefault 默认的授权码生成方式.
ACInfo 授权码信息(Authorization Code Info).
ACManager 授权码模式管理(Authorization Code Manager).
ACMemoryStore 提供授权码的内存存储.
ACRedisStore 提供授权码的redis存储.
CCConfig 客户端模式配置参数(Client Credentials Config).
CCManager 客户端模式管理(Client Credentials Manager).
ClientMongoStore 基于MongoDB的默认客户端信息存储.
DefaultClient 默认的客户端信息.
ImplicitConfig 简化模式配置参数.
ImplicitManager 简化模式管理.
MongoConfig MongoDB配置参数.
OAuthConfig OAuth授权配置参数.
OAuthManager OAuth授权管理.
PasswordConfig 密码模式配置参数.
PasswordManager 密码模式管理.
RedisConfig Redis的配置参数.
Token 令牌信息.
TokenBasicInfo 用于生成令牌的基础信息.
TokenGenerateDefault 提供访问令牌、更新令牌的默认生成函数.
TokenMongoStore 基于MongoDB的令牌存储方式.

# Interfaces

ACGenerate 授权码生成接口(Authorization Code Generate).
ACStore 授权码存储接口(临时存储,提供自动GC过期的元素)(Authorization Code Store).
Client 客户端的验证信息接口.
ClientStore 客户端存储接口(持久化存储).
TokenGenerate 令牌生成接口.
TokenStore 令牌存储接口(持久化存储).

# Type aliases

STATUS 提供一些状态标识.