sso

package
v0.0.0-...-c4f7e29 Latest Latest
Warning

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

Go to latest
Published: Apr 26, 2024 License: Apache-2.0 Imports: 28 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var InvalidConfiguration = apierrors.InternalError.WithReason("InvalidConfiguration")
View Source
var OAuthError = apierrors.BadRequest.WithReason("OAuthError")
View Source
var OAuthProtocolError = apierrors.BadRequest.WithReason("OAuthProtocolError")

Functions

func MakeAuthorizationURL

func MakeAuthorizationURL(base string, query url.Values) string

func NewOAuthError

func NewOAuthError(errorString string, errorDescription string, errorURI string) error

Types

type ADFSImpl

type ADFSImpl struct {
	Clock                        clock.Clock
	ProviderConfig               config.OAuthSSOProviderConfig
	Credentials                  config.OAuthSSOProviderCredentialsItem
	StandardAttributesNormalizer StandardAttributesNormalizer
	HTTPClient                   OAuthHTTPClient
}

func (*ADFSImpl) Config

func (*ADFSImpl) GetAuthInfo

func (f *ADFSImpl) GetAuthInfo(r OAuthAuthorizationResponse, param GetAuthInfoParam) (authInfo AuthInfo, err error)

func (*ADFSImpl) GetAuthURL

func (f *ADFSImpl) GetAuthURL(param GetAuthURLParam) (string, error)

func (*ADFSImpl) GetPrompt

func (f *ADFSImpl) GetPrompt(prompt []string) []string

func (*ADFSImpl) OpenIDConnectGetAuthInfo

func (f *ADFSImpl) OpenIDConnectGetAuthInfo(r OAuthAuthorizationResponse, param GetAuthInfoParam) (authInfo AuthInfo, err error)

func (*ADFSImpl) Type

type AccessTokenResp

type AccessTokenResp map[string]interface{}

func NewBearerAccessTokenResp

func NewBearerAccessTokenResp(accessToken string) AccessTokenResp

func (AccessTokenResp) AccessToken

func (r AccessTokenResp) AccessToken() string

func (AccessTokenResp) ExpiresIn

func (r AccessTokenResp) ExpiresIn() int

func (AccessTokenResp) IDToken

func (r AccessTokenResp) IDToken() string

func (AccessTokenResp) TokenType

func (r AccessTokenResp) TokenType() string

type AppleImpl

type AppleImpl struct {
	Clock                        clock.Clock
	ProviderConfig               config.OAuthSSOProviderConfig
	Credentials                  config.OAuthSSOProviderCredentialsItem
	StandardAttributesNormalizer StandardAttributesNormalizer
	HTTPClient                   OAuthHTTPClient
}

func (*AppleImpl) Config

func (*AppleImpl) GetAuthInfo

func (f *AppleImpl) GetAuthInfo(r OAuthAuthorizationResponse, param GetAuthInfoParam) (authInfo AuthInfo, err error)

func (*AppleImpl) GetAuthURL

func (f *AppleImpl) GetAuthURL(param GetAuthURLParam) (string, error)

func (*AppleImpl) GetPrompt

func (f *AppleImpl) GetPrompt(prompt []string) []string

func (*AppleImpl) OpenIDConnectGetAuthInfo

func (f *AppleImpl) OpenIDConnectGetAuthInfo(r OAuthAuthorizationResponse, param GetAuthInfoParam) (authInfo AuthInfo, err error)

func (*AppleImpl) Type

type AuthInfo

type AuthInfo struct {
	ProviderRawProfile map[string]interface{}
	// ProviderUserID is not necessarily equal to sub.
	// If there exists a more unique identifier than sub, that identifier is chosen instead.
	ProviderUserID     string
	StandardAttributes stdattrs.T
}

type AuthorizationURLParams

type AuthorizationURLParams struct {
	ClientID     string
	RedirectURI  string
	Scope        []string
	ResponseType ResponseType
	ResponseMode ResponseMode
	State        string
	Prompt       []string
	Nonce        string

	WechatAppID string
}

