Passkey
WebAuthn 无密码认证
在线 Playground
在浏览器中直接体验本页相关 API,无需本地安装 Go 环境。
Passkey
以下为
common/passkeyREADME 全文。
Thin wrapper around go-webauthn that implements the WebAuthn / Passkey server-side ceremony (registration and authentication) for passwordless login.
The package is a stateless facade. The caller provides two pieces of persistent state: a CredentialStore (mapping user handles to registered credentials) and a SessionStore (ephemeral challenge storage between the Begin and Finish steps). This separation lets the package work with any backing store (memory, Redis, SQL).
Key types
Config— configures the WebAuthn Relying Party (RPID, RPDisplayName, RPOrigins)User— interface a user entity must satisfyCredential— wraps a registered WebAuthn credentialSessionData— JSON-serializable ceremony session stateRegistrationOptions/LoginOptions— ceremony tuningDiscoverableUserHandler— looks up a user by handle for usernameless login
Quick start
import "github.com/LingByte/ling-base/common/passkey"
wa, err := passkey.New(passkey.Config{
RPID: "example.com",
RPDisplayName: "My App",
RPOrigins: []string{"https://example.com"},
})
// Registration
cred, session, err := wa.BeginRegistration(user, nil)
newCred, err := wa.FinishRegistration(user, storedSession, r)
// Discoverable (usernameless) login
assertion, session, err := wa.BeginDiscoverableLogin(nil)
user, cred, err := wa.FinishDiscoverableLogin(userHandler, storedSession, r)