api

package
v0.0.0-...-5d4bd2e Latest Latest
Warning

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

Go to latest
Published: Apr 24, 2025 License: Apache-2.0 Imports: 27 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ResponseTypeAuthorizationCodeFlow = "code"
	ResponseTypeImplicitFlowIDToken   = "id_token"
	ResponseTypeImplicitFlowToken     = "token"
	ResponseTypeImplicitFlowBoth      = "id_token token"
)

Response Types

View Source
const (
	EndpointWellKnown          = "/.well-known/oauth-authorization-server"
	EndpointAuthorization      = "/oauth/authorize"
	EndpointAuthorizationLogin = "/login"
	EndpointToken              = "/oauth/token"
	EndpointIntrospection      = "/oauth/introspection"
	EndpointRevocation         = "/oauth/revocation"
	EndpointJWK                = "/oauth/jwks.json"
)

Endpoints

View Source
const (
	GrantTypeAuthorizationCode = "authorization_code"
	GrantTypeClientCredentials = "client_credentials"
)

Grant Types

View Source
const (
	SubjectTypePublic = "public"
)

Subject Types

Variables

This section is empty.

Functions

func AuthorizationHandler

func AuthorizationHandler(c echo.Context) error

func AuthorizationServerWellKnownHandler

func AuthorizationServerWellKnownHandler(c echo.Context) error

func CreateServer

func CreateServer() *echo.Echo

func IndexHandler

func IndexHandler(c echo.Context) error

func JWKHandler

func JWKHandler(c echo.Context) error

func LoginPageHandler

func LoginPageHandler(c echo.Context) error

func NewTokenHandler

func NewTokenHandler(c echo.Context) error

func UserLoginHandler

func UserLoginHandler(c echo.Context) error

Types

type AppContext

type AppContext struct {
	JWKManager *JWKManager
	ClientRepo IClientRepo
	UserRepo   IUserRepo
	TokenRepo  ITokenRepo
	// contains filtered or unexported fields
}

func NewAppContext

func NewAppContext(defaultBuilders map[string]interface{}) *AppContext

func (*AppContext) Init

func (ctx *AppContext) Init() error

type AuthorizationCodeAuthorizer

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

func (*AuthorizationCodeAuthorizer) GenerateJWT

type ClientCredentialsAuthorizer

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

func (*ClientCredentialsAuthorizer) GenerateJWT

type ClientRepository

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

func NewClientRepository

func NewClientRepository(db *DB) *ClientRepository

func (*ClientRepository) AddClient

func (c *ClientRepository) AddClient(client OAuthClient, checkExists bool) error

func (*ClientRepository) AuthenticateClient

func (c *ClientRepository) AuthenticateClient(clientId string, clientSecret string) error

func (*ClientRepository) GetClient

func (c *ClientRepository) GetClient(clientId string) (OAuthClient, error)

type Config

type Config struct {
}

type DB

type DB struct {
	*sql.DB
}

func (*DB) ClearWholeDB

func (db *DB) ClearWholeDB()

type GrantTypeAuthorizer

type GrantTypeAuthorizer interface {
	GenerateJWT(tokenData RequestDataNewToken) (ResponseNewToken, error)
}

type IClientRepo

type IClientRepo interface {
	GetClient(clientId string) (OAuthClient, error)
	AddClient(client OAuthClient, checkExists bool) error
	AuthenticateClient(clientId string, clientSecret string) error
}

type IRequestTokenRepo

type IRequestTokenRepo interface {
	SetAuthToken(userId string, authToken string) error
	GetUserIdForToken(authToken string) (string, error)
	RemoveToken(authToken string) error
}

type ITokenRepo

type ITokenRepo interface {
	IRequestTokenRepo
	NewTokenRepositoryWithCtx(context.Context) IRequestTokenRepo
}

func NewTokenRepository

func NewTokenRepository() ITokenRepo

type IUserRepo

type IUserRepo interface {
	GetUser(username string) (UserModel, error)
	AuthenticateUser(username string, password string) error
	AddUser(user NewUser, checkExists bool) error
}

type JWKManager

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

func NewJWKManager

func NewJWKManager() *JWKManager

func (*JWKManager) GetSet

func (m *JWKManager) GetSet() jose.JSONWebKeySet

func (*JWKManager) GetSignKey