func (AuthorizationURLParams) Query

func (p AuthorizationURLParams) Query() url.Values

type Azureadb2cImpl

type Azureadb2cImpl struct {
	Clock                        clock.Clock
	ProviderConfig               config.OAuthSSOProviderConfig
	Credentials                  config.OAuthSSOProviderCredentialsItem
	StandardAttributesNormalizer StandardAttributesNormalizer
	HTTPClient                   OAuthHTTPClient
}

func (*Azureadb2cImpl) Config

func (*Azureadb2cImpl) Extract

func (f *Azureadb2cImpl) Extract(claims map[string]interface{}) (stdattrs.T, error)

func (*Azureadb2cImpl) GetAuthInfo

func (f *Azureadb2cImpl) GetAuthInfo(r OAuthAuthorizationResponse, param GetAuthInfoParam) (authInfo AuthInfo, err error)

func (*Azureadb2cImpl) GetAuthURL

func (f *Azureadb2cImpl) GetAuthURL(param GetAuthURLParam) (string, error)

func (*Azureadb2cImpl) GetPrompt

func (f *Azureadb2cImpl) GetPrompt(prompt []string) []string

func (*Azureadb2cImpl) OpenIDConnectGetAuthInfo

func (f *Azureadb2cImpl) OpenIDConnectGetAuthInfo(r OAuthAuthorizationResponse, param GetAuthInfoParam) (authInfo AuthInfo, err error)

func (*Azureadb2cImpl) Type

type Azureadv2Impl

type Azureadv2Impl struct {
	Clock                        clock.Clock
	ProviderConfig               config.OAuthSSOProviderConfig
	Credentials                  config.OAuthSSOProviderCredentialsItem
	StandardAttributesNormalizer StandardAttributesNormalizer
	HTTPClient                   OAuthHTTPClient
}

func (*Azureadv2Impl) Config

func (*Azureadv2Impl) GetAuthInfo

func (f *Azureadv2Impl) GetAuthInfo(r OAuthAuthorizationResponse, param GetAuthInfoParam) (authInfo AuthInfo, err error)

func (*Azureadv2Impl) GetAuthURL

func (f *Azureadv2Impl) GetAuthURL(param GetAuthURLParam) (string, error)

func (*Azureadv2Impl) GetPrompt

func (f *Azureadv2Impl) GetPrompt(prompt []string) []string

func (*Azureadv2Impl) OpenIDConnectGetAuthInfo

func (f *Azureadv2Impl) OpenIDConnectGetAuthInfo(r OAuthAuthorizationResponse, param GetAuthInfoParam) (authInfo AuthInfo, err error)

func (*Azureadv2Impl) Type

type FacebookImpl

type FacebookImpl struct {
	ProviderConfig               config.OAuthSSOProviderConfig
	Credentials                  config.OAuthSSOProviderCredentialsItem
	StandardAttributesNormalizer StandardAttributesNormalizer
	HTTPClient                   OAuthHTTPClient
}

func (*FacebookImpl) Config

func (*FacebookImpl) GetAuthInfo

func (f *FacebookImpl) GetAuthInfo(r OAuthAuthorizationResponse, param GetAuthInfoParam) (authInfo AuthInfo, err error)

func (*FacebookImpl) GetAuthURL

func (f *FacebookImpl) GetAuthURL(param GetAuthURLParam) (string, error)

func (*FacebookImpl) GetPrompt

func (f *FacebookImpl) GetPrompt(prompt []string) []string

func (*FacebookImpl) NonOpenIDConnectGetAuthInfo

func (f *FacebookImpl) NonOpenIDConnectGetAuthInfo(r OAuthAuthorizationResponse, param GetAuthInfoParam) (authInfo AuthInfo, err error)

func (*FacebookImpl) Type

type GetAuthInfoParam

type GetAuthInfoParam struct {
	RedirectURI string
	Nonce       string
}

type GetAuthURLParam

type GetAuthURLParam struct {
	RedirectURI  string
	ResponseMode ResponseMode
	Nonce        string
	State        string
	Prompt       []string
}

