Filter by title

Web Authentication API (WebAuthn) passkeys

The Web Authentication API (WebAuthn) passkeys feature allows users to authenticate using passkeys, which are more secure and user-friendly alternatives to traditional passwords. Passkeys leverage public key cryptography to provide strong authentication without the need for users to remember complex passwords.

Enabling Passkeys

You can enable/disable the Web Authentication API (WebAuthn) passkeys feature in the Setting > Account > Passkeys page. Also, there is an option to allow how many passkeys a user can register:

passkey-setting

Manage Passkeys

You can add/rename/delete your passkeys in the Account/Manage page:

my-passkey

Click the Add Passkey button to register a new passkey. You will be prompted to use your device's built-in biometric authentication (such as fingerprint or facial recognition) or an external security key to complete the registration process:

add-passkey

Using Passkey for Login

Once you enable the passkey feature and register at least one passkey, you can use it to log in to your account. On the login page, select the Passkey login option and follow the prompts to authenticate using your registered passkey:

passkey-login

passkey-login2

Configure passkey options

ASP.NET Core Identity provides various options to configure passkey behavior through the IdentityPasskeyOptions class, which include:

  • AuthenticatorTimeout: Gets or sets the time that the browser should wait for the authenticator to provide a passkey as a TimeSpan. This option applies to both creating a new passkey and requesting an existing passkey. This option is treated as a hint to the browser, and the browser may ignore the option. The default value is 5 minutes.
  • ChallengeSize: Gets or sets the size of the challenge in bytes sent to the client during attestation and assertion. This option applies to both creating a new passkey and requesting an existing passkey. The default value is 32 bytes.
  • ServerDomain: Gets or sets the effective Relying Party ID (domain) of the server. This should be unique and will be used as the identity for the server. This option applies to both creating a new passkey and requesting an existing passkey. If null, which is the default value, the server's origin is used. For more information, see Relying Party Identifier RP ID.

Example configuration:

builder.Services.Configure<IdentityPasskeyOptions>(options =>
{
    options.ServerDomain = "abp.io";
    options.AuthenticatorTimeout = TimeSpan.FromMinutes(3);
    options.ChallengeSize = 64;
});

For a complete list of configuration options, see IdentityPasskeyOptions. For the most up-to-date browser defaults, see the W3C WebAuthn specification.

HTTPS requirement

All passkey operations require HTTPS. The implementation stores authentication data in encrypted and signed cookies that could be intercepted over unencrypted connections.

Browser Support

Passkeys are supported in most modern browsers, including: Chrome, Edge, Firefox, and Safari. Ensure that you are using the latest version of your browser to take advantage of passkey functionality.

Additional resources

For more information on WebAuthn and passkeys, refer to the following resources:

Contributors


Last updated: December 19, 2025 Edit this page on GitHub

Was this page helpful?

Please make a selection.

To help us improve, please share your reason for the negative feedback in the field below.

Please enter a note.

Thank you for your valuable feedback!

Please note that although we cannot respond to feedback, our team will use your comments to improve the experience.

ABP Community Talks
AI-Powered .NET Apps with ABP & Microsoft Agent Framework
18 Dec, 17:00
Online
Watch the Event
ABP Live Webinar
Webinar Calendar Webinar Calendar
Discover
ABP Platform
Register Now
Jan 07
Wednesday,
17:00 UTC
Learn More, Pay Less
33% OFF
All Trainings!
Get Your Deal
Mastering ABP Framework Book
The Official Guide
Mastering
ABP Framework
Learn More
Mastering ABP Framework Book
1
ABP Assistant
🔐 You need to be logged in to use the chatbot. Please log in first.