# README
Mongo Storage for OAuth 2.0
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
# Functions
NewClientStore create a client store instance based on mongodb.
NewClientStoreWithSession create a client store instance based on mongodb.
NewConfigNonReplicaSet create mongodb configuration for a non-replicaSet.
NewConfigReplicaSet create mongodb configuration for a ReplicaSet.
NewDefaultClientConfig create a default client configuration.
No description provided by the author
NewDefaultTokenConfig create a default token configuration.
No description provided by the author
NewTokenStore create a token store instance based on mongodb.
NewTokenStoreWithSession create a token store instance based on mongodb.
No description provided by the author
No description provided by the author
# Structs
ClientConfig client configuration parameters.
ClientStore MongoDB storage for OAuth 2.0.
Config mongodb configuration parameters.
DeviceNameContextKey device name key to get/set from context.
OAuth2TokenLastUsedContextKey IDE name key to get/set from context.
OAuth2TokenLastUsedContextKey last used time key to get/set from context.
No description provided by the author
StoreConfig hold configs common to all Configs(ClientConfig, TokenConfig).
TokenConfig token configuration parameters.
TokenStore MongoDB storage for OAuth 2.0.
No description provided by the author
# Interfaces
No description provided by the author