type GithubImpl

type GithubImpl struct {
	ProviderConfig               config.OAuthSSOProviderConfig
	Credentials                  config.OAuthSSOProviderCredentialsItem
	StandardAttributesNormalizer StandardAttributesNormalizer
	HTTPClient                   OAuthHTTPClient
}

func (*GithubImpl) Config

func (*GithubImpl) GetAuthInfo

func (g *GithubImpl) GetAuthInfo(r OAuthAuthorizationResponse, param GetAuthInfoParam) (authInfo AuthInfo, err error)

func (*GithubImpl) GetAuthURL

func (g *GithubImpl) GetAuthURL(param GetAuthURLParam) (string, error)

func (*GithubImpl) GetPrompt

func (*GithubImpl) GetPrompt(prompt []string) []string

func (*GithubImpl) NonOpenIDConnectGetAuthInfo

func (g *GithubImpl) NonOpenIDConnectGetAuthInfo(r OAuthAuthorizationResponse, param GetAuthInfoParam) (authInfo AuthInfo, err error)

func (*GithubImpl) Type

type GoogleImpl

type GoogleImpl struct {
	Clock                        clock.Clock
	ProviderConfig               config.OAuthSSOProviderConfig
	Credentials                  config.OAuthSSOProviderCredentialsItem
	StandardAttributesNormalizer StandardAttributesNormalizer
	HTTPClient                   OAuthHTTPClient
}

func (*GoogleImpl) Config

func (*GoogleImpl) GetAuthInfo

func (f *GoogleImpl) GetAuthInfo(r OAuthAuthorizationResponse, param GetAuthInfoParam) (authInfo AuthInfo, err error)

func (*GoogleImpl) GetAuthURL

func (f *GoogleImpl) GetAuthURL(param GetAuthURLParam) (string, error)

func (*GoogleImpl) GetPrompt

func (f *GoogleImpl) GetPrompt(prompt []string) []string

func (*GoogleImpl) OpenIDConnectGetAuthInfo

func (f *GoogleImpl) OpenIDConnectGetAuthInfo(r OAuthAuthorizationResponse, param GetAuthInfoParam) (authInfo AuthInfo, err error)

func (*GoogleImpl) Type

type LinkedInImpl

type LinkedInImpl struct {
	ProviderConfig               config.OAuthSSOProviderConfig
	Credentials                  config.OAuthSSOProviderCredentialsItem
	StandardAttributesNormalizer StandardAttributesNormalizer
	HTTPClient                   OAuthHTTPClient
}

func (*LinkedInImpl) Config

func (*LinkedInImpl) GetAuthInfo

func (f *LinkedInImpl) GetAuthInfo(r OAuthAuthorizationResponse, param GetAuthInfoParam) (authInfo AuthInfo, err error)

func (*LinkedInImpl) GetAuthURL

func (f *LinkedInImpl) GetAuthURL(param GetAuthURLParam) (string, error)

func (*LinkedInImpl) GetPrompt

func (f *LinkedInImpl) GetPrompt(prompt []string) []string

func (*LinkedInImpl) NonOpenIDConnectGetAuthInfo

func (f *LinkedInImpl) NonOpenIDConnectGetAuthInfo(r OAuthAuthorizationResponse, param GetAuthInfoParam) (authInfo AuthInfo, err error)

func (*LinkedInImpl) Type

type NonOpenIDConnectProvider

type NonOpenIDConnectProvider interface {
	NonOpenIDConnectGetAuthInfo(r OAuthAuthorizationResponse, param GetAuthInfoParam) (authInfo AuthInfo, err error)
}

NonOpenIDConnectProvider are OAuth 2.0 provider that does not implement OpenID Connect or we do not implement yet. They are "facebook" "linkedin" "wechat"

type OAuthAuthorizationResponse

type OAuthAuthorizationResponse struct {
	Code string
}

type OAuthHTTPClient

type OAuthHTTPClient struct {
	*http.Client
}

func ProvideOAuthHTTPClient

