{"id":54180,"date":"2024-09-06T11:57:32","date_gmt":"2024-09-06T09:57:32","guid":{"rendered":"https:\/\/www.inovex.de\/?p=54180"},"modified":"2024-09-06T11:57:32","modified_gmt":"2024-09-06T09:57:32","slug":"migration-zu-passkeys","status":"publish","type":"post","link":"https:\/\/www.inovex.de\/de\/blog\/migration-zu-passkeys\/","title":{"rendered":"Migration zu Passkeys: Passwortlose Webanwendungen"},"content":{"rendered":"<p>Passw\u00f6rter sind seit dem Beginn des Computerzeitalters der Status Quo zur Authentifizierung. Ver\u00e4nderte technische Rahmenbedingungen und die stark gestiegene Verbreitung von digitalen Systemen macht die Relevanz einer sicheren Authentifizierung deutlich. Um die zahlreichen Schw\u00e4chen von Passw\u00f6rtern zur Authentifizierung in Webanwendungen zu beheben, existiert seit 2016 mit <a href=\"https:\/\/www.inovex.de\/de\/blog\/fido2-webauthn-in-practice\/\">WebAuthn<\/a> ein Standard f\u00fcr passwortlose Authentifizierung. Mit der Erweiterung auf Passkeys einige Jahre sp\u00e4ter erf\u00e4hrt die Technologie zunehmende Verbreitung. W\u00e4hrend die technische Umsetzung in Browsern und Plattformen bereits etabliert ist, ist die Integration von Passkeys in eine konkrete Webanwendung und insbesondere die Migration zu Passkeys f\u00fcr viele Projekte noch unklar. Zur Implementierung existieren mehrere Varianten, die in diesem Artikel evaluiert werden.<!--more--><\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\"><p class=\"ez-toc-title\" style=\"cursor:inherit\"><\/p>\n<\/div><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.inovex.de\/de\/blog\/migration-zu-passkeys\/#Die-Unsicherheit-von-Passwoertern\" >Die Unsicherheit von Passw\u00f6rtern<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.inovex.de\/de\/blog\/migration-zu-passkeys\/#Migration-zu-Passkeys-in-Webanwendungen\" >Migration zu Passkeys in Webanwendungen<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.inovex.de\/de\/blog\/migration-zu-passkeys\/#Migration-zu-Passkeys-mittels-Library\" >Migration zu Passkeys mittels Library<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.inovex.de\/de\/blog\/migration-zu-passkeys\/#Passkeys-as-a-Service\" >Passkeys as a Service<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.inovex.de\/de\/blog\/migration-zu-passkeys\/#Vergleich-der-Implementierungsansaetze-bei-der-Migration-zu-Passkeys\" >Vergleich der Implementierungsans\u00e4tze bei der Migration zu Passkeys<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.inovex.de\/de\/blog\/migration-zu-passkeys\/#Handlungsempfehlung\" >Handlungsempfehlung<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.inovex.de\/de\/blog\/migration-zu-passkeys\/#Best-Practices-bei-der-Migration-zu-Passkeys\" >Best Practices bei der Migration zu Passkeys<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.inovex.de\/de\/blog\/migration-zu-passkeys\/#Die-Zukunft-der-passwortlosen-Authentifizierung\" >Die Zukunft der passwortlosen Authentifizierung<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"Die-Unsicherheit-von-Passwoertern\"><\/span>Die Unsicherheit von Passw\u00f6rtern<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Die Sicherheitsprobleme mit herk\u00f6mmlichen Passw\u00f6rtern werden durch zahlreiche alarmierende Statistiken unterstrichen. Schwache oder gestohlene Passw\u00f6rter sind verantwortlich f\u00fcr <a href=\"https:\/\/www.verizon.com\/business\/en-gb\/resources\/reports\/2020-data-breach-investigations-report.pdf\">81 % der durch Hacking verursachten Datenlecks<\/a>. Ein wesentlicher Faktor dabei sind Credential-Phishing-Angriffe, bei denen Nutzer:innen auf t\u00e4uschend echte Webseiten gelockt werden, die vertraute Benutzeroberfl\u00e4chen nachahmen und zur Eingabe von Anmeldeinformationen auffordern. Im Jahr 2022 gaben <a href=\"https:\/\/get.hypr.com\/2022-state-of-passwordless-security\">89 % befragter Unternehmen<\/a> an, von Phishing-Angriffen betroffen gewesen zu sein. Die rasante Entwicklung generativer KI versch\u00e4rft die Lage zus\u00e4tzlich, da Cyberkriminelle nun Phishing-Angriffe noch schneller und raffinierter durchf\u00fchren k\u00f6nnen. Dies f\u00fchrte in den letzten sechs Monaten zu einem besorgniserregenden<a href=\"https:\/\/www.securitymagazine.com\/articles\/100687-the-last-six-months-shows-a-341-increase-in-malicious-emails#:~:text=Instead%20of%20writing%20their%20own,creating%20a%20deep%20fake%20video.%E2%80%9D\"> Anstieg der Phishing-Angriffe um 217 %<\/a>. Obwohl Zwei-Faktor-Authentifizierung (2FA) und Passwortmanager einen gewissen Schutz bieten, bek\u00e4mpfen sie lediglich die Symptome und nicht die eigentliche Ursache des Problems. Dieser Verlauf verdeutlicht, dass Passw\u00f6rter nicht mehr ausreichen, um die Sicherheit von Daten und Identit\u00e4ten zu gew\u00e4hrleisten.<\/p>\n<p>Die gute Nachricht ist, dass es bereits eine geeignete Alternative gibt: Passkeys! Diese innovative Authentifizierungsmethode wurde Mitte 2022 von f\u00fchrenden Technologieunternehmen wie Apple, Google und Microsoft eingef\u00fchrt. Eine wachsende Anzahl namhafter Unternehmen wie Adobe, Nvidia, Amazon oder PayPal unterst\u00fctzt bereits Passkeys. Passkeys k\u00f6nnen nicht nur herk\u00f6mmliche Passw\u00f6rter ersetzen, sondern auch dazu beitragen, s\u00e4mtliche Sicherheitsrisiken zu minimieren \u2013 wie beispielsweise Phishing-Angriffe \u2013 und gleichzeitig die Nutzungsfreundlichkeit verbessern.<\/p>\n<p>In diesem Blogbeitrag werden die verschiedenen Implementierungsans\u00e4tze zur Integration von Passkeys in Webanwendungen erl\u00e4utert und gegen\u00fcbergestellt. Zus\u00e4tzlich bietet der Artikel eine Handlungsempfehlung zur Auswahl eines Ansatzes f\u00fcr die vorliegende Ausgangssituation. Abschlie\u00dfend werden Aspekte aufgef\u00fchrt, die es bei einer Migration zu Passkeys zu beachten gilt.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Migration-zu-Passkeys-in-Webanwendungen\"><\/span>Migration zu Passkeys in Webanwendungen<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Die unterschiedlichen M\u00f6glichkeiten zur Migration einer Anwendung zu Passkeys werden im Folgenden am Beispiel von <a href=\"http:\/\/scrumlr.io\">scrumlr.io<\/a> vorgestellt. Scrumlr ist eine Webanwendung f\u00fcr kollaborative Online-Retrospektiven, die von inovex entwickelt und betrieben wird und open-source gestellt wurde. Die Migration von Scrumlr brachte dabei Erkenntnisse \u00fcber die Implementierungsvarianten, insbesondere bei der Nutzung von Passkey-as-a-Service-Anbietern.<\/p>\n<p>Eine funktionsf\u00e4hige Integration von Passkeys sollte mindestens die folgenden drei Anforderungen erf\u00fcllen:<\/p>\n<ul>\n<li>Der User kann sich einen Passkey registrieren.<\/li>\n<li>Der User kann seine erstellten Passkeys verwalten.<\/li>\n<li>Der User kann sich mittels eines Passkeys authentifizieren.<\/li>\n<\/ul>\n<p>Dies bedarf der Implementierung der zwei Passkey-Zeremonien f\u00fcr die Registrierung und Authentifizierung eines Users. Diese Zeremonien basieren auf dem FIDO2-Standard und erfordern eine Interaktion zwischen dem User (Client), dem Webservice (Relying Party) und dem Authenticator (z. B. Endger\u00e4t oder Security-Key). Der Client initiiert beispielsweise die Authentifizierung bei der Relying Party, best\u00e4tigt seine Identit\u00e4t mithilfe des Authenticators und asymmetrischer Kryptographie sowie dem Challenge-Response-Verfahren gegen\u00fcber der Relying Party. Weitere Einzelheiten zur genauen Funktionsweise k\u00f6nnen beispielsweise dem <a href=\"https:\/\/developers.yubico.com\/WebAuthn\/WebAuthn_Developer_Guide\/\">Webauthn Developer Guide von Yubico<\/a> entnommen werden oder auch <a href=\"https:\/\/www.inovex.de\/de\/blog\/fido2-webauthn-in-practice\/\">diesem Artikel<\/a>. Dar\u00fcber hinaus m\u00fcssen s\u00e4mtliche Zugriffsfunktionalit\u00e4ten (CRUD) f\u00fcr die Zeremonien und die Verwaltung von Passkeys sowie eine benutzerfreundliche Oberfl\u00e4che f\u00fcr Passkeys bereitgestellt werden.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Migration-zu-Passkeys-mittels-Library\"><\/span>Migration zu Passkeys mittels Library<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Der erste von drei Ans\u00e4tzen, hier als LIB bezeichnet, umfasst die eigenst\u00e4ndige Implementierung ausschlie\u00dflich durch Libraries sowohl f\u00fcr die Server- als auch f\u00fcr die Client-Seite, ohne externe Services. Die Libraries auf der Client-Seite bieten haupts\u00e4chlich entwicklerfreundliche Funktionen, die als Wrapper f\u00fcr die beiden Browser-API-Funktionen <span class=\"lang:js decode:true crayon-inline \">navigator.credentials.create<\/span>\u00a0(zur Registrierung eines Passkeys) und <span class=\"lang:js decode:true crayon-inline \">navigator.credentials.get<\/span> (zur Authentifizierung mittels Passkeys) fungieren. Libraries auf der Serverseite sind insbesondere f\u00fcr die Erstellung von Passkey-spezifischen Objekten zust\u00e4ndig, die Optionen f\u00fcr die Registrierung und Authentifizierung beinhalten. Diese Objekte erleichtern den Informationsaustausch zwischen den beteiligten Parteien. Au\u00dferdem werden Funktionen bereitgestellt, die die Verifikation von Signaturen unterst\u00fctzen. Diese Libraries helfen jedoch nicht bei der Verwaltung von Passkeys (CRUD-Operationen) oder der Erstellung einer geeigneten Benutzungsoberfl\u00e4che.<\/p>\n<p>Scrumlr wurde auf der Serverseite mit Go und auf der Clientseite mit TypeScript entwickelt. F\u00fcr die Implementierung wurden passende Libraries ausgew\u00e4hlt \u2013 darunter <a href=\"https:\/\/github.com\/go-webauthn\/webauthn\">go-webauthn<\/a> f\u00fcr den Server und <a href=\"https:\/\/github.com\/MasterKale\/SimpleWebAuthn\">simpleWebAuthn<\/a> f\u00fcr den Client. Weitere Alternativen sind unter anderem <a href=\"https:\/\/passkeys.dev\/docs\/tools-libraries\/libraries\/\">hier<\/a> zu finden. Die Abl\u00e4ufe und Funktionsbezeichnungen variieren kaum zwischen den verschiedenen Libraries, da sie alle auf demselben FIDO2-Standard basieren. Die Entscheidungsfindung bei der Auswahl erfolgt daher vorwiegend nach pers\u00f6nlicher Pr\u00e4ferenz.<\/p>\n<p>Die Implementierung der Passkey-Zeremonie zur Registrierung eines Passkeys k\u00f6nnte unter Verwendung der Libraries folgenderma\u00dfen aussehen:<\/p>\n<p>Der Prozess beginnt damit, dass der Client die Registrierung eines Passkeys durch einen HTTP-POST-Request an den Endpunkt <span class=\"lang:default decode:true crayon-inline \">*\/passkeys\/beginRegistration<\/span> auf dem Server initiiert. Nach der Konfiguration und Instanziierung der Go-Library generiert der Server auf die Anfrage des Clients spezielle Optionen (options).<\/p>\n<pre class=\"lang:go decode:true\">options, session, err := s.webAuthn.BeginRegistration(\r\n\tuser,\r\n\twebauthn.WithAuthenticatorSelection(authSelect),\r\n\twebauthn.WithExclusions(excludeCredentials),\r\n)<\/pre>\n<p>Diese Optionen bestimmen den genauen Ablauf der Registrierung durch den Authenticator. Der aufrufende Client erh\u00e4lt die Optionen in der Antwort des Servers. Der Client nutzt anschlie\u00dfend die Optionen \u00fcber die Funktion startRegistration der Client-TypeScript-Library um die Registrierung auf dem Authenticator anzusto\u00dfen. Diese Funktion fungiert als Wrapper der Browser-API-Funktion navigator.credentials.create(). Dabei wird im Wesentlichen ein Schl\u00fcsselpaar (Public- und Private-Key) generiert, um die ben\u00f6tigten Passkey-Verfahren der asymmetrischen Kryptographie nutzen zu k\u00f6nnen.<\/p>\n<pre class=\"lang:js decode:true\">const authenticatorResponse = await startRegistration(await registrationOptions.publicKey);<\/pre>\n<p>Die authenticatorResponse enth\u00e4lt den generierten Public-Key sowie weitere erforderliche Informationen, die der Client dann an den Endpunkt <span class=\"lang:default decode:true crayon-inline \">*\/passkeys\/finishRegistration<\/span>\u00a0 des Servers sendet. Um die Passkey-Registrierungszeremonie abzuschlie\u00dfen, verwendet der Server die Funktion <span class=\"lang:default decode:true crayon-inline \">FinishRegistration<\/span>.<\/p>\n<pre class=\"lang:go decode:true\">credential, err := s.webAuthn.FinishRegistration(user, *session, request.authenticatorResponse)<\/pre>\n<p>Diese Funktion \u00fcberpr\u00fcft die Inhalte der authenticatorResponse und verifiziert haupts\u00e4chlich angewandte Signaturen, um die Authentizit\u00e4t und Integrit\u00e4t sicherzustellen. An diesem Punkt endet die Unterst\u00fctzung durch Client- und Server-Libraries.<\/p>\n<p>Nach erfolgreicher Verifikation ist der n\u00e4chste Schritt die Verwaltung des Public Keys (credential) selbst. Dazu m\u00fcssen s\u00e4mtliche Zugriffsfunktionalit\u00e4ten (CRUD) f\u00fcr das Speichern, Aktualisieren und L\u00f6schen eines Passkeys entwickelt werden. Au\u00dferdem ist es erforderlich, eine geeignete Nutzungsoberfl\u00e4che zu erstellen, um sowohl die Verwaltung der Passkeys als auch die beiden Passkey-Zeremonien f\u00fcr die Registrierung und Authentifizierung zu erm\u00f6glichen.<\/p>\n<p>Bei der Gestaltung der Benutzungsoberfl\u00e4che im Scrumlr wurde sich an vorhandenen L\u00f6sungen wie <a href=\"https:\/\/passkeys.io\/\">passkeys.io<\/a> sowie an Passkey-spezifischen <a href=\"https:\/\/fidoalliance.org\/design-system\/ux-guidelines\/\">Richtlinien der FIDO-Alliance<\/a> orientiert. Diese Richtlinien beinhalten beispielsweise die Verwendung des offiziellen Passkey-Logos. Die Verwaltung und Registrierung von Passkeys k\u00f6nnte dann wie folgt aussehen:<\/p>\n<p><a href=\"https:\/\/www.inovex.de\/wp-content\/uploads\/Scrumlr_Passkeys_Verwaltung.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-54203\" src=\"https:\/\/www.inovex.de\/wp-content\/uploads\/Scrumlr_Passkeys_Verwaltung-1024x670.png\" alt=\"Verwaltung und Registrierung von Passkeys bei Scrumlr\" width=\"640\" height=\"419\" srcset=\"https:\/\/www.inovex.de\/wp-content\/uploads\/Scrumlr_Passkeys_Verwaltung-1024x670.png 1024w, https:\/\/www.inovex.de\/wp-content\/uploads\/Scrumlr_Passkeys_Verwaltung-300x196.png 300w, https:\/\/www.inovex.de\/wp-content\/uploads\/Scrumlr_Passkeys_Verwaltung-768x502.png 768w, https:\/\/www.inovex.de\/wp-content\/uploads\/Scrumlr_Passkeys_Verwaltung-1536x1005.png 1536w, https:\/\/www.inovex.de\/wp-content\/uploads\/Scrumlr_Passkeys_Verwaltung-2048x1339.png 2048w, https:\/\/www.inovex.de\/wp-content\/uploads\/Scrumlr_Passkeys_Verwaltung-1920x1256.png 1920w, https:\/\/www.inovex.de\/wp-content\/uploads\/Scrumlr_Passkeys_Verwaltung-400x262.png 400w, https:\/\/www.inovex.de\/wp-content\/uploads\/Scrumlr_Passkeys_Verwaltung-360x235.png 360w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><\/p>\n<p>Die Benutzungsoberfl\u00e4che f\u00fcr die Authentifizierung wurde entsprechend diesem Design gestaltet:<\/p>\n<p><a href=\"https:\/\/www.inovex.de\/wp-content\/uploads\/Scrumlr_Login_Passkey.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-54201\" src=\"https:\/\/www.inovex.de\/wp-content\/uploads\/Scrumlr_Login_Passkey-239x300.png\" alt=\"Benutzeroberfl\u00e4che f\u00fcr die Authentifizierung bei Scrumlr\" width=\"239\" height=\"300\" srcset=\"https:\/\/www.inovex.de\/wp-content\/uploads\/Scrumlr_Login_Passkey-239x300.png 239w, https:\/\/www.inovex.de\/wp-content\/uploads\/Scrumlr_Login_Passkey-817x1024.png 817w, https:\/\/www.inovex.de\/wp-content\/uploads\/Scrumlr_Login_Passkey-768x962.png 768w, https:\/\/www.inovex.de\/wp-content\/uploads\/Scrumlr_Login_Passkey-1226x1536.png 1226w, https:\/\/www.inovex.de\/wp-content\/uploads\/Scrumlr_Login_Passkey-1634x2048.png 1634w, https:\/\/www.inovex.de\/wp-content\/uploads\/Scrumlr_Login_Passkey-1920x2406.png 1920w, https:\/\/www.inovex.de\/wp-content\/uploads\/Scrumlr_Login_Passkey-400x501.png 400w, https:\/\/www.inovex.de\/wp-content\/uploads\/Scrumlr_Login_Passkey-360x451.png 360w\" sizes=\"auto, (max-width: 239px) 100vw, 239px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Passkeys-as-a-Service\"><\/span>Passkeys as a Service<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Als Alternative zu LIB kann einer der zwei identifizierten Services, Hanko oder Corbado, verwendet werden, die jeweils die Integration von Passkeys \u00fcber unterschiedliche Implementierungsans\u00e4tze erleichtern.<\/p>\n<p><a href=\"https:\/\/www.hanko.io\/passkey-api\">Hanko<\/a> verfolgt einen API-basierten Ansatz und stellt eine spezifische REST-API bereit, \u00fcber die s\u00e4mtliche Funktionalit\u00e4ten f\u00fcr die Umsetzung der beiden Passkey-Zeremonien zur Registrierung und Authentifizierung genutzt werden k\u00f6nnen. Dies bedeutet, dass anstelle der Verwendung von Funktionen einer Library HTTP-Anfragen an eine REST-API gesendet werden, um beispielsweise eine Registrierung zu initiieren oder die Registrierung abschlie\u00dfend zu verifizieren. Der wesentliche Unterschied dieses Ansatzes liegt jedoch in der Verwaltung der Passkeys.<\/p>\n<p>Im Gegensatz zum vorherigen LIB-Ansatz werden die Passkeys nun bei einem Service gespeichert, wodurch dieser auch s\u00e4mtliche Zugriffsfunktionalit\u00e4ten (CRUD) \u00fcber die API bereitstellen muss.<\/p>\n<p>Ein Endpunkt und dessen Nutzung zur Initiierung einer Registrierung beim Hanko-Service w\u00fcrde in der Programmiersprache Go dann beispielsweise folgender Struktur entsprechen.<\/p>\n<pre class=\"lang:go decode:true\">url := \"https:\/\/passkeys.hanko.io\/{tenant_id}\/registration\/initialize\"\r\npayload := strings.NewReader(user)\r\nreq, _ := http.NewRequest(\"POST\", url, payload)\r\nreq.Header.Add(\"apiKey\", \"&lt;apikey&gt;\")\r\nreq.Header.Add(\"Content-Type\", \"application\/json\")\r\nres, _ := http.DefaultClient.Do(req)\r\n<\/pre>\n<p><a href=\"https:\/\/www.corbado.com\/\">Corbado<\/a> als dritter und letzter Implementierungsansatz (WCO-Ansatz) bzw. Service stellt hingegen vorgefertigte Web Components bereit, die clientseitig eingebunden und konfiguriert werden m\u00fcssen. Diese Web Components enthalten im Vergleich zu den anderen beiden Ans\u00e4tzen bereits eine Passkey-spezifische Benutzeroberfl\u00e4che und die Funktionalit\u00e4t, um die zwei Passkey-Zeremonien zu verwenden. Der WCO-Ansatz \u00fcbernimmt ebenso die Verwaltung der Passkeys und somit die Entwicklung s\u00e4mtlicher Zugriffsfunktionalit\u00e4ten (CRUD).<\/p>\n<p>Beispielsweise die Web Component f\u00fcr die Registrierung beziehungsweise Assoziierung eines Passkeys besitzt folgenden Aufbau und rendert lediglich einen Button mit dem Titel \u201cCreate a Passkey\u201c.<\/p>\n<pre class=\"lang:xhtml decode:true \">&lt;corbado-passkey-associate \r\n   project-id=\"&lt;project ID&gt;\"\r\n   association-token=\"&lt;assocation token&gt;\"\r\n\/&gt;\r\n<\/pre>\n<p>F\u00fcr die Konfiguration dieser Web Component ist neben einer Project-ID ein sogenannter Association-Token erforderlich. Dieser Token enth\u00e4lt notwendige Informationen \u00fcber die zu registrierenden Nutzer:innen und muss \u00fcber einen geeigneten Endpunkt der Corbado-API generiert werden. Auf diese Weise wird eine Verbindung zwischen dem seitens des Services erstellten Schl\u00fcsselpaars und dem User hergestellt.<\/p>\n<p>Hingegen sind die Web Components f\u00fcr die Authentifizierung als auch die Verwaltung von Passkeys deutlich umfangreicher in der Konfiguration. Sie \u00fcbernehmen zudem eine auf Passkeys zugeschnittene Dialogf\u00fchrung, um Nutzer:innen durch die diversen Abl\u00e4ufe zu begleiten. Genauere Details sind der <a href=\"https:\/\/docs.corbado.com\/overview\/welcome\">Dokumentation<\/a> zu entnehmen.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Vergleich-der-Implementierungsansaetze-bei-der-Migration-zu-Passkeys\"><\/span>Vergleich der Implementierungsans\u00e4tze bei der Migration zu Passkeys<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Die drei genannten Implementierungsans\u00e4tze f\u00fcr die Migration zu Passkeys k\u00f6nnen anhand einer Vielzahl Kriterien unterschieden werden. In der folgenden Tabelle sind einige dieser Kriterien zusammengefasst und gegen\u00fcbergestellt. Die drei verwendeten Implementierungsans\u00e4tze sind auf der X-Achse und sieben Kriterien auf der Y-Achse aufgef\u00fchrt.<\/p>\n\n<table id=\"tablepress-97\" class=\"tablepress tablepress-id-97\">\n<thead>\n<tr class=\"row-1\">\n\t<td class=\"column-1\"><\/td><th class=\"column-2\">LIB<\/th><th class=\"column-3\">API<\/th><th class=\"column-4\">WCO<\/th>\n<\/tr>\n<\/thead>\n<tbody class=\"row-striping row-hover\">\n<tr class=\"row-2\">\n\t<td class=\"column-1\">Funktionsumfang<\/td><td class=\"column-2\">PK-Zeremonien durch Libraries<\/td><td class=\"column-3\">PK-Zeremonien durch Rest-API + <br \/>\nPK-CRUD Funktionalit\u00e4ten<\/td><td class=\"column-4\">PK-Zeremonien durch Web Comp. + <br \/>\nPK-CRUD Funktionalit\u00e4ten +<br \/>\nPK-UI\/UX<\/td>\n<\/tr>\n<tr class=\"row-3\">\n\t<td class=\"column-1\">Entwicklungsaufwand<\/td><td class=\"column-2\">Hoch<\/td><td class=\"column-3\">Mittel (~50% von LIB)<\/td><td class=\"column-4\">Niedrig (~25% von LIB)<\/td>\n<\/tr>\n<tr class=\"row-4\">\n\t<td class=\"column-1\">Flexibilit\u00e4t<\/td><td class=\"column-2\">Hoch<\/td><td class=\"column-3\">Hoch bis Mittel<\/td><td class=\"column-4\">Niedrig<\/td>\n<\/tr>\n<tr class=\"row-5\">\n\t<td class=\"column-1\">Datensicherheit<\/td><td class=\"column-2\">Selbst zust\u00e4ndig<\/td><td class=\"column-3\">Service zust\u00e4ndig<\/td><td class=\"column-4\">Service zust\u00e4ndig<\/td>\n<\/tr>\n<tr class=\"row-6\">\n\t<td class=\"column-1\">Service-Abh\u00e4ngigkeiten<\/td><td class=\"column-2\">Nein<\/td><td class=\"column-3\">Ja<\/td><td class=\"column-4\">Ja<\/td>\n<\/tr>\n<tr class=\"row-7\">\n\t<td class=\"column-1\">Nutzungsgeb\u00fchren<\/td><td class=\"column-2\">Keine<\/td><td class=\"column-3\">Erforderlich $<\/td><td class=\"column-4\">Erforderlich $$$<\/td>\n<\/tr>\n<tr class=\"row-8\">\n\t<td class=\"column-1\">Session-Management<\/td><td class=\"column-2\">Selbst<\/td><td class=\"column-3\">Selbst<\/td><td class=\"column-4\">Selbst oder Service<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<!-- #tablepress-97 from cache -->\n<h4>Funktionsumfang<\/h4>\n<p>Der Ansatz LIB bietet initial den geringsten Funktionsumfang, denn ausschlie\u00dflich die zwei Passkey-Zeremonien zur Registrierung und Authentifizierung eines Users werden \u00fcber Funktionen der Libraries abgedeckt. Da die Passkeys selbst gespeichert, aktualisiert oder gel\u00f6scht werden m\u00fcssen, ist es notwendig, auch s\u00e4mtliche Passkey-Zugriffsfunktionen zu entwickeln. Dar\u00fcber hinaus muss die gew\u00fcnschte Benutzungsoberfl\u00e4che selbst konzipiert und umgesetzt werden. Im Vergleich dazu werden im Ansatz <em>API<\/em> die Passkeys beim Service verwaltet, was bedeutet, dass auch die Zugriffsfunktionalit\u00e4ten vom Service bereitgestellt werden. Der Ansatz <em>WCO<\/em> umfasst die Implementierung der Passkey-Zeremonien, stellt die Passkey-Zugriffsfunktionen bereit und ebenso eine passkey-spezifische Benutzeroberfl\u00e4che durch die vorgefertigten Web Components.<\/p>\n<h4>Entwicklungsaufwand<\/h4>\n<p>Als Konsequenz des initial bereitgestellten Funktionsumfangs der Ans\u00e4tze ergeben sich unterschiedliche Entwicklungsaufw\u00e4nde f\u00fcr die Fertigstellung der Integration. Die Umsetzung ist sch\u00e4tzungsweise in einem SCRUM-basierten Sprint in zwei bis vier Wochen durchf\u00fchrbar. Der Entwicklungsaufwand f\u00fcr den Ansatz <em>LIB<\/em> befindet sich dabei am oberen Ende, w\u00e4hrend dieser mit den Ans\u00e4tzen <em>API<\/em> oder <em>WCO<\/em> sch\u00e4tzungsweise um 50 % oder sogar 25 % reduziert werden kann.<\/p>\n<h4>Flexibilit\u00e4t<\/h4>\n<p>Der Nachteil des erh\u00f6hten Entwicklungsaufwands durch den erh\u00f6hten eigenst\u00e4ndigen Teil, punktet der LIB-Ansatz bei der Flexibilit\u00e4t. Denn je weniger ein Service involviert ist, desto h\u00f6her die Gestaltungsfreiheit in der Umsetzung. Bei bereits bestehenden komplexen Authentifzierungstrukturen kann dies ein entscheidender Vorteil sein. Im Vergleich zum Ansatz <em>LIB<\/em> als auch <em>API<\/em> l\u00e4sst sich im Ansatz <em>WCO<\/em> die vorgefertigte Web Component lediglich anhand vordefinierter CSS Klassen an das Design der Anwendung anpassen. Die genauen Abl\u00e4ufe sowie wichtige Dialogf\u00fchrung mit dem User bei der Registrierung sowie Authentifizierung muss \u00fcbernommen werden und ist nur wenig bis gar nicht anpassbar.<\/p>\n<h4>Datensicherheit<\/h4>\n<p>Die Verwendung eines Services bedeutet eine eingeschr\u00e4nkte Datensicherheit. Denn im Vergleich zum LIB Ansatz verwalten die Services s\u00e4mtliche Passkeys. Au\u00dferdem erlangen diese Informationen dar\u00fcber, welche Nutzer sich zu welchen Zeitpunkten einen Passkeys registriert oder damit authentifiziert haben. Die Sicherheit dieser Daten ist dem Service \u00fcberlassen.<\/p>\n<h4>Service-Abh\u00e4ngigkeit<\/h4>\n<p>Die Verwendung der Ans\u00e4tze API und WCO resultiert in einer ernstzunehmenden Abh\u00e4ngigkeit. Denn die Services stellen die essentielle Funktionalit\u00e4t f\u00fcr die Registrierung und Authentifizierung von Nutzer:innen bereit. F\u00e4llt der Service aus oder erf\u00fcllt nicht sein Leistungsversprechen, k\u00f6nnte Nutzer:innen der Zugang zur Anwendung verwehrt bleiben.<\/p>\n<h4>Nutzungsgeb\u00fchren<\/h4>\n<p>W\u00e4hrend die Nutzung der Services beziehungsweise Ans\u00e4tze API und WCO gegen\u00fcber dem LIB-Ansatz Entwicklungsaufwand und damit initial Geld einsparen kann, erfordern diese jedoch die Bezahlung fortlaufender Nutzungsgeb\u00fchren. Diese Nutzungsgeb\u00fchren bestehen jeweils aus einem fixen und einem variablen Teil, der anhand der Anzahl Monthly Active User (MAU) berechnet wird. Ber\u00fccksichtigend des unterschiedlichen Funktionsumfangs entspricht der Ansatz <em>API<\/em> in etwa einem Drittel der Geb\u00fchren, die der WCO-Ansatz bzw. -Service fordert.<\/p>\n<h4>Session-Management<\/h4>\n<p>Ausschlie\u00dflich der Service mit dem Ansatz <em>WCO<\/em> unterst\u00fctzt die Verwaltung von User Sessions. Diese Sessions sind jedoch ausschlie\u00dflich f\u00fcr Nutzer:innen, die \u00fcber den Service einen Passkey erstellt haben. Das Session-Management f\u00fcr Nutzer:innen alternativer existierender Authentifizierungsmethoden muss weiterhin selbst \u00fcbernommen werden.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Handlungsempfehlung\"><\/span>Handlungsempfehlung<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Basierend auf dem Vergleich der Implementierungsans\u00e4tze l\u00e4sst sich eine Handlungsempfehlung in Form eines Entscheidungsdiagramms ableiten. Je nach individuellem Ausgangsszenario erweist sich einer der Ans\u00e4tze als besonders geeignet. Diese Empfehlung dient als Leitfaden und Starthilfe f\u00fcr die Integration von Passkeys in eine Anwendung.<\/p>\n<p><a href=\"https:\/\/www.inovex.de\/wp-content\/uploads\/Blogheader-e-diagramm.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-54191 size-full\" src=\"https:\/\/www.inovex.de\/wp-content\/uploads\/Blogheader-e-diagramm.png\" alt=\"Flowchart als Entscheidungshilfe bei der Migration zu Passkeys: Welcher Implementierungansatz ist der passende?\" width=\"1500\" height=\"880\" srcset=\"https:\/\/www.inovex.de\/wp-content\/uploads\/Blogheader-e-diagramm.png 1500w, https:\/\/www.inovex.de\/wp-content\/uploads\/Blogheader-e-diagramm-300x176.png 300w, https:\/\/www.inovex.de\/wp-content\/uploads\/Blogheader-e-diagramm-1024x601.png 1024w, https:\/\/www.inovex.de\/wp-content\/uploads\/Blogheader-e-diagramm-768x451.png 768w, https:\/\/www.inovex.de\/wp-content\/uploads\/Blogheader-e-diagramm-400x235.png 400w, https:\/\/www.inovex.de\/wp-content\/uploads\/Blogheader-e-diagramm-360x211.png 360w\" sizes=\"auto, (max-width: 1500px) 100vw, 1500px\" \/><\/a><\/p>\n<p>Bei ausreichendem Budget muss als n\u00e4chstes gekl\u00e4rt werden, ob die Abh\u00e4ngigkeit von der Leistung eines Services akzeptabel ist. Die Leistungserbringung des Services ist von entscheidender Bedeutung, da die Services die Authentifizierung und Registrierung \u00fcbernehmen und damit wesentliche Bestandteile einer Anwendung bereitstellen. Im schlimmsten Fall k\u00f6nnten sich bei einem Ausfall des Services Nutzer:innen nicht mehr anmelden oder neue Accounts registrieren. Zudem muss man sich auf die Fehlerfreiheit, Sicherheit und Aktualisierungen des Services verlassen k\u00f6nnen. Falls diese und andere Service-Abh\u00e4ngigkeiten nicht akzeptabel sind, ist nur noch der Ansatz <em>LIB<\/em> geeignet.<\/p>\n<p>Anschlie\u00dfend gilt es zu kl\u00e4ren, ob neben der Service-Abh\u00e4ngigkeit auch die eingeschr\u00e4nkte Datensicherheit akzeptabel ist. Denn s\u00e4mtliche erstellte Passkeys sowie die Nutzungsverl\u00e4ufe der Passkeys werden bei den Services gespeichert. Zudem m\u00fcsste im Fall eines Service-Wechsels der Export aller Passkeys angefordert und in einen neuen Service importiert werden. Diese Export- und Importfunktion ist nicht zwingend bei jedem Service verf\u00fcgbar. Soll die Sicherheit und Kontrolle der Daten ausschlie\u00dflich unter eigener Beobachtung bestehen, muss der LIB-Ansatz verwendet werden.<\/p>\n<p>Als n\u00e4chstes sollten die Zeit und die Kapazit\u00e4t f\u00fcr die Entwicklung und die Umsetzung der Integration betrachtet werden. Dabei ergeben sich zwei Pfade, die sich weiter aufteilen.<\/p>\n<p>Zuerst wird der Fall betrachtet, wenn f\u00fcr die Umsetzung tendenziell wenig Zeit und Entwicklungskapazit\u00e4ten bereitgestellt werden. Dies entspricht dem rechten Pfad im Diagramm. Da die Umsetzung \u00fcber den Ansatz <em>LIB<\/em> im Vergleich zu den anderen beiden viele der genannten Ressourcen ben\u00f6tigt, ist die Empfehlung, sich auf die zwei verbleibenden Ans\u00e4tze <em>API<\/em> und <em>WCO<\/em> zu konzentrieren. Unter den beiden Ans\u00e4tzen wird noch anhand der Flexibilit\u00e4t bei der Integration in bestehende Strukturen unterschieden. Beide Ans\u00e4tze bieten unterschiedliche Funktionsumf\u00e4nge, die genutzt werden m\u00fcssen, um Entwicklungsaufwand einzusparen. Im Gegenzug erf\u00e4hrt der Entwickler eine eingeschr\u00e4nkte Flexibilit\u00e4t durch nur bedingte Anpassungsm\u00f6glichkeiten. Sollte die bestehende Authentifizierungslogik sowie die UX\/UI der Anwendung eher komplex und individuell gestaltet sein, empfiehlt es sich, den flexibleren API-Ansatz dem weniger flexiblen WCO-Ansatz vorzuziehen.<\/p>\n<p>Wenn tendenziell mehr Zeit und Entwickler:innenkapazit\u00e4t f\u00fcr die Umsetzung zur Verf\u00fcgung stehen, wird die Entscheidungsfindung entlang des linken Pfades durchgef\u00fchrt. Falls dar\u00fcber hinaus Kenntnisse \u00fcber die relevanten Passkey-Prozesse und die Erstellung einer geeigneten Passkey-UI\/UX vorhanden sind, ist aufgrund der Vorteile der uneingeschr\u00e4nkten Entwicklungs- und Gestaltungsfreiheit sowie der Datenkontrolle die Verwendung des LIB-Ansatzes zu bevorzugen. Bei geringen oder fehlenden Kenntnissen empfiehlt es sich, die weitere Differenzierung anhand der Flexibilit\u00e4t der Ans\u00e4tze bei der Integration von Passkeys in bestehende Strukturen durchzuf\u00fchren. In F\u00e4llen von erh\u00f6hter Komplexit\u00e4t der existierenden Authentifizierungslogik und UI\/UX, aber gen\u00fcgend Zeit und Entwicklerkapazit\u00e4t, ist die Verwendung des LIB-Ansatzes zu empfehlen, selbst wenn die Kenntnisse gering oder g\u00e4nzlich fehlend sind. Falls eine erh\u00f6hte Flexibilit\u00e4t nicht notwendig ist, wird unter Ber\u00fccksichtigung bisheriger Entscheidungen die Verwendung des API-Ansatzes als passende L\u00f6sung empfohlen.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Best-Practices-bei-der-Migration-zu-Passkeys\"><\/span>Best Practices bei der Migration zu Passkeys<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Um Passkeys nicht nur mit dem richtigen Implementierungsansatz in die bestehende Anwendung zu integrieren, sondern auch eine Migration zu Passkeys durchzuf\u00fchren, gilt es insbesondere die f\u00fcnf folgenden Aspekte zu beachten. Unter der Migration in diesem Kontext wird das Ziel verstanden, s\u00e4mtliche bestehende Authentifizierungsmethoden und existierende Nutzer komplett auf Passkeys umzuziehen.<\/p>\n<ol>\n<li><span style=\"text-decoration: underline;\">Einschr\u00e4nkung der Registrierung auf Passkeys<br \/>\n<\/span>Es ist wichtig, zu ber\u00fccksichtigen, dass bei der Migration zu Passkeys die Registrierung neuer Nutzer:innen mit alten Authentifizierungsmethoden ab dem Zeitpunkt der Einf\u00fchrung unterbunden werden sollte. Dadurch kann der Fokus ausschlie\u00dflich auf die Konvertierung bestehender User ohne Passkeys zu Passkeys gelegt werden. Es gilt zu beachten, dass in den Ans\u00e4tzen <em>LIB<\/em> und <em>API<\/em> die Authentifizierungslogik und Benutzungsoberfl\u00e4che durch eigene Entwicklungsaufw\u00e4nde entsprechend eingeschr\u00e4nkt werden m\u00fcssen, w\u00e4hrend der Ansatz <em>WCO<\/em> und zugeh\u00f6rige Service Corbado von Beginn an den Migrationsgedanken verfolgen und diese Einschr\u00e4nkung umsetzt.<\/li>\n<li><span style=\"text-decoration: underline;\">Parallelbetrieb der Authentifzierungsmethoden<br \/>\n<\/span>Damit Nutzer:innen \u00fcbergangsweise die neue Authentifizierungsmethode Passkeys zus\u00e4tzlich zu bestehenden Methoden nutzen k\u00f6nnen, ist eine Anpassung der Authentifizierungslogik sowie Benutzungsoberfl\u00e4che erforderlich. Bei den Ans\u00e4tzen <em>LIB<\/em> und <em>API<\/em> kann die bestehende und neue Authentifizierungslogik und Benutzungsoberfl\u00e4che uneingeschr\u00e4nkt zusammengef\u00fchrt werden. Der WCO-Ansatz erfordert hingegen den Einsatz einer vorgefertigten Web Component, was die Zusammenf\u00fchrung der bestehenden und neuen Passkey-L\u00f6sung nur eingeschr\u00e4nkt umsetzbar macht.<\/li>\n<li><span style=\"text-decoration: underline;\">Passkey-Registrierung f\u00fcr angemeldete Nutzer<br \/>\n<\/span>Um die Konvertierungsrate der Nutzer:innen zu Passkeys zu erh\u00f6hen, ist es wichtig, dass nicht nur w\u00e4hrend der Registrierung eines Accounts auf die Erstellung eines Passkeys hingewiesen wird. Es sollte auch die M\u00f6glichkeit geben, dass User, nachdem sie sich bereits mit einer der bestehenden alternativen Authentifizierungsmethoden angemeldet haben, innerhalb der Anwendung einen Passkey registrieren k\u00f6nnen. Im Rahmen der LIB- und API-Ans\u00e4tze ist die Benutzungsoberfl\u00e4che und die Funktionalit\u00e4t f\u00fcr diese Registrierung selbst zu gestalten und zu implementieren. Im Gegensatz dazu wird bei WCO eine vorgefertigte Web Component bereitgestellt, die eingebunden und anschlie\u00dfend an das Design der Anwendung angepasst werden muss.<\/li>\n<li><span style=\"text-decoration: underline;\">Einhaltung Passkey-spezifischer Richtlinien<br \/>\n<\/span>Als n\u00e4chstes ist es von entscheidender Bedeutung, die bereits erw\u00e4hnten spezifischen <a href=\"https:\/\/fidoalliance.org\/design-system\/ux-guidelines\/\">Richtlinien der FIDO-Alliance<\/a> f\u00fcr Passkeys bei der Gestaltung des User Interface zu ber\u00fccksichtigen, um die Benutzungserfahrung zu optimieren und die Konvertierungsrate zu Passkeys zu steigern. Insbesondere sollte der Passkey-First-Ansatz verfolgt werden, um gezielt die Verwendung von Passkeys zu f\u00f6rdern. In der \u00dcbergangsphase und des Parallelbetriebs wird den Nutzer:innen durch eine angemessene Dialogf\u00fchrung w\u00e4hrend der Registrierung und Authentifizierung die Verwendung eines Passkeys besonders nahegelegt.<\/li>\n<li><span style=\"text-decoration: underline;\">Verwendung einer Frist<br \/>\n<\/span>Bei Erreichen eines angemessen festgelegten Schwellenwerts, beispielsweise bei 10-15 % der User, die noch keinen Passkey erstellt haben, k\u00f6nnte eine Frist gesetzt und den Nutzer:innen \u00fcber die Dialogf\u00fchrung kommuniziert werden. Nach Ablauf dieser Frist k\u00f6nnen verschiedene Ma\u00dfnahmen ergriffen werden, wie eine deutliche Benachrichtigung der Nutzer:innen \u00fcber die Bedeutung von Passkeys oder sogar die Beschr\u00e4nkung des Zugangs ausschlie\u00dflich auf Passkeys.<\/li>\n<\/ol>\n<h2><span class=\"ez-toc-section\" id=\"Die-Zukunft-der-passwortlosen-Authentifizierung\"><\/span>Die Zukunft der passwortlosen Authentifizierung<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>In diesem Blog wurden drei verschiedene Ans\u00e4tze zur Implementierung von Passkeys erl\u00e4utert und miteinander verglichen. Daraus wurde eine Handlungsempfehlung abgeleitet, die als Starthilfe und Leitfaden f\u00fcr unterschiedliche Ausgangssituationen dient. Zudem wurden wesentliche Aspekte aufgezeigt, die bei einer vollst\u00e4ndigen Migration zu Passkeys ber\u00fccksichtigt werden sollten.<\/p>\n<p>Obwohl Passkeys mit etwa zwei Jahren noch recht neu ist, existieren bereits zahlreiche etablierte L\u00f6sungen zur Umsetzung. Besonders der LIB-Ansatz, der sich ausschlie\u00dflich auf die Nutzung von Libraries st\u00fctzt, bietet vielf\u00e4ltige Optionen f\u00fcr nahezu jede Programmiersprache. Zus\u00e4tzlich bietet die FIDO-Alliance umfassende Ressourcen, die \u00fcber Funktionsweisen, empfohlene Designrichtlinien und beispielhafte Implementierungen verschiedener Unternehmen informieren.<\/p>\n<p>Trotz der bereits m\u00f6glichen Integration von Passkeys stellt die ideale Gestaltung der Benutzungsoberfl\u00e4che sowie die Dialogf\u00fchrung und die gesamte Migration eine erhebliche Herausforderung dar. Hier besteht weiterhin Forschungsbedarf, denn nur durch eine gute Benutzererfahrung werden Nutzer:innen langfristig Passkeys als Ersatz f\u00fcr traditionelle Passw\u00f6rter akzeptieren.<\/p>\n<p>Ein weiterer wichtiger Aspekt, den es zu untersuchen gilt, ist die M\u00f6glichkeit, die Passkey-Funktionalit\u00e4t zu testen. Dies variiert nicht nur zwischen den verschiedenen Libraries, sondern auch zwischen den Implementierungsans\u00e4tzen. Je mehr Funktionalit\u00e4ten ein Service bietet, desto eingeschr\u00e4nkter kann das Testen sein. Beispielsweise bietet der LIB-Ansatz durch seine geringe Abh\u00e4ngigkeit von externen Services eine h\u00f6here Flexibilit\u00e4t bei der Testgestaltung, w\u00e4hrend bei servicebasierten Ans\u00e4tzen wie Hanko oder Corbado spezifische Testumgebungen und -szenarien vorgegeben sein k\u00f6nnen.<\/p>\n<p>Abschlie\u00dfend ist zu betonen, dass die vorgestellten Ans\u00e4tze und Services eine Momentaufnahme darstellen. Neue Services und Implementierungsans\u00e4tze k\u00f6nnen jederzeit hinzukommen und sollten ebenfalls untersucht und verglichen werden, um die Handlungsempfehlungen bei Bedarf anzupassen. Insgesamt bieten die beschriebenen Ans\u00e4tze und die Handlungsempfehlung eine solide Grundlage f\u00fcr die Implementierung von Passkeys. Es bleibt jedoch wichtig, die Entwicklungen in diesem Bereich kontinuierlich zu verfolgen und flexibel auf neue Technologien und Best Practices zu reagieren. Nur so kann eine erfolgreiche und nachhaltige Migration zu Passkeys in Webanwendungen gew\u00e4hrleistet werden.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Passw\u00f6rter sind seit dem Beginn des Computerzeitalters der Status Quo zur Authentifizierung. Ver\u00e4nderte technische Rahmenbedingungen und die stark gestiegene Verbreitung von digitalen Systemen macht die Relevanz einer sicheren Authentifizierung deutlich. Um die zahlreichen Schw\u00e4chen von Passw\u00f6rtern zur Authentifizierung in Webanwendungen zu beheben, existiert seit 2016 mit WebAuthn ein Standard f\u00fcr passwortlose Authentifizierung. Mit der Erweiterung [&hellip;]<\/p>\n","protected":false},"author":414,"featured_media":57875,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"ep_exclude_from_search":false,"footnotes":""},"tags":[],"service":[879],"coauthors":[{"id":414,"display_name":"Benjamin F\u00fcrtsch","user_nicename":"benjamin-fuertsch"}],"class_list":["post-54180","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","service-security"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Migration zu Passkeys: Passwortlose Webanwendungen - inovex GmbH<\/title>\n<meta name=\"description\" content=\"Migration zu Passkeys anhand der Webanwendung Scrumlr und Vergleich der Implementierungsans\u00e4tze LIB, API und WCO.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.inovex.de\/de\/blog\/migration-zu-passkeys\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Migration zu Passkeys: Passwortlose Webanwendungen - inovex GmbH\" \/>\n<meta property=\"og:description\" content=\"Migration zu Passkeys anhand der Webanwendung Scrumlr und Vergleich der Implementierungsans\u00e4tze LIB, API und WCO.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.inovex.de\/de\/blog\/migration-zu-passkeys\/\" \/>\n<meta property=\"og:site_name\" content=\"inovex GmbH\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/inovexde\" \/>\n<meta property=\"article:published_time\" content=\"2024-09-06T09:57:32+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.inovex.de\/wp-content\/uploads\/passkey_login_methoden.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1500\" \/>\n\t<meta property=\"og:image:height\" content=\"880\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Benjamin F\u00fcrtsch\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.inovex.de\/wp-content\/uploads\/passkey_login_methoden-1024x601.png\" \/>\n<meta name=\"twitter:creator\" content=\"@inovexgmbh\" \/>\n<meta name=\"twitter:site\" content=\"@inovexgmbh\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Benjamin F\u00fcrtsch\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"18\u00a0Minuten\" \/>\n\t<meta name=\"twitter:label3\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data3\" content=\"Benjamin F\u00fcrtsch\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/migration-zu-passkeys\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/migration-zu-passkeys\\\/\"},\"author\":{\"name\":\"Benjamin F\u00fcrtsch\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/person\\\/8299b4349e458088b2f45534f8182dd0\"},\"headline\":\"Migration zu Passkeys: Passwortlose Webanwendungen\",\"datePublished\":\"2024-09-06T09:57:32+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/migration-zu-passkeys\\\/\"},\"wordCount\":3443,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/migration-zu-passkeys\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/passkey_login_methoden.png\",\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/migration-zu-passkeys\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/migration-zu-passkeys\\\/\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/migration-zu-passkeys\\\/\",\"name\":\"Migration zu Passkeys: Passwortlose Webanwendungen - inovex GmbH\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/migration-zu-passkeys\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/migration-zu-passkeys\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/passkey_login_methoden.png\",\"datePublished\":\"2024-09-06T09:57:32+00:00\",\"description\":\"Migration zu Passkeys anhand der Webanwendung Scrumlr und Vergleich der Implementierungsans\u00e4tze LIB, API und WCO.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/migration-zu-passkeys\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/migration-zu-passkeys\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/migration-zu-passkeys\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/passkey_login_methoden.png\",\"contentUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/passkey_login_methoden.png\",\"width\":1500,\"height\":880,\"caption\":\"Grafik, die verschiedene Methoden zur Passkey-Anmeldung darstellt. Sie zeigt ein Ordnersymbol, das mit Sicherheitsmerkmalen wie biometrischen Daten (Gesichtserkennung und Fingerabdruck) sowie einem Schl\u00fcssel verbunden ist.\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/migration-zu-passkeys\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Migration zu Passkeys: Passwortlose Webanwendungen\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#website\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/\",\"name\":\"inovex GmbH\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#organization\",\"name\":\"inovex GmbH\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/inovex-logo-16-9-1.png\",\"contentUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/inovex-logo-16-9-1.png\",\"width\":1921,\"height\":1081,\"caption\":\"inovex GmbH\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/inovexde\",\"https:\\\/\\\/x.com\\\/inovexgmbh\",\"https:\\\/\\\/www.instagram.com\\\/inovexlife\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/inovex\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UC7r66GT14hROB_RQsQBAQUQ\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/person\\\/8299b4349e458088b2f45534f8182dd0\",\"name\":\"Benjamin F\u00fcrtsch\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f1ed16fc373b3671b19c104df329e6543ade95f5f6fd1f2e1468317e8668177d?s=96&d=retro&r=g023f11a62c03d63f2d1a28d12a580e3b\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f1ed16fc373b3671b19c104df329e6543ade95f5f6fd1f2e1468317e8668177d?s=96&d=retro&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f1ed16fc373b3671b19c104df329e6543ade95f5f6fd1f2e1468317e8668177d?s=96&d=retro&r=g\",\"caption\":\"Benjamin F\u00fcrtsch\"},\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/author\\\/benjamin-fuertsch\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Migration zu Passkeys: Passwortlose Webanwendungen - inovex GmbH","description":"Migration zu Passkeys anhand der Webanwendung Scrumlr und Vergleich der Implementierungsans\u00e4tze LIB, API und WCO.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.inovex.de\/de\/blog\/migration-zu-passkeys\/","og_locale":"de_DE","og_type":"article","og_title":"Migration zu Passkeys: Passwortlose Webanwendungen - inovex GmbH","og_description":"Migration zu Passkeys anhand der Webanwendung Scrumlr und Vergleich der Implementierungsans\u00e4tze LIB, API und WCO.","og_url":"https:\/\/www.inovex.de\/de\/blog\/migration-zu-passkeys\/","og_site_name":"inovex GmbH","article_publisher":"https:\/\/www.facebook.com\/inovexde","article_published_time":"2024-09-06T09:57:32+00:00","og_image":[{"width":1500,"height":880,"url":"https:\/\/www.inovex.de\/wp-content\/uploads\/passkey_login_methoden.png","type":"image\/png"}],"author":"Benjamin F\u00fcrtsch","twitter_card":"summary_large_image","twitter_image":"https:\/\/www.inovex.de\/wp-content\/uploads\/passkey_login_methoden-1024x601.png","twitter_creator":"@inovexgmbh","twitter_site":"@inovexgmbh","twitter_misc":{"Verfasst von":"Benjamin F\u00fcrtsch","Gesch\u00e4tzte Lesezeit":"18\u00a0Minuten","Written by":"Benjamin F\u00fcrtsch"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.inovex.de\/de\/blog\/migration-zu-passkeys\/#article","isPartOf":{"@id":"https:\/\/www.inovex.de\/de\/blog\/migration-zu-passkeys\/"},"author":{"name":"Benjamin F\u00fcrtsch","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/person\/8299b4349e458088b2f45534f8182dd0"},"headline":"Migration zu Passkeys: Passwortlose Webanwendungen","datePublished":"2024-09-06T09:57:32+00:00","mainEntityOfPage":{"@id":"https:\/\/www.inovex.de\/de\/blog\/migration-zu-passkeys\/"},"wordCount":3443,"commentCount":0,"publisher":{"@id":"https:\/\/www.inovex.de\/de\/#organization"},"image":{"@id":"https:\/\/www.inovex.de\/de\/blog\/migration-zu-passkeys\/#primaryimage"},"thumbnailUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/passkey_login_methoden.png","inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.inovex.de\/de\/blog\/migration-zu-passkeys\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.inovex.de\/de\/blog\/migration-zu-passkeys\/","url":"https:\/\/www.inovex.de\/de\/blog\/migration-zu-passkeys\/","name":"Migration zu Passkeys: Passwortlose Webanwendungen - inovex GmbH","isPartOf":{"@id":"https:\/\/www.inovex.de\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.inovex.de\/de\/blog\/migration-zu-passkeys\/#primaryimage"},"image":{"@id":"https:\/\/www.inovex.de\/de\/blog\/migration-zu-passkeys\/#primaryimage"},"thumbnailUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/passkey_login_methoden.png","datePublished":"2024-09-06T09:57:32+00:00","description":"Migration zu Passkeys anhand der Webanwendung Scrumlr und Vergleich der Implementierungsans\u00e4tze LIB, API und WCO.","breadcrumb":{"@id":"https:\/\/www.inovex.de\/de\/blog\/migration-zu-passkeys\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.inovex.de\/de\/blog\/migration-zu-passkeys\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.inovex.de\/de\/blog\/migration-zu-passkeys\/#primaryimage","url":"https:\/\/www.inovex.de\/wp-content\/uploads\/passkey_login_methoden.png","contentUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/passkey_login_methoden.png","width":1500,"height":880,"caption":"Grafik, die verschiedene Methoden zur Passkey-Anmeldung darstellt. Sie zeigt ein Ordnersymbol, das mit Sicherheitsmerkmalen wie biometrischen Daten (Gesichtserkennung und Fingerabdruck) sowie einem Schl\u00fcssel verbunden ist."},{"@type":"BreadcrumbList","@id":"https:\/\/www.inovex.de\/de\/blog\/migration-zu-passkeys\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.inovex.de\/de\/"},{"@type":"ListItem","position":2,"name":"Migration zu Passkeys: Passwortlose Webanwendungen"}]},{"@type":"WebSite","@id":"https:\/\/www.inovex.de\/de\/#website","url":"https:\/\/www.inovex.de\/de\/","name":"inovex GmbH","description":"","publisher":{"@id":"https:\/\/www.inovex.de\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.inovex.de\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/www.inovex.de\/de\/#organization","name":"inovex GmbH","url":"https:\/\/www.inovex.de\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/logo\/image\/","url":"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/03\/inovex-logo-16-9-1.png","contentUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/03\/inovex-logo-16-9-1.png","width":1921,"height":1081,"caption":"inovex GmbH"},"image":{"@id":"https:\/\/www.inovex.de\/de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/inovexde","https:\/\/x.com\/inovexgmbh","https:\/\/www.instagram.com\/inovexlife\/","https:\/\/www.linkedin.com\/company\/inovex","https:\/\/www.youtube.com\/channel\/UC7r66GT14hROB_RQsQBAQUQ"]},{"@type":"Person","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/person\/8299b4349e458088b2f45534f8182dd0","name":"Benjamin F\u00fcrtsch","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/f1ed16fc373b3671b19c104df329e6543ade95f5f6fd1f2e1468317e8668177d?s=96&d=retro&r=g023f11a62c03d63f2d1a28d12a580e3b","url":"https:\/\/secure.gravatar.com\/avatar\/f1ed16fc373b3671b19c104df329e6543ade95f5f6fd1f2e1468317e8668177d?s=96&d=retro&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f1ed16fc373b3671b19c104df329e6543ade95f5f6fd1f2e1468317e8668177d?s=96&d=retro&r=g","caption":"Benjamin F\u00fcrtsch"},"url":"https:\/\/www.inovex.de\/de\/blog\/author\/benjamin-fuertsch\/"}]}},"_links":{"self":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/54180","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/users\/414"}],"replies":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/comments?post=54180"}],"version-history":[{"count":6,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/54180\/revisions"}],"predecessor-version":[{"id":57487,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/54180\/revisions\/57487"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/media\/57875"}],"wp:attachment":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/media?parent=54180"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/tags?post=54180"},{"taxonomy":"service","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/service?post=54180"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/coauthors?post=54180"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}