Documentation
¶
Overview ¶
package gopenidclient is an attempt to provide nice OAuth2 / OpenID Connect (OIDC) interface.
OAuth2 integration is provided in the "static" package. An OpenID Connect (OIDC) provider backed by github.com/coreos/go-oidc/v3/oidc is available under code.pfad.fr/gopenidclient/coreos.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Assertion ¶
Assertion allows the usage of client_assertion instead of client_secret for better security. The code.pfad.fr/gopenidclient/coreos provider supports it. See code.pfad.fr/gopenidclient/assertion.RS256 for an implementation based on RSA+SHA256.
type CallbackResult ¶
type CallbackResult struct {
// UnmarshalUser will unmarshal the JSON user returned by the provider
// var user struct {
// ID string `json:"sub"`
// Email string `json:"email"`
// Name string `json:"name"`
// }
// err = UnmarshalUser(&user)
UnmarshalUser func(interface{}) error
Token *oauth2.Token
// IntendedPath contains the URL before the login flow took place
IntendedPath string
}
CallbackResult is returned at the end of the login flow
type CookieManager ¶
type CookieManager struct {
Prefix string
Encrypter interface {
Seal(name, cleartext string) string
Open(name, cyphertext string) (string, error)
}
}
func (CookieManager) Clear ¶
func (cm CookieManager) Clear(w http.ResponseWriter)
func (CookieManager) GetState ¶
func (cm CookieManager) GetState(r *http.Request) (string, error)
GetState gets the state cookie (which stores the intended URL of the user before authentication).
func (CookieManager) SetState ¶
func (cm CookieManager) SetState(w http.ResponseWriter, state string)
SetState sets the state cookie (which stores the intended URL of the user before authentication).
type ExchangeHandler ¶
type ExchangeHandler struct {
CookieManager CookieManager
}
ExchangeHandler implements the exchange-code flow (including PKCE challenge).
func (ExchangeHandler) HandleCallback ¶
func (s ExchangeHandler) HandleCallback(w http.ResponseWriter, r *http.Request, provider Provider) (cr CallbackResult, clearCookies func(), err error)
HandleCallback should be called after the user logged in at the provider.
func (ExchangeHandler) RedirectToAuthCodeURL ¶
func (s ExchangeHandler) RedirectToAuthCodeURL(w http.ResponseWriter, r *http.Request, provider Provider) error
RedirectToAuthCodeURL should be called to redirect the user to the provider for login.
type Provider ¶
type Provider interface {
// SetRedirectURL sets the local callback URL.
SetRedirectURL(url string)
// AuthCodeURL returns the Provider URL to redirect the user to.
AuthCodeURL(state string) (url, pkceVerifier string, err error)
// Exchange exchanges the code and provides a way to unmarshal the user info.
//
// var user struct {
// ID string `json:"sub"`
// Email string `json:"email"`
// Name string `json:"name"`
// }
// err = unmarshalUser(&user)
Exchange(code, pkceVerifier string) (token *oauth2.Token, unmarshalUser func(interface{}) error, err error)
// EndSessionURL is a URL where the RP can perform a redirect to request that the End-User be logged out at the OP.
EndSessionURL() (*url.URL, error)
}
Provider is an interface suitable for OAuth2 and OIDC flows.
Directories
¶
| Path | Synopsis |
|---|---|
|
package assertion authenticate OpenID Connect clients using [private_key_jwt] (private/public certificates instead of a shared secret), via OAuth 2.0 assertions specified in [RFC 7521].
|
package assertion authenticate OpenID Connect clients using [private_key_jwt] (private/public certificates instead of a shared secret), via OAuth 2.0 assertions specified in [RFC 7521]. |
|
package common gather methods used by the provider implementation
|
package common gather methods used by the provider implementation |
|
tester
package tester should be used to test the different providers
|
package tester should be used to test the different providers |
|
package coreos provides a Provider for OpenID Connect (code.pfad.fr/gopenidclient), backed by the github.com/coreos/go-oidc/v3/oidc package.
|
package coreos provides a Provider for OpenID Connect (code.pfad.fr/gopenidclient), backed by the github.com/coreos/go-oidc/v3/oidc package. |
|
package refresh uses the refresh-token as a remember token (stored encrypted in a dedicated cookie).
|
package refresh uses the refresh-token as a remember token (stored encrypted in a dedicated cookie). |
|
package static uses golang.org/x/oauth2 to implement a Provider for the OAuth2 flow with a static config.
|
package static uses golang.org/x/oauth2 to implement a Provider for the OAuth2 flow with a static config. |