func ProvideOAuthHTTPClient(env *config.EnvironmentConfig) OAuthHTTPClient

type OAuthProvider

type OAuthProvider interface {
	Type() config.OAuthSSOProviderType
	Config() config.OAuthSSOProviderConfig
	GetAuthURL(param GetAuthURLParam) (url string, err error)
	GetAuthInfo(r OAuthAuthorizationResponse, param GetAuthInfoParam) (AuthInfo, error)
	GetPrompt(prompt []string) []string
}

OAuthProvider is OAuth 2.0 based provider.

type OAuthProviderFactory

type OAuthProviderFactory struct {
	IdentityConfig               *config.IdentityConfig
	Credentials                  *config.OAuthSSOProviderCredentials
	Clock                        clock.Clock
	StandardAttributesNormalizer StandardAttributesNormalizer
	HTTPClient                   OAuthHTTPClient
}

func (*OAuthProviderFactory) NewOAuthProvider

func (p *OAuthProviderFactory) NewOAuthProvider(alias string) OAuthProvider

type OIDCDiscoveryDocument

type OIDCDiscoveryDocument struct {
	Issuer                string `json:"issuer"`
	AuthorizationEndpoint string `json:"authorization_endpoint"`
	TokenEndpoint         string `json:"token_endpoint"`
	JWKSUri               string `json:"jwks_uri"`
}

func FetchOIDCDiscoveryDocument

func FetchOIDCDiscoveryDocument(client OAuthHTTPClient, endpoint string) (*OIDCDiscoveryDocument, error)

func (*OIDCDiscoveryDocument) ExchangeCode

func (d *OIDCDiscoveryDocument) ExchangeCode(
	client OAuthHTTPClient,
	clock clock.Clock,
	code string,
	jwks jwk.Set,
	clientID string,
	clientSecret string,
	redirectURI string,
	nonce string,
	tokenResp *AccessTokenResp,
) (jwt.Token, error)

func (*OIDCDiscoveryDocument) FetchJWKs

func (d *OIDCDiscoveryDocument) FetchJWKs(client OAuthHTTPClient) (jwk.Set, error)

func (*OIDCDiscoveryDocument) MakeOAuthURL

func (d *OIDCDiscoveryDocument) MakeOAuthURL(params AuthorizationURLParams) string

type OpenIDConnectProvider

type OpenIDConnectProvider interface {
	OpenIDConnectGetAuthInfo(r OAuthAuthorizationResponse, param GetAuthInfoParam) (authInfo AuthInfo, err error)
}

OpenIDConnectProvider are OpenID Connect provider. They are "google" "apple" "azureadv2" "azureadb2c" "adfs"

type ResponseMode

type ResponseMode string
const (
	ResponseModeFormPost ResponseMode = "form_post"
	ResponseModeQuery    ResponseMode = "query"
)

type ResponseType

type ResponseType string
const (
	ResponseTypeCode ResponseType = "code"
)

type StandardAttributesNormalizer

type StandardAttributesNormalizer interface {
	Normalize(stdattrs.T) error
}

type WechatImpl

type WechatImpl struct {
	ProviderConfig               config.OAuthSSOProviderConfig
	Credentials                  config.OAuthSSOProviderCredentialsItem
	StandardAttributesNormalizer StandardAttributesNormalizer
	HTTPClient                   OAuthHTTPClient
}

func (*WechatImpl) Config

func (*WechatImpl) GetAuthInfo

func (*WechatImpl) GetAuthURL

func (w *WechatImpl) GetAuthURL(param GetAuthURLParam) (string, error)

func (*WechatImpl) GetPrompt

func (w *WechatImpl) GetPrompt(prompt []string) []string

func (*WechatImpl) NonOpenIDConnectGetAuthInfo

func (w *WechatImpl) NonOpenIDConnectGetAuthInfo(r OAuthAuthorizationResponse, _ GetAuthInfoParam) (authInfo AuthInfo, err error)

func (*WechatImpl) Type

Jump to

Keyboard shortcuts

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