func (m *JWKManager) GetSignKey() *jose.JSONWebKey

func (*JWKManager) LoadKeys

func (m *JWKManager) LoadKeys() error

func (*JWKManager) SignToken

func (m *JWKManager) SignToken(token *jwt.Token) (string, error)

type KeyPair

type KeyPair struct {
	Public  jose.JSONWebKey
	Private jose.JSONWebKey
}

type NewUser

type NewUser struct {
	Username string
	Password string
}

type OAuthClient

type OAuthClient struct {
	ClientId     string
	ClientSecret string
	RedirectURI  string
}

type RequestContext

type RequestContext struct {
	echo.Context
	JWKManager *JWKManager
	ClientRepo IClientRepo
	UserRepo   IUserRepo
	TokenRepo  IRequestTokenRepo
}

type RequestDataNewLogin

type RequestDataNewLogin struct {
	Redirect string `form:"redirect"`
	Username string `form:"username"`
	Password string `form:"password"`
}

type RequestDataNewToken

type RequestDataNewToken struct {
	ClientId     string `json:"client_id"`
	ClientSecret string `json:"client_secret"`
	GrantType    string `json:"grant_type"`
	Code         string `json:"code"`
	RedirectURI  string `json:"redirect_uri"`
}

type RequestQueryParamAuthorize

type RequestQueryParamAuthorize struct {
	ClientId     string `query:"client_id"`
	ResponseType string `query:"response_type"`
	RedirectURI  string `query:"redirect_uri"`
	State        string `query:"state"`
}

type ResponseNewToken

type ResponseNewToken struct {
	AccessToken string `json:"access_token"`
	TokenType   string `json:"token_type"`
	ExpiresIn   uint16 `json:"expires_in"`
}

type TemplateRenderer

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

func (*TemplateRenderer) Render

func (t *TemplateRenderer) Render(w io.Writer, name string, data interface{}, c echo.Context) error

type TokenRepository

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

func (*TokenRepository) GetUserIdForToken

func (t *TokenRepository) GetUserIdForToken(authToken string) (string, error)

func (*TokenRepository) NewTokenRepositoryWithCtx

func (t *TokenRepository) NewTokenRepositoryWithCtx(ctx context.Context) IRequestTokenRepo

func (*TokenRepository) RemoveToken

func (t *TokenRepository) RemoveToken(authToken string) error

func (*TokenRepository) SetAuthToken

func (t *TokenRepository) SetAuthToken(userId string, authToken string) error

type UserModel

type UserModel struct {
	UserId       string
	Username     string
	PasswordHash string
}

type UserRepository

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

func NewUserRepository

func NewUserRepository(db *DB) *UserRepository

func (*UserRepository) AddUser

func (c *UserRepository) AddUser(user NewUser, checkExists bool) error

func (*UserRepository) AuthenticateUser

func (c *UserRepository) AuthenticateUser(username string, password string) error

func (*UserRepository) GetUser

func (c *UserRepository) GetUser(username string) (UserModel, error)

type WellKnownConfiguration

type WellKnownConfiguration struct {
	Issuer                                     string   `json:"issuer"`
	JWKsUri                                    string   `json:"jwks_uri,omitempty"`
	AuthorizationEndpoint                      string   `json:"authorization_endpoint"`
	TokenEndpoint                              string   `json:"token_endpoint,omitempty"`
	SubjectTypesSupported                      []string `json:"subject_types_supported"`
	ResponseTypesSupported                     []string `json:"response_types_supported"`
	GrantTypesSupported                        []string `json:"grant_types_supported,omitempty"`
	ScopesSupported                            []string `json:"scopes_supported,omitempty"`
	ClaimsSupported                            []string `json:"claims_supported,omitempty"`
	TokenEndpointAuthMethodsSupported          []string `json:"token_endpoint_auth_methods_supported,omitempty"`
	TokenEndpointAuthSigningAlgValuesSupported []string `json:"token_endpoint_auth_signing_alg_values_supported,omitempty"`
	IntrospectionEndpoint                      string   `json:"introspection_endpoint,omitempty"`
	RevocationEndpoint                         string   `json:"revocation_endpoint,omitempty"`
	RegistrationEndpoint                       string   `json:"registration_endpoint,omitempty"`
}

Jump to

Keyboard shortcuts

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