dynamo

package module
v0.0.0-...-63e4825 Latest Latest
Warning

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

Go to latest
Published: Feb 7, 2024 License: MIT Imports: 14 Imported by: 0

README

DynamoDB Storage for OAuth 2.0

Based on the https://github.com/contamobi/go-oauth2-dynamodb

License

Install

$ go get -u github.com/lynnclub/go-oauth2-dynamodb

Usage (specifying credentials)

package main

import (
	"github.com/lynnclub/go-oauth2-dynamodb"
	"github.com/go-oauth2/oauth2/v4/manage"
)

func main() {
	manager := manage.NewDefaultManager()
	manager.MustTokenStorage(
		dynamo.NewTokenStoreV4(dynamo.NewConfig(
			"us-east-1", // AWS Region
			"http://localhost:8000", // AWS DynamoDB Endpoint
			"AKIA*********", // AWS Access Key
			"*************", // AWS Secret
                        "oauth2_basic", // Oauth2 basic table name
			"oauth2_access", // Oauth2 access table name
			"oauth2_refresh", // Oauth2 refresh table name
		)),
	)
	// ...
}

Usage (with IAM Role configured for ec2 or Lambda)

package main

import (
	"github.com/lynnclub/go-oauth2-dynamodb"
	"github.com/go-oauth2/oauth2/v4/manage"
)

func main() {
	manager := manage.NewDefaultManager()
	manager.MustTokenStorage(
		dynamo.NewTokenStoreV4(dynamo.NewConfig(
			"us-east-1", // AWS Region
			"", // Emtpy
			"", // Emtpy
			"", // Emtpy
			"oauth2_basic", // Oauth2 basic table name
                        "oauth2_access", // Oauth2 access table name
                        "oauth2_refresh", // Oauth2 refresh table name

		)),
	)
	// ...
}

Run tests

Start dynamodb local
java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb 
Export env variables
export AWS_REGION=us-east-1
export DYNAMODB_ENDPOINT='http://localhost:8000'
export AWS_ACCESS_KEY=AKIA******
export AWS_SECRET=**************
Run tests
go test

MIT License

Copyright (c) 2018 Conta.MOBI

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CreateWithAccessToken

func CreateWithAccessToken(tokenStorage *TokenStore, info oauth2.TokenInfo, id string) (err error)

func CreateWithAccessTokenV4

func CreateWithAccessTokenV4(tokenStorage *TokenStoreV4, info oauth2.TokenInfo, id string) (err error)

func CreateWithAuthorizationCode

func CreateWithAuthorizationCode(tokenStorage *TokenStore, info oauth2.TokenInfo, id string) (err error)

func CreateWithAuthorizationCodeV4

func CreateWithAuthorizationCodeV4(tokenStorage *TokenStoreV4, info oauth2.TokenInfo, id string) (err error)

func CreateWithRefreshToken

func CreateWithRefreshToken(tokenStorage *TokenStore, info oauth2.TokenInfo) (err error)

func CreateWithRefreshTokenV4

func CreateWithRefreshTokenV4(tokenStorage *TokenStoreV4, info oauth2.TokenInfo) (err error)

func NewTokenStore

func NewTokenStore(config *Config) (store oauth2.TokenStore)

func NewTokenStoreV4

func NewTokenStoreV4(config *Config) (store oauth2.TokenStore)

Types

type Config

type Config struct {
	SESSION  *session.Session
	TABLE    *TableConfig
	ENDPOINT string
}

Config dynamodb configuration parameters

func NewConfig

func NewConfig(region string, endpoint string, access_key string, secret string, basic_table_name string, access_table_name string, refresh_table_name string) (config *Config, err error)

NewConfig create dynamodb configuration

type TableConfig

type TableConfig struct {
	BasicCname   string
	AccessCName  string
	RefreshCName string
}

type TokenStore

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

func (*TokenStore) Create

func (tokenStorage *TokenStore) Create(info oauth2.TokenInfo) (err error)

Create and store the new token information

func (*TokenStore) GetByAccess

func (tokenStorage *TokenStore) GetByAccess(access string) (to oauth2.TokenInfo, err error)

GetByAccess use the access token for token information data

func (*TokenStore) GetByCode

func (tokenStorage *TokenStore) GetByCode(code string) (to oauth2.TokenInfo, err error)

GetByCode use the authorization code for token information data

func (*TokenStore) GetByRefresh

func (tokenStorage *TokenStore) GetByRefresh(refresh string) (to oauth2.TokenInfo, err error)

GetByRefresh use the refresh token for token information data

func (*TokenStore) RemoveByAccess

func (tokenStorage *TokenStore) RemoveByAccess(access string) (err error)

RemoveByAccess use the access token to delete the token information

func (*TokenStore) RemoveByCode

func (tokenStorage *TokenStore) RemoveByCode(code string) (err error)

RemoveByCode use the authorization code to delete the token information

func (*TokenStore) RemoveByRefresh

func (tokenStorage *TokenStore) RemoveByRefresh(refresh string) (err error)

RemoveByRefresh use the refresh token to delete the token information

type TokenStoreV4

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

func (*TokenStoreV4) Create

func (tokenStorage *TokenStoreV4) Create(ctx context.Context, info oauth2.TokenInfo) (err error)

Create and store the new token information

func (*TokenStoreV4) GetByAccess

func (tokenStorage *TokenStoreV4) GetByAccess(ctx context.Context, access string) (to oauth2.TokenInfo, err error)

GetByAccess use the access token for token information data

func (*TokenStoreV4) GetByCode

func (tokenStorage *TokenStoreV4) GetByCode(ctx context.Context, code string) (to oauth2.TokenInfo, err error)

GetByCode use the authorization code for token information data

func (*TokenStoreV4) GetByRefresh

func (tokenStorage *TokenStoreV4) GetByRefresh(ctx context.Context, refresh string) (to oauth2.TokenInfo, err error)

GetByRefresh use the refresh token for token information data

func (*TokenStoreV4) RemoveByAccess

func (tokenStorage *TokenStoreV4) RemoveByAccess(ctx context.Context, access string) (err error)

RemoveByAccess use the access token to delete the token information

func (*TokenStoreV4) RemoveByCode

func (tokenStorage *TokenStoreV4) RemoveByCode(ctx context.Context, code string) (err error)

RemoveByCode use the authorization code to delete the token information

func (*TokenStoreV4) RemoveByRefresh

func (tokenStorage *TokenStoreV4) RemoveByRefresh(ctx context.Context, refresh string) (err error)

RemoveByRefresh use the refresh token to delete the token information

Jump to

Keyboard shortcuts

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