Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ( // ErrSAMLRequest indicates there is an error on SAML callback request. ErrSAMLRequest = errors.New("malformed SAML callback request") // ErrUserDataCallback indicates there was an error executing user data callback. ErrUserDataCallback = errors.New("error on user data callback") // ErrGeneratingToken indicates there was an error genereting JWT token. ErrGeneratingToken = errors.New("error generating token") // ErrRelayStateInvalid indicates the provided "redirect_to" URL is not valid. ErrRelayStateInvalid = errors.New("invalid RelayState URL") // ErrUntrustedDomain indicates the redirect domain is not trusted. ErrUntrustedDomain = errors.New("redirect to an untrusted domain was requested") )
var ( // ErrParsingMetadata indicates there was an error obtaining or parsing metadata. ErrParsingMetadata = errors.New("error parsing metadata") // ErrMalformedSAML indicates there is a format error on SAML callback request. ErrMalformedSAML = errors.New("malformed SAML request content") // ErrNotInAudience indicates SAML validation contains an audience related warning. ErrNotInAudience = errors.New("not in audience") )
Functions ¶
This section is empty.
Types ¶
type CallbackConfig ¶
type CallbackConfig struct { CookieName string CookieDomain string CookieSecure bool UserDataCallback UserDataCallback TokenGenerator TokenGenerator }
CallbackConfig specifies config options for the login callback function.
type Handler ¶
type Handler interface { LoginHandler() http.HandlerFunc LoginCallbackHandler(CallbackConfig) http.HandlerFunc }
Handler represents a SAML authentication handler.
func NewHandler ¶
NewHandler builds a new SAML handler from a SAML provider and a list of trusted domains.
type Provider ¶
type Provider interface { BuildAuthURL(url string) (string, error) GetUserData(samlResp string) (UserData, error) }
Provider represents a component that is able to interact and communicate with a SAML IdP.
func NewProvider ¶
func NewProvider(metadataURL, issuerURL, callbackURL string, keyStore X509KeyStore) (Provider, error)
NewProvider builds a new SAML provider. keyStore is the X509 keystore to use for request signing.
type RandomKeyStore ¶
type RandomKeyStore struct {
// contains filtered or unexported fields
}
RandomKeyStore is a X509KeyStore which generates a new random private key and certificate from it. This is acceptable for many IdPs as they often do not verify request signatures (e.g.: Okta)
func NewRandomKeyStore ¶
func NewRandomKeyStore() *RandomKeyStore
NewRandomKeyStore builds a new RandomKeyStore.
func (*RandomKeyStore) GetKeyPair ¶
func (s *RandomKeyStore) GetKeyPair() (privateKey *rsa.PrivateKey, cert []byte, err error)
GetKeyPair returns the keystore private key and certificate.
type TokenGenerator ¶
TokenGenerator defines the method to generate a new session token. Note that is designed thinking in a Bearer token, like OAuth / JWT
type UserData ¶
type UserData struct { UserName string `db:"username"` FirstName string `db:"first_name"` LastName string `db:"last_name"` Email string `db:"email"` }
UserData contains the basic auth data associated with a user obtained from SAML response.
type UserDataCallback ¶
UserDataCallback represents the callback to execute when user data is obtained from SAML response.
type X509KeyStore ¶
type X509KeyStore interface {
GetKeyPair() (privateKey *rsa.PrivateKey, cert []byte, err error)
}
X509KeyStore represents an X509 keystore.