oauth2util

package module
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Dec 29, 2017 License: MIT Imports: 16 Imported by: 0

README

OAuth 2.0 Plus for Go

Build Status Go Report Card Docs License

OAuth 2.0 - https://github.com/golang/oauth2 helper API calls related to OAuth 2.0 user profile information. Currently provides:

  • NewClient() functions to create *http.Client structs for services like aha, metabase, ringcentral, salesforce, etc.
  • Helper libraries to retrieve canonical user information from services. The SCIM user schema is used for a canonical user model.
  • Multi-service libraries to more transparently handle OAuth 2 for multiple services, e.g. a website that supports Google and Facebook auth. This is demoed in grokify/beego-oauth2-demo

Installation

$ go get github.com/grokify/oauth2util/...

Usage

Google
import(
	"github.com/grokify/oauth2util/google"
)

// googleOAuth2HTTPClient is *http.Client from Golang OAuth2
googleClientUtil := google.NewClientUtil(googleOAuth2HTTPClient)
scimuser, err := googleClientUtil.GetSCIMUser()
Facebook
import(
	"github.com/grokify/oauth2util/facebook"
)

// fbOAuth2HTTPClient is *http.Client from Golang OAuth2
fbClientUtil := facebook.NewClientUtil(fbOAuth2HTTPClient)
scimuser, err := fbClientUtil.GetSCIMUser()
RingCentral
import(
	"github.com/grokify/oauth2util/ringcentral"
)

// rcOAuth2HTTPClient is *http.Client from Golang OAuth2
rcClientUtil := ringcentral.NewClientUtil(rcOAuth2HTTPClient)
scimuser, err := rcClientUtil.GetSCIMUser()
Example App

See the following repo for a Beego-based demo app:

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	RelCredentialsDir = ".credentials"
)

Functions

func BasicAuthToken

func BasicAuthToken(username, password string) (*oauth2.Token, error)

BasicAuthToken provides Basic Authentication support via an oauth2.Token.

func NewClientAccessToken added in v0.1.0

func NewClientAccessToken(accessToken string) *http.Client

func NewClientAuthCode

func NewClientAuthCode(conf oauth2.Config, authCode string) (*http.Client, error)

func NewClientPasswordConf

func NewClientPasswordConf(conf oauth2.Config, username, password string) (*http.Client, error)

func NewClientTLSToken

func NewClientTLSToken(ctx context.Context, tlsConfig *tls.Config, token *oauth2.Token) *http.Client

func NewClientWebTokenStore

func NewClientWebTokenStore(ctx context.Context, conf *oauth2.Config, tStore *TokenStoreFile, forceNewToken bool) (*http.Client, error)

func NewTokenFromWeb

func NewTokenFromWeb(cfg *oauth2.Config) (*oauth2.Token, error)

func RFC7617UserPass

func RFC7617UserPass(userid, password string) (string, error)

RFC7617UserPass base64 encodes a user-id and password per: https://tools.ietf.org/html/rfc7617#section-2

func ReadTokenFile

func ReadTokenFile(fpath string) (*oauth2.Token, error)

ReadTokenFile retrieves a Token from a given filepath.

func UserCredentialsDir

func UserCredentialsDir() (string, error)

func UserCredentialsDirMk

func UserCredentialsDirMk(perm os.FileMode) (string, error)

func WriteTokenFile

func WriteTokenFile(fpath string, tok *oauth2.Token) error

WriteTokenFile writes a token file to the the filepaths.

Types

type AppCredentials

type AppCredentials struct {
	Service      string   `json:"service,omitempty"`
	ClientID     string   `json:"client_id"`
	ClientSecret string   `json:"client_secret"`
	RedirectURIs []string `json:"redirect_uris"`
	AuthURI      string   `json:"auth_uri"`
	TokenURI     string   `json:"token_uri"`
	Scopes       []string `json:"scopes"`
}

func (*AppCredentials) Config

func (c *AppCredentials) Config() *oauth2.Config

func (*AppCredentials) Defaultify

func (ac *AppCredentials) Defaultify()

type AppCredentialsWrapper

type AppCredentialsWrapper struct {
	Web       *AppCredentials `json:"web"`
	Installed *AppCredentials `json:"installed"`
}

func NewAppCredentialsWrapperFromBytes

func NewAppCredentialsWrapperFromBytes(data []byte) (AppCredentialsWrapper, error)

func (*AppCredentialsWrapper) Config

func (w *AppCredentialsWrapper) Config() (*oauth2.Config, error)

type ApplicationCredentials

type ApplicationCredentials struct {
	ServerURL    string
	ClientID     string
	ClientSecret string
	Endpoint     oauth2.Endpoint
}

ApplicationCredentials represents information for an app.

type OAuth2Util

type OAuth2Util interface {
	SetClient(*http.Client)
	GetSCIMUser() (scimutil.User, error)
}

type TokenStoreFile

type TokenStoreFile struct {
	Token    *oauth2.Token
	Filepath string
}

func NewTokenStoreFile

func NewTokenStoreFile(file string) *TokenStoreFile

func NewTokenStoreFileDefault

func NewTokenStoreFileDefault(tokenPath string, useDefaultDir bool, perm os.FileMode) (*TokenStoreFile, error)

func (*TokenStoreFile) NewTokenFromWeb

func (ts *TokenStoreFile) NewTokenFromWeb(cfg *oauth2.Config) (*oauth2.Token, error)

func (*TokenStoreFile) Read

func (ts *TokenStoreFile) Read() error

func (*TokenStoreFile) Write

func (ts *TokenStoreFile) Write() error

type UserCredentials

type UserCredentials struct {
	Username string
	Password string
}

UserCredentials represents a user's credentials.

Jump to

Keyboard shortcuts

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