mongo

package module
v3.2.0 Latest Latest
Warning

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

Go to latest
Published: Aug 1, 2023 License: MIT Imports: 12 Imported by: 0

README

Mongo Storage for OAuth 2.0

Build Codecov ReportCard GoDoc License

Install

$ go get -u -v gopkg.in/go-oauth2/mongo.v3

Usage

import(
    "github.com/go-oauth2/oauth2/v4/manage"
    "github.com/go-oauth2/oauth2/v4/server"
    mongo "gopkg.in/go-oauth2/mongo.v3"    
)

func main(){
    manager := manage.NewDefaultManager()

    /*
	* only for a MongoDB replicaSet deployment
    * Using a replicaSet is recommended as it allows for MongoDB's native support for transactions
    **/
	// mongoConf := mongo.NewConfigReplicaSet(
	// 	"mongodb://localhost:27017,localhost:28017,localhost:29017/?replicaSet=myReplicaSet",
	// 	"oauth2",
	// )

	// set connectionTimeout(7s) and the requestsTimeout(5s) // is optional
	storeConfigs := mongo.NewStoreConfig(7, 5)

    /*
	* for a single mongoDB node
	* if the oauth2 service is deployed with more than one instance
	* each mongoConf should have unique serviceName
    **/
	mongoConf := mongo.NewConfigNonReplicaSet(
		"mongodb://127.0.0.1:27017",
		"oauth2",   // database name
		"admin",    // username to authenticate with db
		"password", // password to authenticate with db
		"serviceName",
	)

	// use mongodb token store
	manager.MapTokenStorage(
		mongo.NewTokenStore(mongoConf, storeConfigs), // with timeout
		// mongo.NewTokenStore(mongoConf), // no timeout
	)

	clientStore := mongo.NewClientStore(mongoConf, storeConfigs) // with timeout
	// clientStore := mongo.NewClientStore(mongoConf) // no timeout

	manager.MapClientStorage(clientStore)

	// register a service
	clientStore.Create(&models.Client{
		ID:     idvar,
		Secret: secretvar,
		Domain: domainvar,
		UserID: "frontend",
	})

	// register a second service
	clientStore.Create(&models.Client{
		ID:     idPreorder,
		Secret: secretPreorder,
		Domain: domainPreorder,
		UserID: "prePost",
	})

	srv := server.NewServer(server.NewConfig(), manager)

    // ...
}

MIT License

Copyright (c) 2016 Lyric

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewTransactionHandler added in v3.2.0

func NewTransactionHandler(client *mongo.Client, tcfg *TokenConfig) *transactionHandler

func NewTransactionWorker added in v3.2.0

func NewTransactionWorker(t *TokenConfig, cl *mongo.Client) *transactionWorker

Types

type ClientConfig added in v3.1.0

type ClientConfig struct {
	// store clients data collection name(The default is oauth2_clients)
	ClientsCName string
	// contains filtered or unexported fields
}

ClientConfig client configuration parameters

func NewDefaultClientConfig added in v3.1.0

func NewDefaultClientConfig(strCfgs *StoreConfig) *ClientConfig

NewDefaultClientConfig create a default client configuration

type ClientStore added in v3.1.0

type ClientStore struct {
	// contains filtered or unexported fields
}

ClientStore MongoDB storage for OAuth 2.0

func NewClientStore added in v3.1.0

func NewClientStore(cfg *Config, scfgs ...*StoreConfig) *ClientStore

NewClientStore create a client store instance based on mongodb

func NewClientStoreWithSession added in v3.1.0

func NewClientStoreWithSession(client *mongo.Client, cfg *Config, scfgs ...*StoreConfig) *ClientStore

NewClientStoreWithSession create a client store instance based on mongodb

func (*ClientStore) Close added in v3.1.0

func (cs *ClientStore) Close()

Close close the mongo session

func (*ClientStore) Create added in v3.2.0

func (cs *ClientStore) Create(info oauth2.ClientInfo) (err error)

Create create client information

func (*ClientStore) GetByID added in v3.1.0

