Passschlüssel
Ein Passkey ermöglicht es jemandem, sich mit seinem Fingerabdruck, Gesichts- oder Geräte-PIN anzumelden, anstatt ein Passwort einzugeben. Er wird auf dem Gerät, im Passwortmanager oder auf dem Handy gespeichert, funktioniert nur auf der Seite, für die er erstellt wurde, und kann nicht gephishingt oder anderswo wiederverwendet werden. Power Portals Pro fügt Passkeys zu den lokalen Konten eines Portals sowohl auf React als auch auf Blazor hinzu: Nutzer fügen sie auf ihrer Kontoseite hinzu und melden sich dann mit einem einzelnen Schritt ein.
Passschlüssel ausschalten
Passkeys sind überall dort aktiviert, wo lokale Konten sind (LocalAccountsEnabled, standardmäßig eingeschaltet): Ein Passkey ist eine lokale Zugangsinformation, die für einen Kontakt wie ein Passwort gespeichert wird. Für ein Portal, das sie nicht anbieten sollte, setzen PasskeysEnabled AuthClientOptions Sie auf false in Program.cs. Deaktiviert stoppt der Server die Passkey-Routen und verweigert die Passkey-Anmeldung, die Kontoseiten zeigen sie nicht mehr an, und bereits gespeicherte Passkeys können nicht mehr verwendet werden.
builder.Services.Configure<AuthClientOptions>(options => options.PasskeysEnabled = false);
Wichtig
Passkeys werden in der
ppp_passkeyTabelle gespeichert, die die verwaltete Power Portals Pro Lösung bereitstellt. Importiere die Lösung, bevor die Kontoseiten Passkeys anbieten, und stelle sicher, dass der Anwendungsbenutzer des Portals die ausgelieferte Anwendungsbenutzerrolle innehat, die seine Rechte in der Tabelle übernimmt.
Auf den Kontoseiten
Die Kontoseiten, die von den Projektvorlagen generiert werden, zeigen Passkeys an, wann immer sie aktiviert sind: einen Anmelde-Button mit Passkey-Button auf der Login-Seite neben dem Pass-Formular und einen Passkey-Bereich auf der Profilseite, in dem der Nutzer seine Passkeys hinzufügt, umbenennt und entfernt. Beide werden von GET /api/auth/options, oder AuthClientOptions auf einer Blazor-Server-Seite gelesen passkeysEnabled und zeigen nichts, solange Passkeys deaktiviert sind.
Die Komponenten
Zwei Komponenten auf beiden Stacks erledigen die Arbeit. PasskeySignInButton Meldet sich mit einem von der Person gewählten Passkey an und rendert in einem Browser nichts, was keine Passkeys verwenden kann. PasskeyManager Listet die Passkeys des angemeldeten Benutzers auf und erlaubt ihm, sie hinzuzufügen, umzubenennen und zu entfernen. Zeigt sie nur an, solange Passkeys aktiviert sind.
Reagieren
import { LoginResult } from '@powerportalspro/core';
import { PasskeyManager, PasskeySignInButton } from '@powerportalspro/react-fluent';
// On the sign-in page, when GET /api/auth/options reports passkeysEnabled
<PasskeySignInButton onResult={(result) => result === LoginResult.Success && navigate(returnUrl)} />
// On the signed-in user's account page
<PasskeyManager />
Blazor
@* On the sign-in page, when passkeys are on *@
<PasskeySignInButton ReturnUrl="@ReturnUrl" OnResult="OnPasskeyResult" />
@* On the signed-in user's account page *@
<PasskeyManager />
Nach der Anmeldung lädt der Blazor-Button die Seite neu bei ReturnUrl, sodass alles darauf den Benutzer erkennt. OnResult Die Seite übergibt die Ergebnisse, die sie selbst verwaltet, wie zum Beispiel ein gesperrtes Konto. Der Browser-Teil der Zeremonie läuft in den eigenen Skripten der Komponenten, sodass sie unter Blazor Server, WebAssembly und Auto ähnlich funktionieren.
Wie eine Zeremonie funktioniert
Jede Passkey-Operation besteht aus zwei Anfragen, die auf der Passkey-Unterstützung ASP.NET Core Identity basieren: Die erste gibt die Optionen zurück, an die der Browser weitergibt navigator.credentials, und die zweite sendet zurück, was der Browser beantwortet hat. Identity behält die Herausforderung zwischen ihnen in einem Cookie.
- Anmeldung:
POST /api/auth/passkey/request-options, dannPOST /api/auth/passkey/login, was die Signatur mit dem gespeicherten öffentlichen Schlüssel abgleicht und den Benutzer anmeldet. Beide zählen für das Adresslimit bei Anmeldeformularen. - Management:
GET /api/auth/manage/passkeysListe sie auf;POST /api/auth/manage/passkeys/creation-optionsundPOST /api/auth/manage/passkeysfüge eine hinzu;/renameund/removetu, was sie sagen. Auf ReactAuthClient.signInWithPasskeyAsyncundcreatePasskeyAsynceine ganze Zeremonie in einem Anruf durchführen.
Sicherheit
- Ein Passkey, der die PIN oder biometrische Kennzahl der Person prüft, ist zwei Faktoren für sich, daher verlangt eine Passkey-Anmeldung keinen Authentivotierungscode. Ein ausgesperrtes oder unbestätigtes Konto wird abgelehnt, wie beim Passwort-Anmelden.
- Ein Passkey funktioniert nur auf der Domain, auf der er erstellt wurde. Wenn das Portal in eine andere Domain wechselt oder ein Staging Slot einen eigenen Hostnamen hat, funktionieren bestehende Passkeys dort nicht. Stellen Sie es so ein,
IdentityPasskeyOptions.ServerDomaindass die Domain-Passkeys dafür gemacht werden. ppp_passkeyist eine geschützte Tabelle: Keine Portalanfrage erreicht sie, egal welche Rolle oder Sicherheitsrolle sie gewährt. Der Anmelde- und Kontocode liest und schreibt sie als Anwendung. Was er enthält – ein öffentlicher Schlüssel und die vom Browser signierten Daten – ist nicht geheim.- Ein Administrator, der sich als Nutzer ausgibt, kann die Passkeys des Benutzers nicht hinzufügen oder entfernen, da er dessen Passwort nicht ändern kann.
- Interne Nutzer melden sich über die Microsoft Entra-ID an, die ihre Passkeys behält; sie haben keine im Portal.
Anmerkung
Browser erlauben Passkeys nur bei sicheren Ursprüngen:
https, oderlocalhostwährend der Entwicklung.
