Documentation ¶
Index ¶
- Constants
- func CodeChallengeToOIDC(challenge *OIDCCodeChallenge) *oidc.CodeChallenge
- func MaxAgeToInternal(maxAge *uint) *time.Duration
- func NewStorage() *storage
- func PromptToInternal(oidcPrompt oidc.SpaceDelimitedArray) []string
- func RefreshTokenRequestFromBusiness(token *RefreshToken) op.RefreshTokenRequest
- func RegisterClients(registerClients ...*Client)
- type AuthRequest
- func (a *AuthRequest) Done() bool
- func (a *AuthRequest) GetACR() string
- func (a *AuthRequest) GetAMR() []string
- func (a *AuthRequest) GetAudience() []string
- func (a *AuthRequest) GetAuthTime() time.Time
- func (a *AuthRequest) GetClientID() string
- func (a *AuthRequest) GetCodeChallenge() *oidc.CodeChallenge
- func (a *AuthRequest) GetID() string
- func (a *AuthRequest) GetNonce() string
- func (a *AuthRequest) GetRedirectURI() string
- func (a *AuthRequest) GetResponseMode() oidc.ResponseMode
- func (a *AuthRequest) GetResponseType() oidc.ResponseType
- func (a *AuthRequest) GetScopes() []string
- func (a *AuthRequest) GetState() string
- func (a *AuthRequest) GetSubject() string
- type Client
- func (c *Client) AccessTokenType() op.AccessTokenType
- func (c *Client) ApplicationType() op.ApplicationType
- func (c *Client) AuthMethod() oidc.AuthMethod
- func (c *Client) ClockSkew() time.Duration
- func (c *Client) DevMode() bool
- func (c *Client) GetID() string
- func (c *Client) GrantTypes() []oidc.GrantType
- func (c *Client) IDTokenLifetime() time.Duration
- func (c *Client) IDTokenUserinfoClaimsAssertion() bool
- func (c *Client) IsScopeAllowed(scope string) bool
- func (c *Client) LoginURL(id string) string
- func (c *Client) PostLogoutRedirectURIs() []string
- func (c *Client) RedirectURIs() []string
- func (c *Client) ResponseTypes() []oidc.ResponseType
- func (c *Client) RestrictAdditionalAccessTokenScopes() func(scopes []string) []string
- func (c *Client) RestrictAdditionalIdTokenScopes() func(scopes []string) []string
- type OIDCCodeChallenge
- type RefreshToken
- type RefreshTokenRequest
- func (r *RefreshTokenRequest) GetAMR() []string
- func (r *RefreshTokenRequest) GetAudience() []string
- func (r *RefreshTokenRequest) GetAuthTime() time.Time
- func (r *RefreshTokenRequest) GetClientID() string
- func (r *RefreshTokenRequest) GetScopes() []string
- func (r *RefreshTokenRequest) GetSubject() string
- func (r *RefreshTokenRequest) SetCurrentScopes(scopes []string)
- type Service
- type Token
- type User
Constants ¶
const ( //CustomScope is an example for how to use custom scopes in this library //(in this scenario, when requested, it will return a custom claim) CustomScope = "custom_scope" //CustomClaim is an example for how to return custom claims with this library CustomClaim = "custom_claim" )
Variables ¶
This section is empty.
Functions ¶
func CodeChallengeToOIDC ¶
func CodeChallengeToOIDC(challenge *OIDCCodeChallenge) *oidc.CodeChallenge
func MaxAgeToInternal ¶
func NewStorage ¶
func NewStorage() *storage
func PromptToInternal ¶
func PromptToInternal(oidcPrompt oidc.SpaceDelimitedArray) []string
func RefreshTokenRequestFromBusiness ¶
func RefreshTokenRequestFromBusiness(token *RefreshToken) op.RefreshTokenRequest
RefreshTokenRequestFromBusiness will simply wrap the internal RefreshToken to implement the op.RefreshTokenRequest interface
func RegisterClients ¶
func RegisterClients(registerClients ...*Client)
RegisterClients enables you to register clients for the example implementation there are some clients (web and native) to try out different cases add more if necessary
Types ¶
type AuthRequest ¶
type AuthRequest struct { ID string CreationDate time.Time ApplicationID string CallbackURI string TransferState string Prompt []string UiLocales []language.Tag LoginHint string MaxAuthAge *time.Duration UserID string Scopes []string ResponseType oidc.ResponseType Nonce string CodeChallenge *OIDCCodeChallenge // contains filtered or unexported fields }
func (*AuthRequest) Done ¶
func (a *AuthRequest) Done() bool
func (*AuthRequest) GetACR ¶
func (a *AuthRequest) GetACR() string
func (*AuthRequest) GetAMR ¶
func (a *AuthRequest) GetAMR() []string
func (*AuthRequest) GetAudience ¶
func (a *AuthRequest) GetAudience() []string
func (*AuthRequest) GetAuthTime ¶
func (a *AuthRequest) GetAuthTime() time.Time
func (*AuthRequest) GetClientID ¶
func (a *AuthRequest) GetClientID() string
func (*AuthRequest) GetCodeChallenge ¶
func (a *AuthRequest) GetCodeChallenge() *oidc.CodeChallenge
func (*AuthRequest) GetID ¶
func (a *AuthRequest) GetID() string
func (*AuthRequest) GetNonce ¶
func (a *AuthRequest) GetNonce() string
func (*AuthRequest) GetRedirectURI ¶
func (a *AuthRequest) GetRedirectURI() string
func (*AuthRequest) GetResponseMode ¶
func (a *AuthRequest) GetResponseMode() oidc.ResponseMode
func (*AuthRequest) GetResponseType ¶
func (a *AuthRequest) GetResponseType() oidc.ResponseType
func (*AuthRequest) GetScopes ¶
func (a *AuthRequest) GetScopes() []string
func (*AuthRequest) GetState ¶
func (a *AuthRequest) GetState() string
func (*AuthRequest) GetSubject ¶
func (a *AuthRequest) GetSubject() string
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client represents the internal model of an OAuth/OIDC client this could also be your database model
func NativeClient ¶
NativeClient will create a client of type native, which will always use PKCE and allow the use of refresh tokens user-defined redirectURIs may include: - http://localhost without port specification (e.g. http://localhost/auth/callback) - custom protocol (e.g. custom://auth/callback) (the examples will be used as default, if none is provided)
func WebClient ¶
WebClient will create a client of type web, which will always use Basic Auth and allow the use of refresh tokens user-defined redirectURIs may include: - http://localhost with port specification (e.g. http://localhost:9999/auth/callback) (the example will be used as default, if none is provided)
func (*Client) AccessTokenType ¶
func (c *Client) AccessTokenType() op.AccessTokenType
AccessTokenType must return the type of access token the client uses (Bearer (opaque) or JWT)
func (*Client) ApplicationType ¶
func (c *Client) ApplicationType() op.ApplicationType
ApplicationType must return the type of the client (app, native, user agent)
func (*Client) AuthMethod ¶
func (c *Client) AuthMethod() oidc.AuthMethod
AuthMethod must return the authentication method (client_secret_basic, client_secret_post, none, private_key_jwt)
func (*Client) ClockSkew ¶
ClockSkew enables clients to instruct the OP to apply a clock skew on the various times and expirations (subtract from issued_at, add to expiration, ...)
func (*Client) DevMode ¶
DevMode enables the use of non-compliant configs such as redirect_uris (e.g. http schema for user agent client)
func (*Client) GrantTypes ¶
GrantTypes must return all allowed grant types (authorization_code, refresh_token, urn:ietf:params:oauth:grant-type:jwt-bearer)
func (*Client) IDTokenLifetime ¶
IDTokenLifetime must return the lifetime of the client's id_tokens
func (*Client) IDTokenUserinfoClaimsAssertion ¶
IDTokenUserinfoClaimsAssertion allows specifying if claims of scope profile, email, phone and address are asserted into the id_token even if an access token if issued which violates the OIDC Core spec (5.4. Requesting Claims using Scope Values: https://openid.net/specs/openid-connect-core-1_0.html#ScopeClaims) some clients though require that e.g. email is always in the id_token when requested even if an access_token is issued
func (*Client) IsScopeAllowed ¶
IsScopeAllowed enables Client specific custom scopes validation in this example we allow the CustomScope for all clients
func (*Client) LoginURL ¶
LoginURL will be called to redirect the user (agent) to the login UI you could implement some logic here to redirect the users to different login UIs depending on the client
func (*Client) PostLogoutRedirectURIs ¶
PostLogoutRedirectURIs must return the registered post_logout_redirect_uris for sign-outs
func (*Client) RedirectURIs ¶
RedirectURIs must return the registered redirect_uris for Code and Implicit Flow
func (*Client) ResponseTypes ¶
func (c *Client) ResponseTypes() []oidc.ResponseType
ResponseTypes must return all allowed response types (code, id_token token, id_token) these must match with the allowed grant types
func (*Client) RestrictAdditionalAccessTokenScopes ¶
RestrictAdditionalAccessTokenScopes allows specifying which custom scopes shall be asserted into the JWT access_token
func (*Client) RestrictAdditionalIdTokenScopes ¶
RestrictAdditionalIdTokenScopes allows specifying which custom scopes shall be asserted into the id_token
type OIDCCodeChallenge ¶
type RefreshToken ¶
type RefreshTokenRequest ¶
type RefreshTokenRequest struct {
*RefreshToken
}
func (*RefreshTokenRequest) GetAMR ¶
func (r *RefreshTokenRequest) GetAMR() []string
func (*RefreshTokenRequest) GetAudience ¶
func (r *RefreshTokenRequest) GetAudience() []string
func (*RefreshTokenRequest) GetAuthTime ¶
func (r *RefreshTokenRequest) GetAuthTime() time.Time
func (*RefreshTokenRequest) GetClientID ¶
func (r *RefreshTokenRequest) GetClientID() string
func (*RefreshTokenRequest) GetScopes ¶
func (r *RefreshTokenRequest) GetScopes() []string
func (*RefreshTokenRequest) GetSubject ¶
func (r *RefreshTokenRequest) GetSubject() string
func (*RefreshTokenRequest) SetCurrentScopes ¶
func (r *RefreshTokenRequest) SetCurrentScopes(scopes []string)