mirror of
https://github.com/NginxProxyManager/nginx-proxy-manager.git
synced 2026-04-25 01:15:51 +03:00
[PR #5267] Add WebAuthn/Passkey authentication support #4134
Labels
No labels
awaiting feedback
bug
cannot reproduce
dns provider request
duplicate
enhancement
enhancement
enhancement
good first issue
help wanted
invalid
need more info
no certbot plugin available
product-support
pull-request
question
stale
troll
upstream issue
v2
v2
v2
v3
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/nginx-proxy-manager-NginxProxyManager#4134
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/NginxProxyManager/nginx-proxy-manager/pull/5267
Author: @florida117
Created: 2/3/2026
Status: 🔄 Open
Base:
develop← Head:feature/passkey-webauthn-support📝 Commits (10+)
8d5ecf8Add WebAuthn/Passkey authentication support680a597Trigger CI re-run72d2cbeFix securityScheme name in passkey OpenAPI schemasfd3e5f1Fix passkey OpenAPI schema linting warningsb7b5a95Add passkey option to setup page and fix WebAuthn origin detection9cd04b1Add hasPassword support for passkey-only accounts467abceAdd ability to remove password for passkey-enabled accounts01b4da8Fix has_password not returned for passkey-only accounts7c1e0e8Fix User schema to allow token/expires in setup response and add missing example32bdb12Retrigger CI build📊 Changes
35 files changed (+2968 additions, -730 deletions)
View changed files
📝
backend/internal/token.js(+34 -0)📝
backend/internal/user.js(+92 -15)➕
backend/internal/webauthn.js(+397 -0)➕
backend/migrations/20260203120000_webauthn_credentials.js(+51 -0)➕
backend/models/webauthn_credential.js(+67 -0)📝
backend/package.json(+1 -0)📝
backend/routes/tokens.js(+46 -0)📝
backend/routes/users.js(+172 -1)📝
backend/schema/components/user-object.json(+15 -0)➕
backend/schema/paths/tokens/passkey/options/post.json(+64 -0)➕
backend/schema/paths/tokens/passkey/verify/post.json(+43 -0)➕
backend/schema/paths/users/userID/auth/delete.json(+67 -0)➕
backend/schema/paths/users/userID/passkeys/get.json(+55 -0)➕
backend/schema/paths/users/userID/passkeys/passkeyID/delete.json(+45 -0)➕
backend/schema/paths/users/userID/passkeys/passkeyID/put.json(+79 -0)➕
backend/schema/paths/users/userID/passkeys/register/options/post.json(+60 -0)➕
backend/schema/paths/users/userID/passkeys/register/verify/post.json(+81 -0)📝
backend/schema/swagger.json(+35 -0)📝
backend/yarn.lock(+617 -423)📝
frontend/package.json(+1 -0)...and 15 more files
📄 Description
Summary
Implements passwordless passkey (WebAuthn) authentication for the admin interface, as requested in #3363.
Configuration
WebAuthn relying party settings are auto-detected from the request. When behind a reverse proxy, the standard
X-Forwarded-HostandX-Forwarded-Protoheaders are used (Expresstrust proxyis already enabled).Environment variables are available as optional overrides if needed:
WEBAUTHN_RP_IDreq.hostname(auto-detected)WEBAUTHN_RP_NAMENginx Proxy ManagerWEBAUTHN_ORIGINreq.protocol + req.get("host")(auto-detected)Passkeys registered under one origin will not work from a different origin — this is by design in the WebAuthn spec.
Backend changes
webauthn_credentialdatabase table via Knex migrationbackend/models/webauthn_credential.js)backend/internal/webauthn.js) handling registration, authentication, listing, renaming, and deletiongetTokenFromPasskey()added tobackend/internal/token.jsPOST /tokens/passkey/options,POST /tokens/passkey/verifyGET/POST/PUT/DELETE /users/:id/passkeys/...Frontend changes
@simplewebauthn/browserintegration inAuthContext(loginWithPasskey)PasskeyModalfor managing passkeys (register, list, rename, delete)SiteHeaderreact-intllocale stringsDependencies added
@simplewebauthn/server@^11.0.0@simplewebauthn/browser@^11.0.0Test plan
npx knex migrate:latest— verifywebauthn_credentialtable is createdCloses #3363
🤖 Generated with Claude Code
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.