Help us shape the future of Go! Take the 2026 Go Developer Survey

oauthgostate

package
v0.1.5 Latest Latest
Warning

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

Go to latest
Published: Mar 28, 2026 License: MIT Imports: 8 Imported by: 0

Documentation

Index

Constants

View Source
const (
	EnvStateHMAC     = "STATE_HMAC"
	StateCodecTTL    = 2 * time.Minute
	DefaultStateHMAC = "91df202ecc9b45b8b0209e60891098b5"
)

Variables

This section is empty.

Functions

This section is empty.

Types

type StateCodec

type StateCodec struct {
	HMACSecret []byte
	TTL        time.Duration
}

StateCodec is a state token encoder/decoder.

func GetStateCodec

func GetStateCodec() *StateCodec

func (*StateCodec) Decode

func (c *StateCodec) Decode(s string) (StatePayload, error)

Decode decodes a state payload from a base64 encoded string.

func (*StateCodec) Encode

func (c *StateCodec) Encode(sp StatePayload) (string, error)

Encode encodes a state payload with HMAC signing and base64 encoding.

type StatePayload

type StatePayload struct {
	// Provider is the name of the OAuth provider.
	Provider string `json:"provider"`
	// Nonce is a unique value to prevent replay attacks.
	Nonce string `json:"nonce"`
	// CSRF is a value to prevent CSRF attacks.
	CSRF string `json:"csrf"`
	// PKCE is the Proof Key for Code Exchange, used in OAuth 2.0 PKCE flows.
	PKCE *oauthgoutils.PKCE `json:"pkce,omitempty"`
	// Redirect is the URL to redirect the user to after authentication.
	Redirect string `json:"redirect"`
	// IssuedAt is the timestamp when the state was issued.
	IssuedAt int64 `json:"iat"`
	// Extras is a map of additional data that can be included in the state.
	// This can be used to pass custom parameters or data that the application needs.
	Extras map[string]string `json:"extras,omitempty"`
	// ReturnTo is the dynamic url to redirect the user to after authentication.
	ReturnTo string `json:"returnTo"`

	RequestedScopes []string `json:"requestedScopes,omitempty"`

	// RequestParams is a map of additional request parameters that can be included in the state.
	// This can be used to pass custom query parameters in the login endpoint that application can
	// use in the callback results.
	RequestParams map[string]interface{} `json:"requestParams,omitempty"`
}

StatePayload is the payload of a state token.

Jump to

Keyboard shortcuts

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