Documentation
¶
Overview ¶
Package passkeys implements the server side of WebAuthn.
Index ¶
- type AssertionOptions
- type AttestationOptions
- type Bytes
- type Config
- type CredentialID
- type EventRecorder
- type FakeAuthenticator
- func (a *FakeAuthenticator) Create(options *AttestationOptions) (clientDataJSON, attestationObject []byte, err error)
- func (a *FakeAuthenticator) Get(options *AssertionOptions) (id []byte, clientDataJSON, authData, signature, userHandle []byte, err error)
- func (a *FakeAuthenticator) RotateKeys() error
- func (a *FakeAuthenticator) SetOrigin(orig string)
- type Manager
- func (m *Manager) HandleCallback(w http.ResponseWriter, req *http.Request)
- func (m *Manager) ManageKeys(w http.ResponseWriter, req *http.Request)
- func (m *Manager) RequestLogin(w http.ResponseWriter, req *http.Request, origURL string)
- func (m *Manager) ServeWellKnown(w http.ResponseWriter, req *http.Request)
- func (m *Manager) SetACL(acl *[]string)
- type PubKeyCredParam
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AssertionOptions ¶
type AssertionOptions struct {
// The cryptographic challenge is 32 random bytes.
Challenge Bytes `json:"challenge"`
// Timeout in milliseconds.
Timeout int `json:"timeout,omitempty"`
// A list of credentials already registered for this user.
AllowCredentials []CredentialID `json:"allowCredentials"`
// UserVerification: required, preferred, discouraged
UserVerification string `json:"userVerification"`
}
AssertionOptions encapsulates the options to navigator.credentials.get().
type AttestationOptions ¶
type AttestationOptions struct {
// The cryptographic challenge is 32 random bytes.
Challenge Bytes `json:"challenge"`
// The name of the relying party. The ID is optional.
RelyingParty struct {
Name string `json:"name"`
ID string `json:"id,omitempty"`
} `json:"rp"`
// The user information.
User struct {
ID Bytes `json:"id"`
Name string `json:"name"`
DisplayName string `json:"displayName"`
} `json:"user"`
// The acceptable public key params.
PubKeyCredParams []PubKeyCredParam `json:"pubKeyCredParams,omitempty"`
// Timeout in milliseconds.
Timeout int `json:"timeout,omitempty"`
// A list of credentials already registered for this user.
ExcludeCredentials []CredentialID `json:"excludeCredentials,omitempty"`
// The type of attestation
Attestation string `json:"attestation,omitempty"`
// Authticator selection parameters.
AuthenticatorSelection struct {
// required, preferred, or discouraged
UserVerification string `json:"userVerification"`
// Whether we want discoverable credentials.
RequireResidentKey bool `json:"requireResidentKey"`
} `json:"authenticatorSelection"`
// Extensions.
Extensions map[string]interface{} `json:"extensions,omitempty"`
}
AttestationOptions encapsulates the options to navigator.credentials.create().
type Config ¶
type Config struct {
Store *storage.Storage
Other interface {
RequestLogin(w http.ResponseWriter, req *http.Request, origURL string)
}
RefreshInterval time.Duration
Endpoint string
EventRecorder EventRecorder
CookieManager *cookiemanager.CookieManager
OtherCookieManager *cookiemanager.CookieManager
TokenManager *tokenmanager.TokenManager
ClaimsFromCtx func(context.Context) jwt.MapClaims
}
type CredentialID ¶
type CredentialID struct {
// The type of credentials. Always "public-key"
Type string `json:"type"`
// The credential ID.
ID Bytes `json:"id"`
// The available transports for this credential.
Transports []string `json:"transports,omitempty"`
}
CredentialID is a credential ID from an anthenticator.
type EventRecorder ¶
type EventRecorder interface {
Record(string)
}
EventRecorder is used to record events.
type FakeAuthenticator ¶
type FakeAuthenticator struct {
// contains filtered or unexported fields
}
FakeAuthenticator mimics the behavior of a WebAuthn authenticator for testing.
func NewFakeAuthenticator ¶
func NewFakeAuthenticator() (*FakeAuthenticator, error)
NewFakeAuthenticator returns a new FakeAuthenticator for testing.
func (*FakeAuthenticator) Create ¶
func (a *FakeAuthenticator) Create(options *AttestationOptions) (clientDataJSON, attestationObject []byte, err error)
Create mimics the behavior of the WebAuthn create call.
func (*FakeAuthenticator) Get ¶
func (a *FakeAuthenticator) Get(options *AssertionOptions) (id []byte, clientDataJSON, authData, signature, userHandle []byte, err error)
Get mimics the behavior of the WebAuthn create call.
func (*FakeAuthenticator) RotateKeys ¶
func (a *FakeAuthenticator) RotateKeys() error
func (*FakeAuthenticator) SetOrigin ¶
func (a *FakeAuthenticator) SetOrigin(orig string)
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
func NewManager ¶
func (*Manager) HandleCallback ¶
func (m *Manager) HandleCallback(w http.ResponseWriter, req *http.Request)
func (*Manager) ManageKeys ¶
func (m *Manager) ManageKeys(w http.ResponseWriter, req *http.Request)
func (*Manager) RequestLogin ¶
func (*Manager) ServeWellKnown ¶ added in v0.0.32
func (m *Manager) ServeWellKnown(w http.ResponseWriter, req *http.Request)
ServeWellKnown serves a list of passkey endpoints. https://github.com/ms-id-standards/MSIdentityStandardsExplainers/blob/main/PasskeyEndpointsWellKnownUrl/explainer.md#proposed-solution
type PubKeyCredParam ¶
type PubKeyCredParam struct {
// The type of credentials. Always "public-key"
Type string `json:"type"`
// The encryption algorythm: -7 for ES256, -257 for RS256.
Alg int `json:"alg"`
}
PubKeyCredParam: Public key credential parameters.