func (cs *ClientStore) GetByID(ctx context.Context, id string) (info oauth2.ClientInfo, err error)

GetByID according to the ID for the client information

func (*ClientStore) RemoveByID added in v3.1.0

func (cs *ClientStore) RemoveByID(id string) (err error)

RemoveByID use the client id to delete the client information

type Config

type Config struct {
	URL          string
	DB           string
	Username     string
	Password     string
	Service      string
	IsReplicaSet bool
}

Config mongodb configuration parameters

func NewConfigNonReplicaSet added in v3.2.0

func NewConfigNonReplicaSet(url, db, username, password, service string) *Config

NewConfigNonReplicaSet create mongodb configuration for a non-replicaSet

func NewConfigReplicaSet added in v3.2.0

func NewConfigReplicaSet(url, db string) *Config

NewConfigReplicaSet create mongodb configuration for a ReplicaSet

type StoreConfig added in v3.2.0

type StoreConfig struct {
	// contains filtered or unexported fields
}

StoreConfig hold configs common to all Configs(ClientConfig, TokenConfig)

func NewDefaultStoreConfig added in v3.2.0

func NewDefaultStoreConfig(db, service string, isReplicasSet bool) *StoreConfig

func NewStoreConfig added in v3.2.0

func NewStoreConfig(ctout, rtout int) *StoreConfig

type TokenConfig

type TokenConfig struct {
	// store txn collection name(The default is oauth2)
	TxnCName string
	// store token based data collection name(The default is oauth2_basic)
	BasicCName string
	// store access token data collection name(The default is oauth2_access)
	AccessCName string
	// store refresh token data collection name(The default is oauth2_refresh)
	RefreshCName string
	// contains filtered or unexported fields
}

TokenConfig token configuration parameters

func NewDefaultTokenConfig

func NewDefaultTokenConfig(strConfig *StoreConfig) *TokenConfig

NewDefaultTokenConfig create a default token configuration

type TokenStore

type TokenStore struct {
	// contains filtered or unexported fields
}

TokenStore MongoDB storage for OAuth 2.0

func NewTokenStore

func NewTokenStore(cfg *Config, scfgs ...*StoreConfig) (store *TokenStore)

NewTokenStore create a token store instance based on mongodb

func NewTokenStoreWithSession

func NewTokenStoreWithSession(client *mongo.Client, cfg *Config, scfgs ...*StoreConfig) (store *TokenStore)

NewTokenStoreWithSession create a token store instance based on mongodb

func (*TokenStore) Close

func (ts *TokenStore) Close()

Close close the mongo session

func (*TokenStore) Create

func (ts *TokenStore) Create(ctx context.Context, info oauth2.TokenInfo) (err error)

Create create and store the new token information

func (*TokenStore) GetByAccess

func (ts *TokenStore) GetByAccess(ctx context.Context, access string) (ti oauth2.TokenInfo, err error)

GetByAccess use the access token for token information data

func (*TokenStore) GetByCode

func (ts *TokenStore) GetByCode(ctx context.Context, code string) (ti oauth2.TokenInfo, err error)

GetByCode use the authorization code for token information data

func (*TokenStore) GetByRefresh

func (ts *TokenStore) GetByRefresh(ctx context.Context, refresh string) (ti oauth2.TokenInfo, err error)

GetByRefresh use the refresh token for token information data

func (*TokenStore) RemoveByAccess

func (ts *TokenStore) RemoveByAccess(ctx context.Context, access string) (err error)

RemoveByAccess use the access token to delete the token information

func (*TokenStore) RemoveByCode

func (ts *TokenStore) RemoveByCode(ctx context.Context, code string) (err error)

RemoveByCode use the authorization code to delete the token information

func (*TokenStore) RemoveByRefresh

func (ts *TokenStore) RemoveByRefresh(ctx context.Context, refresh string) (err error)

RemoveByRefresh use the refresh token to delete the token information

type TransactionWorker added in v3.2.0

type TransactionWorker interface {
	// contains filtered or unexported methods
}

Jump to

Keyboard shortcuts

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