Skip to content

go-oauth2/mongo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

e897970 · Aug 1, 2023

History

23 Commits
Jul 29, 2023
Jul 23, 2016
Sep 14, 2018
Aug 19, 2016
Jul 29, 2023
Jul 29, 2023
Jul 29, 2023
Jul 26, 2023
Jul 29, 2023
Jul 29, 2023
Jul 29, 2023
Jul 29, 2023
Jul 29, 2023
Jul 29, 2023
Jul 29, 2023

Repository files navigation

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