<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: vdelitz</title>
    <description>The latest articles on DEV Community by vdelitz (@vdelitz).</description>
    <link>https://dev.to/vdelitz</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1041276%2F3b6dadfd-e1b9-47ad-87ec-d19a9cbcafe2.jpg</url>
      <title>DEV Community: vdelitz</title>
      <link>https://dev.to/vdelitz</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vdelitz"/>
    <language>en</language>
    <item>
      <title>Passkeys for Non-Technical Users</title>
      <dc:creator>vdelitz</dc:creator>
      <pubDate>Wed, 09 Sep 2026 15:03:57 +0000</pubDate>
      <link>https://dev.to/vdelitz/passkeys-for-non-technical-users-aa7</link>
      <guid>https://dev.to/vdelitz/passkeys-for-non-technical-users-aa7</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy4xqjxsyxjse0r1oc01p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fy4xqjxsyxjse0r1oc01p.png" alt=" " width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why passkeys still stall with normal users
&lt;/h2&gt;

&lt;p&gt;Passkey teams usually know the security case already. The harder part is adoption: how do you get someone non-technical to actually say yes when the current login still works?&lt;/p&gt;

&lt;p&gt;That question matters because many passkey rollouts underperform for reasons that have nothing to do with cryptography. The pattern across real deployments is pretty consistent: users adopt when the benefit is obvious, the timing makes sense, and the first attempt succeeds.&lt;/p&gt;

&lt;p&gt;A few case studies in the source material make that painfully clear. MakeMyTrip changed its prompt from “Create a passkey” to “Skip OTP next time” and got &lt;strong&gt;2x enrollment&lt;/strong&gt;. eBay moved the prompt from settings to right after biometric login and saw &lt;strong&gt;102% higher enrollment&lt;/strong&gt;. Same technology. Better wording and timing.&lt;/p&gt;

&lt;h2&gt;
  
  
  The prompt should name the pain removed
&lt;/h2&gt;

&lt;p&gt;Most non-technical users are not asking about phishing resistance or FIDO standards. They are asking practical questions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;what is this?&lt;/li&gt;
&lt;li&gt;does my fingerprint get sent to the website?&lt;/li&gt;
&lt;li&gt;what happens if I lose my phone?&lt;/li&gt;
&lt;li&gt;do I need to remember something new?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That changes how passkey enrollment prompt wording should work. Lead with the outcome, not the mechanism.&lt;/p&gt;

&lt;p&gt;Better:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Skip the code next time&lt;/li&gt;
&lt;li&gt;Sign in with your face or fingerprint&lt;/li&gt;
&lt;li&gt;Log in without waiting for an SMS&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Worse:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a passkey&lt;/li&gt;
&lt;li&gt;Enable passwordless login&lt;/li&gt;
&lt;li&gt;Set up FIDO2 authentication&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The lesson is simple: if the user has two seconds, spend them on the friction you remove.&lt;/p&gt;

&lt;h2&gt;
  
  
  Timing beats explanation
&lt;/h2&gt;

&lt;p&gt;One of the more useful takeaways from the source is that education has limits. A healthcare trial found that an explanation-heavy nudge raised adoption from 18.5% to 33.2%, but the stronger result came from making the passkey button visually dominant: &lt;strong&gt;46.2%&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That does not mean copy is useless. It means copy cannot rescue a badly timed prompt.&lt;/p&gt;

&lt;p&gt;The highest-leverage moments are usually:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;right after login success&lt;/li&gt;
&lt;li&gt;right after OTP or password friction&lt;/li&gt;
&lt;li&gt;during recovery, when the old method has already become annoying&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is why post-login passkey nudges and passkey UX timing after OTP friction matter so much more than a passive settings page. eBay got 75% of new passkeys from the login-flow prompt and only 10% from settings. Uber found more than 90% of enrollments came from inline nudges inside login and signup.&lt;/p&gt;

&lt;p&gt;If you ask in a calm moment, users wonder why they should change. If you ask after friction, the value is already obvious.&lt;/p&gt;

&lt;h2&gt;
  
  
  Product changes matter more than better copy
&lt;/h2&gt;

&lt;p&gt;Some of the biggest adoption gains come from changing the flow itself.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Change&lt;/th&gt;
&lt;th&gt;Why it helps&lt;/th&gt;
&lt;th&gt;Tradeoff&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Conditional Create passkeys&lt;/td&gt;
&lt;td&gt;Creates a passkey in the background after password manager use&lt;/td&gt;
&lt;td&gt;Can feel invisible unless the next login is clearly better&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Automatic append after successful login&lt;/td&gt;
&lt;td&gt;Uses a moment when identity is already proven&lt;/td&gt;
&lt;td&gt;Native dialogs can feel intrusive if shown without warning&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Identifier-first login passkeys&lt;/td&gt;
&lt;td&gt;Avoids sending users into a dead-end “no passkeys available” dialog&lt;/td&gt;
&lt;td&gt;Adds one step for users who do have a passkey&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Suppression + visible fallback&lt;/td&gt;
&lt;td&gt;Prevents prompts on devices likely to fail&lt;/td&gt;
&lt;td&gt;Fallback remains available, so some users will keep using it&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This is also where passkey recovery after lost phone becomes decisive. You should only promise the recovery path your service really supports. “You can still recover your account if you lose your phone” is useful if it is true. “The old way will always work” is risky if product policy may change later.&lt;/p&gt;

&lt;h2&gt;
  
  
  Observability is what turns advice into rollout decisions
&lt;/h2&gt;

&lt;p&gt;A lot of passkey advice sounds good until you try it on real users. Then you find device-specific failures, broken credential manager paths, or cohorts that never should have seen the prompt at all.&lt;/p&gt;

&lt;p&gt;That is where authentication observability passkeys becomes practical, not theoretical. If you cannot see which browser, OS, or authenticator caused abandonment, you are mostly guessing about prompt wording, placement, and suppression rules.&lt;/p&gt;

&lt;p&gt;Corbado is a passkey observability and adoption platform for large B2C enterprises.&lt;/p&gt;

&lt;p&gt;The useful mindset here is not “how do we explain passkeys better?” It is “which users saw which prompt on which device, and what happened next?”&lt;/p&gt;

&lt;h2&gt;
  
  
  What to optimize first
&lt;/h2&gt;

&lt;p&gt;If I had to prioritize one thing, I would start with this: stop treating passkey adoption non-technical users as a messaging problem only.&lt;/p&gt;

&lt;p&gt;Start with the post-login and post-friction surfaces. Replace technical wording with concrete benefit language. Avoid passkey buttons that can open into failure. Make recovery visible. Then measure where ceremonies break by device and cohort.&lt;/p&gt;

&lt;p&gt;That is usually worth more than writing a longer FAQ about public key cryptography.&lt;/p&gt;

&lt;p&gt;Read the &lt;a href="https://www.corbado.com/blog/convince-non-technical-users-passkeys" rel="noopener noreferrer"&gt;full breakdown&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>authentication</category>
      <category>beginners</category>
      <category>security</category>
      <category>ux</category>
    </item>
    <item>
      <title>Which Tool Really Measures Auth Success?</title>
      <dc:creator>vdelitz</dc:creator>
      <pubDate>Mon, 24 Aug 2026 07:23:02 +0000</pubDate>
      <link>https://dev.to/vdelitz/which-tool-really-measures-auth-success-31ki</link>
      <guid>https://dev.to/vdelitz/which-tool-really-measures-auth-success-31ki</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwufs2o5pcv8rqmsqoaj9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwufs2o5pcv8rqmsqoaj9.png" alt=" " width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The authentication success rate problem is mostly a measurement problem
&lt;/h2&gt;

&lt;p&gt;Authentication teams keep asking the same question: which tool reports the real &lt;strong&gt;authentication success rate&lt;/strong&gt;?&lt;/p&gt;

&lt;p&gt;The uncomfortable answer is that most enterprise stacks already have several tools claiming to answer it, and they are all measuring different points in the same login journey. That is how one team sees 94%, the identity provider reports 98%, and support still says users are stuck. Those numbers can all be internally correct.&lt;/p&gt;

&lt;p&gt;The issue is not the math. It is the measurement point.&lt;/p&gt;

&lt;p&gt;At its simplest, authentication success rate is successful authentications divided by authentication attempts. But a tool can only report that honestly if it counts the attempt before the outcome is known, measures the login itself instead of the page around it, keeps method as a dimension, attaches failure reasons, and survives cross-device flows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why most analytics tools miss the decisive moment
&lt;/h2&gt;

&lt;p&gt;Modern login flows often fail in places that page and server analytics never see.&lt;/p&gt;

&lt;p&gt;A passkey login is the clearest example. The important part happens inside the browser's WebAuthn call, where the system prompt opens, the user interacts, and a result comes back. That whole ceremony is client-side. No page load is required. Often no request is sent either.&lt;/p&gt;

&lt;p&gt;That creates a blind spot for common categories of &lt;strong&gt;authentication analytics&lt;/strong&gt;:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool category&lt;/th&gt;
&lt;th&gt;What it sees well&lt;/th&gt;
&lt;th&gt;What it usually misses&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Web analytics&lt;/td&gt;
&lt;td&gt;Traffic to login, post-login conversion&lt;/td&gt;
&lt;td&gt;Failures with no click, render, or navigation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Product analytics&lt;/td&gt;
&lt;td&gt;Funnels over defined events&lt;/td&gt;
&lt;td&gt;Anything engineers never instrumented&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Session replay&lt;/td&gt;
&lt;td&gt;Friction in your own form UI&lt;/td&gt;
&lt;td&gt;Browser and OS prompts outside the DOM&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;APM / RUM&lt;/td&gt;
&lt;td&gt;Endpoint health, latency, server errors&lt;/td&gt;
&lt;td&gt;User-side abandonment with no request&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Identity provider&lt;/td&gt;
&lt;td&gt;API-level auth outcomes and reason codes&lt;/td&gt;
&lt;td&gt;Attempts that never reached the API&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Authentication observability&lt;/td&gt;
&lt;td&gt;The login ceremony itself&lt;/td&gt;
&lt;td&gt;Marketing and broader page analytics&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This is why &lt;strong&gt;identity provider login metrics&lt;/strong&gt; and frontend funnel numbers rarely line up.&lt;/p&gt;

&lt;h2&gt;
  
  
  The browser is where login truth gets lost
&lt;/h2&gt;

&lt;p&gt;The hardest failures are the ones that vanish between page tracking and server logs.&lt;/p&gt;

&lt;p&gt;Take a cancelled Face ID prompt. Your web analytics tool may never get an event. Your APM stack sees no backend request. Your IDP never receives the authentication attempt. From those systems' point of view, nothing happened.&lt;/p&gt;

&lt;p&gt;But something absolutely happened to the user.&lt;/p&gt;

&lt;p&gt;That is the gap &lt;strong&gt;authentication observability&lt;/strong&gt; tries to fill. Instead of watching the page or the backend, it measures inside the login flow itself. For passkeys, that means &lt;strong&gt;WebAuthn ceremony measurement&lt;/strong&gt; around the &lt;code&gt;navigator.credentials&lt;/code&gt; call. For other methods, it means counting the actual password, OTP, social, or MFA step where success or abandonment occurs.&lt;/p&gt;

&lt;p&gt;That measurement point matters for two reasons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;it captures attempts before the outcome is known&lt;/li&gt;
&lt;li&gt;it makes client-side failures visible, including timeout, cancel, and drop-off behavior&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It also makes &lt;strong&gt;NotAllowedError attribution&lt;/strong&gt; possible in a more credible way. The browser does not tell you whether that error meant cancel, timeout, or no available passkey. You have to reconstruct it from timing, device capability, and what the user did next.&lt;/p&gt;

&lt;h2&gt;
  
  
  The real evaluation question is not features, it is measurement point
&lt;/h2&gt;

&lt;p&gt;A lot of &lt;strong&gt;CIAM analytics&lt;/strong&gt; buying decisions go sideways because vendors get compared by dashboard features instead of where they count attempts.&lt;/p&gt;

&lt;p&gt;If you are evaluating tools for &lt;strong&gt;login funnel analytics&lt;/strong&gt;, these five questions are more useful than a long feature list:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Where exactly is the attempt counted?&lt;/li&gt;
&lt;li&gt;Can you show a cancelled passkey login as a row in a real report?&lt;/li&gt;
&lt;li&gt;How do you distinguish cancel, timeout, and no passkey for the same browser error?&lt;/li&gt;
&lt;li&gt;Can support inspect one user's full authentication path?&lt;/li&gt;
&lt;li&gt;What happens in &lt;strong&gt;cross-device login tracking&lt;/strong&gt; when the journey starts on desktop and finishes on mobile?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Those questions expose whether a product measures authentication or just activity around authentication.&lt;/p&gt;

&lt;p&gt;There is also a bigger product question hiding above the tool comparison: does adding a new method actually get more people in? In measured deployments, the gap in total authentication success rate between users who could have used a passkey and users who could not runs from &lt;strong&gt;7 to 15 percentage points&lt;/strong&gt;. That is why &lt;strong&gt;passkey analytics&lt;/strong&gt; cannot stop at passkey-only success rates. You need method and credential availability on the same dataset.&lt;/p&gt;

&lt;p&gt;Corbado is a passkey observability and adoption platform for large B2C enterprises.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pick by measurement point, not by feature list
&lt;/h2&gt;

&lt;p&gt;Every category reports a number that is true for the point it measures. The disagreement is the clue.&lt;/p&gt;

&lt;p&gt;Web analytics can tell you how people reached login. APM can tell you whether the endpoint is healthy. Your IDP can tell you what reached its API. But if you want the real answer to whether authentication itself worked and why it failed, the measurement has to happen inside the login flow.&lt;/p&gt;

&lt;p&gt;Read the &lt;a href="https://www.corbado.com/blog/authentication-success-rate-analytics-vendors" rel="noopener noreferrer"&gt;full breakdown&lt;/a&gt;.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Passkeys Explained Clearly for Developers</title>
      <dc:creator>vdelitz</dc:creator>
      <pubDate>Tue, 18 Aug 2026 08:45:53 +0000</pubDate>
      <link>https://dev.to/vdelitz/passkeys-explained-clearly-for-developers-4ke5</link>
      <guid>https://dev.to/vdelitz/passkeys-explained-clearly-for-developers-4ke5</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9yb90t66672w4fjfu5dk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9yb90t66672w4fjfu5dk.png" alt=" " width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What a passkey actually is
&lt;/h2&gt;

&lt;p&gt;Vincent Delitz’s 2026 guide on passkeys is a practical explanation of the parts teams still mix up: what a passkey is, why it is phishing-resistant, and why shipping it does not guarantee anyone will use it.&lt;/p&gt;

&lt;p&gt;The simplest mental model is this: a passkey is a cryptographic key pair for signing a user in to a service. It is not the same thing as Face ID, a fingerprint sensor, an OTP, or a hardware key, even if those often appear in the same conversation.&lt;/p&gt;

&lt;p&gt;That distinction matters because the user gesture looks familiar while the security model is completely different. Local biometrics unlock something on one device. A passkey uses that same gesture to authorize the use of a private key, and the server verifies the result with a public key it already has.&lt;/p&gt;

&lt;p&gt;So if someone asks what is a passkey, the short answer is: a passkey is a FIDO2/WebAuthn credential backed by a key pair, where the private key stays with the user and the server stores only a public key.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why passkeys are not just biometrics
&lt;/h2&gt;

&lt;p&gt;A lot of passkeys vs biometrics confusion comes from the UX. Users see a face scan or fingerprint prompt in both cases, so teams assume they are interchangeable. They are not.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Local biometric auth: proves the user can unlock the current device.&lt;/li&gt;
&lt;li&gt;Passkey auth: proves the user controls a private key registered to a service.&lt;/li&gt;
&lt;li&gt;Server visibility: local biometrics tell the server nothing; passkeys produce a verifiable signature.&lt;/li&gt;
&lt;li&gt;Portability: passkeys can work across devices through synced providers or cross-device flows.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is also why passkeys are often described as phishing-resistant MFA WebAuthn FIDO2 in one package. The device is one factor. The local unlock method is the second factor, whether that is biometrics or a PIN.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where phishing resistance really comes from
&lt;/h2&gt;

&lt;p&gt;The core security property is not “users are smarter” or “the prompt is harder to fake”. It is origin binding.&lt;/p&gt;

&lt;p&gt;Passkeys are bound to a Relying Party ID, often shortened to rpID. At login, the browser checks whether the current site belongs to that rpID. If it does not, the passkey is not offered.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Passkey created for: example.com
Valid on: example.com, login.example.com
Invalid on: example-login.com, example.co, com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is the key point behind RP ID relying party ID passkeys: the browser enforces the relationship between the credential and the real domain. On a fake site, there is no warning for the user to ignore because the passkey prompt never appears.&lt;/p&gt;

&lt;p&gt;That is a fundamentally different security story from SMS OTP, TOTP, or push. Those methods can still be relayed through a phishing proxy. Passkeys cannot, because the credential is scoped to the legitimate domain from the start.&lt;/p&gt;

&lt;h2&gt;
  
  
  Synced vs device-bound passkeys
&lt;/h2&gt;

&lt;p&gt;The synced vs device-bound passkeys split is where architecture decisions get real.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Best for&lt;/th&gt;
&lt;th&gt;Main advantage&lt;/th&gt;
&lt;th&gt;Main tradeoff&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Synced passkeys&lt;/td&gt;
&lt;td&gt;Consumer apps and broad reach&lt;/td&gt;
&lt;td&gt;Recovery and cross-device availability&lt;/td&gt;
&lt;td&gt;Less strict device control&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Device-bound passkeys&lt;/td&gt;
&lt;td&gt;Regulated access and admin accounts&lt;/td&gt;
&lt;td&gt;Sole control and attestation&lt;/td&gt;
&lt;td&gt;No sync, so recovery is harder&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This maps directly to NIST SP 800-63B AAL2 AAL3 passkeys discussions. Syncable passkeys top out at AAL2. Device-bound authenticators with attestation are what fit AAL3 requirements.&lt;/p&gt;

&lt;p&gt;In practice, that usually means consumer services start with synced passkeys, while high-assurance or privileged accounts add device-bound options.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why adoption fails after launch
&lt;/h2&gt;

&lt;p&gt;The most useful product insight in the guide is that passkey adoption is not one number. It is creation times usage.&lt;/p&gt;

&lt;p&gt;If users create passkeys but keep logging in with password plus OTP, adoption is weak. If the passkey option is buried in settings, creation is weak. A zero on either side kills the result.&lt;/p&gt;

&lt;p&gt;Two implementation patterns matter a lot here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;conditional create passkeys: prompt right after a successful login, inside a trusted session&lt;/li&gt;
&lt;li&gt;conditional UI: surface saved passkeys directly in the login field so they become the default path&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And there is a strong production signal behind this work. The FIDO Passkey Index reports &lt;strong&gt;93%&lt;/strong&gt; login success for passkeys versus &lt;strong&gt;63%&lt;/strong&gt; for other methods.&lt;/p&gt;

&lt;p&gt;The main engineering lesson is simple: WebAuthn correctness is not enough. You also need rollout logic, feature detection, and fallback paths, especially where conditional create support is uneven.&lt;/p&gt;

&lt;p&gt;Read the &lt;a href="https://www.corbado.com/blog/passkeys-explained-clearly" rel="noopener noreferrer"&gt;full breakdown&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>security</category>
    </item>
    <item>
      <title>Layered Auth Beats One-Size-Fits-All Login</title>
      <dc:creator>vdelitz</dc:creator>
      <pubDate>Fri, 07 Aug 2026 11:55:58 +0000</pubDate>
      <link>https://dev.to/vdelitz/layered-auth-beats-one-size-fits-all-login-22gi</link>
      <guid>https://dev.to/vdelitz/layered-auth-beats-one-size-fits-all-login-22gi</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv8fsulo1rnhuh77h2m5e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fv8fsulo1rnhuh77h2m5e.png" alt=" " width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Identiverse 2026 had a more useful message than the AI hype
&lt;/h2&gt;

&lt;p&gt;At Identiverse 2026, the loudest theme was agents. The more practical takeaway for CIAM and authentication teams came from the fraud track: identity fraud prevention is still mostly about executing fundamentals better, not betting on a single new control.&lt;/p&gt;

&lt;p&gt;That matters because AI is changing fraud economics fast. As one speaker put it, many old fraud schemes are still the same schemes from the last 5 to 10 years, but AI makes them cheaper, faster, and easier to scale. So the real design problem is not “what magic product stops fraud?” It is how to build layered authentication and risk-based authentication that raise friction only when a session actually looks risky.&lt;/p&gt;

&lt;p&gt;A good benchmark from the conference: VicRoads discussed taking passkeys live for more than 5 million users with 70–90% activation, later referenced as &lt;strong&gt;80% mobile passkey activation across 5M+ users&lt;/strong&gt;, and doing it &lt;strong&gt;without replacing the IDP&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The core idea: assess passively first, step up second
&lt;/h2&gt;

&lt;p&gt;The strongest pattern from the conference was simple: start with passive signals, then apply step-up authentication only when the risk justifies it.&lt;/p&gt;

&lt;p&gt;That means looking first at signals such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;device reputation&lt;/li&gt;
&lt;li&gt;behavioral signals&lt;/li&gt;
&lt;li&gt;name, address, and date of birth&lt;/li&gt;
&lt;li&gt;anomalies in the current session&lt;/li&gt;
&lt;li&gt;the risk level of the attempted transaction&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then decide what happens next. If a user shows up on their usual device to check an insurance policy, they should not be forced through the same challenge as a suspicious session attempting a high-risk change.&lt;/p&gt;

&lt;p&gt;This is why passkeys fit so well into consumer login security. The default path should be the low-friction, phishing-resistant one. Extra friction belongs in exceptions, not in the baseline.&lt;/p&gt;

&lt;p&gt;The anti-pattern is familiar: every user gets the same OTP, the same knowledge questions, the same clunky fallback. That taxes 100% of users to maybe catch a small fraction of bad sessions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fraud is a lifecycle problem, not just a login problem
&lt;/h2&gt;

&lt;p&gt;One of the sharpest points from the article is that fraud does not line up neatly with IAM system boundaries. The same identity appears at onboarding, enrollment, authentication, recovery, and payments, but many organizations still defend those stages in separate silos.&lt;/p&gt;

&lt;p&gt;Here is the practical model:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Lifecycle stage&lt;/th&gt;
&lt;th&gt;Main control&lt;/th&gt;
&lt;th&gt;Common failure mode&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Onboarding&lt;/td&gt;
&lt;td&gt;KYC / KYB proofing&lt;/td&gt;
&lt;td&gt;A synthetic identity gets in&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Enrollment&lt;/td&gt;
&lt;td&gt;Credential binding&lt;/td&gt;
&lt;td&gt;A fraudster binds their own device or passkey&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Authentication&lt;/td&gt;
&lt;td&gt;Login and step-up&lt;/td&gt;
&lt;td&gt;Often the strongest point&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Recovery&lt;/td&gt;
&lt;td&gt;Reset and re-proof&lt;/td&gt;
&lt;td&gt;SMS and knowledge-based recovery become the trapdoor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Payments&lt;/td&gt;
&lt;td&gt;High-risk actions&lt;/td&gt;
&lt;td&gt;The user is authenticated, but the action is fraudulent&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;That leads to a useful rule: focus on the weakest handoff, not the strongest door.&lt;/p&gt;

&lt;p&gt;Passkeys can harden authentication, but they do not fix a bad enrollment or a weak account recovery fraud prevention flow. If the wrong person binds the credential at enrollment, later login can be cryptographically correct and still operationally wrong.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deepfakes and synthetic identity attacks hit verification first
&lt;/h2&gt;

&lt;p&gt;Deepfake attacks matter, but mostly in identity verification, not routine authentication. The article makes this distinction clearly.&lt;/p&gt;

&lt;p&gt;Passkeys prove possession of a private key scoped to a domain. They do not depend on what a face looks like on camera. That means deepfakes are more relevant in onboarding KYC, recovery, and high-risk step-up than in ordinary sign-in.&lt;/p&gt;

&lt;p&gt;The same is true for synthetic identity fraud and the “fraud from the inside” pattern. CrowdStrike investigated &lt;strong&gt;more than 320 North Korean IT worker cases in twelve months&lt;/strong&gt;, a &lt;strong&gt;220% year-on-year increase&lt;/strong&gt;. In those cases, the attacker often gets legitimate access through a legitimate process. Authentication controls do not catch that, because nothing is being bypassed.&lt;/p&gt;

&lt;p&gt;That is why layered defenses need to extend beyond login to verification, least privilege, and continuous assessment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Observability is what turns theory into operations
&lt;/h2&gt;

&lt;p&gt;Most teams say they want risk-based authentication. Fewer can actually see where friction happens, where fallback gets abused, or which devices break the intended flow.&lt;/p&gt;

&lt;p&gt;That is where authentication observability and process mining become operationally important. Login, signup, recovery, and transaction step-up should be measured as one connected journey, not as isolated events in separate dashboards.&lt;/p&gt;

&lt;p&gt;Corbado is a passkey observability and adoption platform for large B2C enterprises.&lt;/p&gt;

&lt;p&gt;The broader lesson is straightforward: if you cannot see your enrollment and recovery paths with the same clarity as your happy-path login, attackers will find the window while you keep polishing the front door.&lt;/p&gt;

&lt;p&gt;Read the &lt;a href="https://www.corbado.com/blog/identity-fraud-layered-authentication-identiverse-2026" rel="noopener noreferrer"&gt;full breakdown&lt;/a&gt;.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Passkeys in India: What changed by 2026</title>
      <dc:creator>vdelitz</dc:creator>
      <pubDate>Thu, 30 Jul 2026 14:18:12 +0000</pubDate>
      <link>https://dev.to/vdelitz/passkeys-in-india-what-changed-by-2026-218o</link>
      <guid>https://dev.to/vdelitz/passkeys-in-india-what-changed-by-2026-218o</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Faxp7iseiknma0oqyvatc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Faxp7iseiknma0oqyvatc.png" alt=" " width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why India is suddenly a serious passkey market
&lt;/h2&gt;

&lt;p&gt;India is becoming one of the most important passkey markets because regulation, payment scale, and ecosystem activity are all moving in the same direction at the same time.&lt;/p&gt;

&lt;p&gt;The biggest trigger is the RBI Authentication Directions, 2025. They require two independent authentication factors, with at least one dynamically generated, for all domestic digital payment transactions by April 1, 2026. That does not mandate passkeys by name, but it creates a strong push away from SMS OTP and toward phishing-resistant authentication.&lt;/p&gt;

&lt;p&gt;On top of that, the payment surface is enormous. In December 2025 alone, UPI processed over &lt;strong&gt;21.6 billion transactions&lt;/strong&gt; worth around ₹27.97 lakh crore. When authentication sits on top of a system that large, weak factors stop being a UX annoyance and become a national-scale security problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why passkeys fit the Indian shift away from OTP
&lt;/h2&gt;

&lt;p&gt;A passkey is a FIDO2/WebAuthn credential stored on a user device. Instead of sending a shared secret like a password or OTP, the device signs a one-time challenge with a private key that never leaves the authenticator.&lt;/p&gt;

&lt;p&gt;That matters because the failure modes are different:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Passwords can be reused and stolen&lt;/li&gt;
&lt;li&gt;SMS OTPs can be phished, intercepted, or socially engineered&lt;/li&gt;
&lt;li&gt;Passkeys are bound to the real domain, so look-alike phishing pages cannot replay them&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In practical terms, the user approves login or payment with a fingerprint, face unlock, or device PIN, but the security comes from the cryptographic origin binding underneath. That is the part many teams miss when they equate passkeys with “just biometrics.”&lt;/p&gt;

&lt;p&gt;India already has strong consumer familiarity with biometric confirmation. But device biometrics alone are not the same thing as passkeys. A biometric prompt can unlock many different authentication methods. What makes passkeys different is the WebAuthn credential and the relying-party binding behind the gesture.&lt;/p&gt;

&lt;h2&gt;
  
  
  Regulation is broader than just payments
&lt;/h2&gt;

&lt;p&gt;The RBI framework is the clearest adoption driver, but it is not acting alone.&lt;/p&gt;

&lt;p&gt;The DPDP Act, 2023 requires reasonable security safeguards to prevent personal data breaches, with penalties of up to ₹250 crore for failure. The DPDP Rules, 2025 add examples such as encryption, access controls, logging, and monitoring. Passkeys map naturally to that direction because they reduce the value of stolen credentials and lower phishing exposure.&lt;/p&gt;

&lt;p&gt;Then there is CERT-In. Its directions require specified incidents, including phishing, spoofing, identity theft, and unauthorized access, to be reported within &lt;strong&gt;6 hours&lt;/strong&gt;. That does not create a passkey mandate either, but it raises the operational cost of weak authentication. Preventing account takeover becomes more valuable when incident handling windows are that tight.&lt;/p&gt;

&lt;p&gt;A smaller but still important RBI signal is the migration to the &lt;strong&gt;.bank.in&lt;/strong&gt; domain, with a deadline of October 31, 2025. That is about securing the first point of customer contact before authentication even starts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where passkeys are actually live in India
&lt;/h2&gt;

&lt;p&gt;The clearest production movement is in payments.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Area&lt;/th&gt;
&lt;th&gt;What happened&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Mastercard&lt;/td&gt;
&lt;td&gt;Launched Payment Passkey Service in India in August 2024 with Axis Bank, Juspay, Razorpay, PayU, and bigbasket&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Visa&lt;/td&gt;
&lt;td&gt;Launched Payment Passkey in India in July 2026 with IDFC First Bank as first issuer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Banks&lt;/td&gt;
&lt;td&gt;Retail banking front-door passkey adoption is still early and uneven&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Consumer platforms&lt;/td&gt;
&lt;td&gt;Google, Amazon, WhatsApp, Sony PlayStation, and Zoho already expose Indian users to passkeys&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;That pattern matters. India is not starting from zero, but adoption is uneven across layers.&lt;/p&gt;

&lt;p&gt;Card networks are pushing first. Consumer platforms are normalizing the UX. Banks are still catching up. And India’s digital public infrastructure, including Aadhaar, DigiLocker, and Jan Parichay, does &lt;strong&gt;not&lt;/strong&gt; yet use passkeys at its core.&lt;/p&gt;

&lt;p&gt;That last point is probably the biggest long-term opportunity. If passkeys move from checkout flows into the identity systems used by more than a billion people, India could become the most important large-scale phishing-resistant authentication deployment story anywhere.&lt;/p&gt;

&lt;h2&gt;
  
  
  The real technical and product challenge
&lt;/h2&gt;

&lt;p&gt;The hard part is not enabling WebAuthn. The hard part is rollout across a fragmented device and habit landscape.&lt;/p&gt;

&lt;p&gt;Teams in India have to deal with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;entrenched OTP behavior across banking and government journeys&lt;/li&gt;
&lt;li&gt;user confusion between biometrics, Aadhaar face auth, and actual passkeys&lt;/li&gt;
&lt;li&gt;legacy integration cost in banks and public-sector systems&lt;/li&gt;
&lt;li&gt;device diversity and fallback needs for users without modern passkey-ready setups&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is why passkey projects in India should be treated as adoption and migration work, not just feature delivery.&lt;/p&gt;

&lt;p&gt;Read the &lt;a href="https://www.corbado.com/blog/passkeys-india-overview" rel="noopener noreferrer"&gt;full breakdown&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>security</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>QR Login Failure: Why QR Code Login Breaks</title>
      <dc:creator>vdelitz</dc:creator>
      <pubDate>Fri, 17 Jul 2026 08:31:23 +0000</pubDate>
      <link>https://dev.to/vdelitz/qr-login-failure-why-qr-code-login-breaks-577c</link>
      <guid>https://dev.to/vdelitz/qr-login-failure-why-qr-code-login-breaks-577c</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F95xv5tk1pu5hlupp2h2g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F95xv5tk1pu5hlupp2h2g.png" alt=" " width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  QR login is a cross-device flow, not one click
&lt;/h2&gt;

&lt;p&gt;QR code login looks clean in a demo. Show a code on desktop, scan it with a phone, confirm, done.&lt;/p&gt;

&lt;p&gt;In production, it is much messier. The article “QR Login Failure: Why QR Code Login Breaks” maps out why a simple-looking QR flow often fails across scan, handoff, proximity check, confirmation, or callback. That is the core problem with debugging QR code login not working: most teams only see the final outcome, not the failing step.&lt;/p&gt;

&lt;p&gt;This gets worse in passkey QR code login with WebAuthn cross-device authentication (CDA). Once the browser and operating system take over, the relying party usually sees only coarse ceremony outcomes like success, error, timeout, or server verification result. The hidden middle is where the real failure often lives.&lt;/p&gt;

&lt;h2&gt;
  
  
  Not all QR login flows fail the same way
&lt;/h2&gt;

&lt;p&gt;A useful distinction from the source material is that there are really two different flows people call “QR login.”&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Flow type&lt;/th&gt;
&lt;th&gt;What the team can usually observe&lt;/th&gt;
&lt;th&gt;Main blind spots&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Custom QR login&lt;/td&gt;
&lt;td&gt;QR shown, scan, app open, confirmation, callback&lt;/td&gt;
&lt;td&gt;Wrong app routing, wrong account, abandoned confirmation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;WebAuthn CDA passkey QR flow&lt;/td&gt;
&lt;td&gt;Ceremony start, completion/failure, timeout, verification result&lt;/td&gt;
&lt;td&gt;QR scan success, Bluetooth proximity check passkeys, phone-side prompts&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;That distinction matters because instrumentation strategy changes completely.&lt;/p&gt;

&lt;p&gt;In a custom flow, you can often track almost every step directly. In WebAuthn CDA, you cannot honestly claim direct visibility into scan or proximity unless your own app or SDK exposes it. You have to separate observed facts from inferred phases.&lt;/p&gt;

&lt;p&gt;That sounds subtle, but it is the difference between useful authentication observability and hand-wavy dashboards.&lt;/p&gt;

&lt;h2&gt;
  
  
  The boring failures are the real failures
&lt;/h2&gt;

&lt;p&gt;QR login failure is usually not caused by some exotic cryptographic edge case. It is usually a chain of small, very human problems.&lt;/p&gt;

&lt;p&gt;Typical examples from the source:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the QR code is visible but hard to scan on a dim screen or kiosk&lt;/li&gt;
&lt;li&gt;the user scans with the default camera app when the flow expected a specific app&lt;/li&gt;
&lt;li&gt;the wrong phone, work profile, or account handles the challenge&lt;/li&gt;
&lt;li&gt;Bluetooth or network restrictions break CDA proximity checks&lt;/li&gt;
&lt;li&gt;the user confirms on mobile, but the desktop never gets the final callback&lt;/li&gt;
&lt;li&gt;the desktop just spins, so support hears “QR login not working”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is why QR login conversion rate can look acceptable in a demo and brittle in production. Demos control screen quality, lighting, network conditions, and device state. Real users do not.&lt;/p&gt;

&lt;h2&gt;
  
  
  Debugging QR login issues needs a stitched funnel
&lt;/h2&gt;

&lt;p&gt;Most analytics setups are too shallow for this problem. They record “clicked sign in with QR” and maybe “login success.” Everything that matters sits in between.&lt;/p&gt;

&lt;p&gt;A better model is an authentication analytics login funnel stitched across desktop and mobile.&lt;/p&gt;

&lt;p&gt;For custom QR login, the article recommends tracking steps like:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;QR code shown&lt;/li&gt;
&lt;li&gt;QR code scanned&lt;/li&gt;
&lt;li&gt;Mobile session opened&lt;/li&gt;
&lt;li&gt;Confirmation shown&lt;/li&gt;
&lt;li&gt;Confirmation completed&lt;/li&gt;
&lt;li&gt;Desktop callback received&lt;/li&gt;
&lt;li&gt;Session established&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For WebAuthn CDA, the observable events are different:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;passkey ceremony started
challenge created
WebAuthn call completed or failed
error name
timeout
elapsed duration
server verification result
session established
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That still does not expose every phone-side step, but it gives you enough structure to infer where failures cluster.&lt;/p&gt;

&lt;h2&gt;
  
  
  Segmentation is where root causes appear
&lt;/h2&gt;

&lt;p&gt;Once events are stitched, the next step is segmentation. This is where vague support complaints turn into patterns.&lt;/p&gt;

&lt;p&gt;You want to compare:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;custom app QR vs passkey QR vs other QR-based login methods&lt;/li&gt;
&lt;li&gt;iOS vs Android&lt;/li&gt;
&lt;li&gt;desktop browser differences&lt;/li&gt;
&lt;li&gt;app versions and mobile browser behavior&lt;/li&gt;
&lt;li&gt;abandonment vs technical failure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That last split is especially important. A user walking away from a QR screen and a Bluetooth timeout both hurt conversion, but they are not the same problem and should not get the same fix.&lt;/p&gt;

&lt;p&gt;Corbado is a passkey observability and adoption platform for large B2C enterprises. The useful idea here is not the product name, though. It is the operating model: connect desktop start, browser or app events, server verification, and final session outcome into one journey.&lt;/p&gt;

&lt;p&gt;If you only measure final success, every QR login failure looks identical. If you instrument the missing middle, you can finally tell whether the issue is scan quality, app handoff, WebAuthn timeout, callback failure, or user confusion.&lt;/p&gt;

&lt;p&gt;Read the &lt;a href="https://www.corbado.com/blog/qr-login-failure" rel="noopener noreferrer"&gt;full breakdown&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>security</category>
    </item>
    <item>
      <title>Why GA4 Can't Debug Login Failures</title>
      <dc:creator>vdelitz</dc:creator>
      <pubDate>Mon, 13 Jul 2026 09:49:11 +0000</pubDate>
      <link>https://dev.to/vdelitz/why-ga4-cant-debug-login-failures-4k6b</link>
      <guid>https://dev.to/vdelitz/why-ga4-cant-debug-login-failures-4k6b</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fo3yk1ol9fdu9d2yj4e0f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fo3yk1ol9fdu9d2yj4e0f.png" alt=" " width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The gap most teams notice too late
&lt;/h2&gt;

&lt;p&gt;GA4 login tracking is good at telling you that a login funnel conversion drop happened. It is much worse at telling you why.&lt;/p&gt;

&lt;p&gt;That sounds obvious, but it becomes a real problem once authentication stops being a simple username-and-password form. Modern login flows now include passkeys, WebAuthn prompts, social login redirects, OTP retries, native credential pickers, in-app browsers, and fallback paths. When one of those breaks, generic analytics usually shows a missing conversion, not the root cause.&lt;/p&gt;

&lt;p&gt;That is the core boundary here: product analytics measures funnel movement, while authentication observability explains authentication failures.&lt;/p&gt;

&lt;h2&gt;
  
  
  What GA4 actually does well
&lt;/h2&gt;

&lt;p&gt;To be fair, GA4 is useful for login-related reporting.&lt;/p&gt;

&lt;p&gt;It works well for questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How many users reached the login page?&lt;/li&gt;
&lt;li&gt;Which login method gets clicked most?&lt;/li&gt;
&lt;li&gt;Did checkout completion change after we reordered buttons?&lt;/li&gt;
&lt;li&gt;Did sign-in friction hurt return visits or signup completion?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your question is about &lt;strong&gt;funnel shape&lt;/strong&gt;, &lt;strong&gt;business outcome correlation&lt;/strong&gt;, or &lt;strong&gt;experiment measurement&lt;/strong&gt;, GA4 can do the job.&lt;/p&gt;

&lt;p&gt;For example, you can model events like &lt;code&gt;login_started&lt;/code&gt;, &lt;code&gt;passkey_clicked&lt;/code&gt;, and &lt;code&gt;login_success&lt;/code&gt;, then compare variants across cohorts. That helps product and growth teams see whether a change improved overall conversion.&lt;/p&gt;

&lt;p&gt;But that only answers what happened at the funnel level. It does not explain the failed authentication journey underneath it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why GA4 breaks down during login debugging
&lt;/h2&gt;

&lt;p&gt;The main problem is simple: GA4 stores events, not authentication journeys.&lt;/p&gt;

&lt;p&gt;A real login attempt can include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a capability check&lt;/li&gt;
&lt;li&gt;a native passkey prompt&lt;/li&gt;
&lt;li&gt;a credential-provider selection&lt;/li&gt;
&lt;li&gt;a biometric step&lt;/li&gt;
&lt;li&gt;a redirect to a social provider&lt;/li&gt;
&lt;li&gt;an OTP fallback&lt;/li&gt;
&lt;li&gt;a final session creation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If one of those steps fails, GA4 usually has no native way to understand the ceremony context. Unless a team builds separate instrumentation for method, step, environment, error, and fallback path, the failure often shows up as abandonment.&lt;/p&gt;

&lt;p&gt;That is especially painful for client-side failures. A user can hit a WebAuthn timeout, cancel a biometric prompt, lose a redirect cookie in Safari, or run into credential manager issues on Android. From a funnel dashboard, those can all look almost identical: the user started and never completed.&lt;/p&gt;

&lt;h2&gt;
  
  
  The missing context you need for root cause analysis
&lt;/h2&gt;

&lt;p&gt;Debug login failures requires more than event counts. You need to know the exact environment and the exact step where the flow diverged.&lt;/p&gt;

&lt;p&gt;A typical auth investigation might need dimensions like these:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Dimension&lt;/th&gt;
&lt;th&gt;Why it matters&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Login method&lt;/td&gt;
&lt;td&gt;Passkey, password, OTP, social login all fail differently&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ceremony step&lt;/td&gt;
&lt;td&gt;Prompt shown, credential selected, biometric started, redirect returned&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Environment&lt;/td&gt;
&lt;td&gt;Browser, OS, app version, in-app browser, device model&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Provider context&lt;/td&gt;
&lt;td&gt;Credential provider or social provider involved&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Error detail&lt;/td&gt;
&lt;td&gt;Timeout, cancel, blocked redirect, provider outage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Recovery path&lt;/td&gt;
&lt;td&gt;Retry, fallback, abandonment, eventual success&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This is also where timing matters. Incidents often live in narrow, high-cardinality slices, like one browser version inside one in-app browser or one Android credential picker regression. GA4 is not optimized for that kind of fast diagnostic slicing.&lt;/p&gt;

&lt;p&gt;The article puts it well: GA4 can help confirm a drop, but it usually cannot tell whether the root cause was a WebAuthn timeout, Safari blocking a redirect cookie, an Android credential picker regression, a social provider outage, or a user canceling a biometric prompt.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why authentication observability is a separate layer
&lt;/h2&gt;

&lt;p&gt;Authentication observability complements GA4 instead of replacing it.&lt;/p&gt;

&lt;p&gt;Use GA4 for broad reporting: funnel trends, experiment outcomes, and downstream business impact. Use authentication observability for the auth-specific questions GA4 does not answer well: which method failed, which cohort was affected, which step broke, and whether users recovered.&lt;/p&gt;

&lt;p&gt;That matters beyond engineering. Product managers, growth teams, IAM owners, support, and incident responders all need the same underlying auth journey, just at different levels of detail.&lt;/p&gt;

&lt;p&gt;Corbado is a passkey observability and adoption platform for large B2C enterprises.&lt;/p&gt;

&lt;p&gt;The practical takeaway is straightforward: if your dashboard says login conversion dropped, GA4 is often the start of the investigation, not the answer.&lt;/p&gt;

&lt;p&gt;Read the &lt;a href="https://www.corbado.com/blog/why-ga4-cannot-debug-login-failures" rel="noopener noreferrer"&gt;full breakdown&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Windows passkeys on managed devices: debug the client</title>
      <dc:creator>vdelitz</dc:creator>
      <pubDate>Tue, 07 Jul 2026 07:44:58 +0000</pubDate>
      <link>https://dev.to/vdelitz/windows-passkeys-on-managed-devices-debug-the-client-4moi</link>
      <guid>https://dev.to/vdelitz/windows-passkeys-on-managed-devices-debug-the-client-4moi</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhh6wc4i4yhpdoub0xp7e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhh6wc4i4yhpdoub0xp7e.png" alt=" " width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Windows passkey failures usually aren't one bug
&lt;/h2&gt;

&lt;p&gt;The article "Windows Passkey not working on managed Devices?" argues that enterprise passkey failures on Windows are usually multi-cause problems, not a single broken login path. On managed fleets, the same user complaint can come from missing Windows Hello enrollment, the wrong credential provider being selected, a managed policy blocking prompts, Bluetooth issues in hybrid QR cross-device passkey Windows flows, or a passkey that exists in a password manager the user cannot access on that machine.&lt;/p&gt;

&lt;p&gt;That matters because the backend often sees almost nothing useful. In many cases, Windows passkey failures happen before the server even receives a WebAuthn response. So if your telemetry only says "login failed," you're blind to the exact ceremony step where things actually broke.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why enterprise troubleshooting is different
&lt;/h2&gt;

&lt;p&gt;Consumer troubleshooting assumes one user, one device, one browser, one account. Enterprise passkey rollout analytics need a different model.&lt;/p&gt;

&lt;p&gt;A single login journey can involve:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;managed Windows laptops and BYOD devices&lt;/li&gt;
&lt;li&gt;Edge or Chrome&lt;/li&gt;
&lt;li&gt;Windows Hello, hardware security keys, or synced passkeys&lt;/li&gt;
&lt;li&gt;password managers like 1Password, Dashlane, iCloud Passwords, or Google Password Manager&lt;/li&gt;
&lt;li&gt;cross-device authentication with phone handoff&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is why Windows passkeys enterprise troubleshooting gets expensive after launch. Support tickets say "Windows Security passkey not working," but the real question is whether it's one user's setup problem or a fleet-wide regression tied to a specific Windows, browser, and provider combination.&lt;/p&gt;

&lt;h2&gt;
  
  
  The key debugging boundary is the ceremony, not the server
&lt;/h2&gt;

&lt;p&gt;The most practical insight in the source article is where to instrument. If you want useful Windows passkey enterprise troubleshooting, collect data at the authentication ceremony boundary, not just in IdP or backend logs.&lt;/p&gt;

&lt;p&gt;The article recommends capturing at least these dimensions:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Signal&lt;/th&gt;
&lt;th&gt;Why it matters&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Exact Windows version&lt;/td&gt;
&lt;td&gt;Windows 10, Windows 11 23H2, and Windows 11 24H2 can behave differently&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Browser and version&lt;/td&gt;
&lt;td&gt;Edge and Chrome can route users differently&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Credential provider and transport&lt;/td&gt;
&lt;td&gt;Separates Windows Hello from password manager or hardware key paths&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ceremony step and result&lt;/td&gt;
&lt;td&gt;Tells you whether the prompt showed, biometrics started, or the flow timed out&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;User journey outcome&lt;/td&gt;
&lt;td&gt;Shows fallback to password, retry, abandonment, or support contact&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This is also where errors like WebAuthn NotAllowedError timeout Windows become meaningful. A NotAllowedError after a timeout is not the same as a user cancel, and backend logs alone usually cannot tell you which one happened.&lt;/p&gt;

&lt;h2&gt;
  
  
  The failure modes are often policy-shaped
&lt;/h2&gt;

&lt;p&gt;Managed device policy passkey issues are easy to underestimate because they create partial breakage. A browser policy, security product, or device-management change can affect passkey prompts, Bluetooth access, USB security key use, or extension behavior for only a subset of the fleet.&lt;/p&gt;

&lt;p&gt;That's why a passkey rollout can look healthy overall while a specific cohort is failing.&lt;/p&gt;

&lt;p&gt;A useful workflow from the article is:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Start with the affected user's last attempts.&lt;/li&gt;
&lt;li&gt;Check device, browser, provider, transport, and ceremony step.&lt;/li&gt;
&lt;li&gt;Expand to the cohort with the same combination.&lt;/li&gt;
&lt;li&gt;Compare current success to that cohort's earlier baseline.&lt;/li&gt;
&lt;li&gt;Decide whether this is a support issue, fallback issue, or rollout regression.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That last step is important. If Windows Hello passkey failure is really a Chrome plus hybrid transport regression on Windows 11 24H2, sending users another password reset email just wastes time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Observability turns vague complaints into actionable cohorts
&lt;/h2&gt;

&lt;p&gt;The source article's core argument is simple: if users report "Windows passkey not working on managed devices," your team needs client-side authentication observability for passkeys to understand what happened before the backend ever saw the login.&lt;/p&gt;

&lt;p&gt;Corbado is a passkey observability and adoption platform for large B2C enterprises. In the article, Corbado Observe is presented as a way to capture client-side ceremony events, device and browser context, failure outcomes, and fallback behavior that standard logs miss.&lt;/p&gt;

&lt;p&gt;For technical teams, the real value is not just per-user debugging. It's the ability to answer rollout questions like: did a Windows/browser/policy cohort start failing after a rollout, or is this just one user's setup issue?&lt;/p&gt;

&lt;p&gt;Read the &lt;a href="https://www.corbado.com/blog/windows-passkey-not-working-enterprise" rel="noopener noreferrer"&gt;full breakdown&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>productivity</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Android 17 Passkeys Get Real Portability</title>
      <dc:creator>vdelitz</dc:creator>
      <pubDate>Wed, 01 Jul 2026 07:57:31 +0000</pubDate>
      <link>https://dev.to/vdelitz/android-17-passkeys-get-real-portability-p5g</link>
      <guid>https://dev.to/vdelitz/android-17-passkeys-get-real-portability-p5g</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fskiqlz8k1iihjcaqipyg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fskiqlz8k1iihjcaqipyg.png" alt=" " width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Android 17 continues a quiet but important shift in passkeys: making them less fragile in real-world use. The release starts rolling out to Pixel devices in June 2026, with broader availability later, and it focuses on three things that developers actually care about: credential portability, theft resistance, and stronger high-security defaults.&lt;/p&gt;

&lt;p&gt;The big story is not a new login UI. It is that Android 17 makes passkeys easier to move, harder to steal, and more credible as a long-term authentication baseline. That matters because passkeys have always had a perception problem: users like the convenience, but many still worry that creating one means getting trapped inside a single vendor ecosystem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Credential Exchange fixes the lock-in problem
&lt;/h2&gt;

&lt;p&gt;Android 17 adds support for the FIDO Alliance Credential Exchange standard through Google Play services 26.21. Concretely, that means users can move passwords and passkeys between Google Password Manager and third-party managers like 1Password, Bitwarden, and Dashlane.&lt;/p&gt;

&lt;p&gt;The practical improvement is simple. Instead of exporting a CSV or JSON file and hoping sensitive data does not get left behind somewhere on disk, the transfer happens directly app-to-app and is end-to-end encrypted.&lt;/p&gt;

&lt;p&gt;At a high level, the flow works like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The user starts from either import in the destination manager or export in Google Password Manager&lt;/li&gt;
&lt;li&gt;The source and destination establish a secure channel&lt;/li&gt;
&lt;li&gt;The user authenticates with biometrics&lt;/li&gt;
&lt;li&gt;Credentials move directly without being written to an intermediate file&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is a meaningful upgrade for passkey portability on Android. It removes a major reason users hesitate to adopt passkeys in the first place.&lt;/p&gt;

&lt;p&gt;There is also a broader ecosystem implication here. Apple introduced similar secure import/export in iOS 26, and Android 17 now mirrors that direction with open FIDO standards. A passkey starts looking less like a proprietary artifact and more like a portable user-controlled credential.&lt;/p&gt;

&lt;h2&gt;
  
  
  What developers need to implement
&lt;/h2&gt;

&lt;p&gt;For credential provider developers, Android 17 turns migration into a platform capability instead of a custom workaround. The relevant integration point is the &lt;code&gt;ProviderEventsManager&lt;/code&gt; family in &lt;code&gt;androidx.credentials&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The split is straightforward:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Role&lt;/th&gt;
&lt;th&gt;API&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Importing provider&lt;/td&gt;
&lt;td&gt;&lt;code&gt;importCredentials&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Launches provider selection and starts the transfer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Exporting provider&lt;/td&gt;
&lt;td&gt;&lt;code&gt;registerExport&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Registers the app as a credential source&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A provider that wants to export also needs to declare a transfer activity in its manifest so the framework can route requests correctly. Under the hood, Android passes data through a content URI and includes security context such as &lt;code&gt;CallingAppInfo&lt;/code&gt;, so the exporter can verify who is requesting the transfer. A &lt;code&gt;credId&lt;/code&gt; is also used to validate the selected export entry.&lt;/p&gt;

&lt;p&gt;The technical detail that matters most: the secure channel is negotiated per transfer using Diffie-Hellman key exchange, and the exported payload is formatted with Credential Exchange Format (CXF). This is not just a prettier export flow. It is a safer model for moving high-value credentials.&lt;/p&gt;

&lt;h2&gt;
  
  
  Android 17 also hardens the device itself
&lt;/h2&gt;

&lt;p&gt;Passkeys are phishing-resistant by design, but their real security still depends on the device storing them. Android 17 addresses that with stronger theft protection.&lt;/p&gt;

&lt;p&gt;Two changes stand out:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Mark as lost in Find Hub now lets the owner lock the device with biometrics, which means even someone who knows the passcode cannot access the phone’s information or disable tracking.&lt;/li&gt;
&lt;li&gt;PIN brute-force throttling gets tighter, with fewer allowed guesses and longer delays between failed attempts.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That matters for a very specific threat model: a thief who has both the phone and an observed PIN. Android 17 narrows that gap and gives the credential store stronger protection in exactly the scenario people worry about most.&lt;/p&gt;

&lt;h2&gt;
  
  
  Advanced Protection keeps passkeys at the top tier
&lt;/h2&gt;

&lt;p&gt;Android 17 also strengthens Advanced Protection mode, Google’s highest-security device profile. For authentication, the signal is consistent: FIDO2 credentials, whether passkeys or hardware security keys, remain the enrollment baseline, while passwords are not considered sufficient for this tier.&lt;/p&gt;

&lt;p&gt;That is an important message for enterprise teams. Android is no longer treating passkeys as just a convenience feature. It is treating them as the security baseline for high-risk users and stronger account protection.&lt;/p&gt;

&lt;p&gt;For adoption, the opportunity is obvious, but execution still is not automatic. Android fleets remain fragmented across OS versions, OEM variants, and Play services rollout timing. Corbado is a passkey observability and adoption platform for large B2C enterprises. One useful benchmark from the source material: VicRoads reports 80% mobile passkey activation across 5M+ users.&lt;/p&gt;

&lt;p&gt;Read the &lt;a href="https://www.corbado.com/blog/android-17-passkeys" rel="noopener noreferrer"&gt;full breakdown&lt;/a&gt;.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Passkeys vs SMS OTP for Real-World Logins</title>
      <dc:creator>vdelitz</dc:creator>
      <pubDate>Tue, 23 Jun 2026 15:48:34 +0000</pubDate>
      <link>https://dev.to/vdelitz/passkeys-vs-sms-otp-for-real-world-logins-1i81</link>
      <guid>https://dev.to/vdelitz/passkeys-vs-sms-otp-for-real-world-logins-1i81</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frgbvmejxlqn2sugap7m9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frgbvmejxlqn2sugap7m9.png" alt="Why this comparison matters" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;SMS OTP is still the default second factor for a lot of banks, retailers, and marketplaces because every phone can receive a text. But that reach hides three separate questions: does it convert, what does it cost at scale, and how much security are you actually getting?&lt;/p&gt;

&lt;p&gt;That is the useful frame for passkeys vs SMS OTP. Not hype. Not “what’s newer.” Just whether one method gets more users through login, costs less per successful authentication, and holds up better against phishing.&lt;/p&gt;

&lt;p&gt;For most returning users, passkeys have a structural advantage on all three.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conversion is really about ceremony length
&lt;/h2&gt;

&lt;p&gt;The main passkeys conversion rate advantage is simple: there is no code ceremony.&lt;/p&gt;

&lt;p&gt;With WebAuthn passkeys, the device prompts the user, they confirm with biometrics or device PIN, and the session is established. With SMS OTP, the user has to wait for the message, open it, switch context, read the code, type it, and hope delivery worked in the first place.&lt;/p&gt;

&lt;p&gt;Every step in that wait-read-switch-type flow is a place to lose users. And many of those failures are silent in standard analytics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the code arrives late&lt;/li&gt;
&lt;li&gt;the code lands in the wrong app context&lt;/li&gt;
&lt;li&gt;the user mistypes it&lt;/li&gt;
&lt;li&gt;retries inflate friction before the backend sees a clean completion or failure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is why “SMS reaches everyone” is not the same as “SMS converts well.” Reach measures coverage. Conversion measures completed sessions.&lt;/p&gt;

&lt;p&gt;If you are comparing passkeys security vs SMS or debating a passkey adoption strategy, this distinction matters more than most teams expect.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cost is not per message, it is per successful login
&lt;/h2&gt;

&lt;p&gt;SMS OTP authentication cost is often underestimated because teams look at carrier pricing instead of completed outcomes.&lt;/p&gt;

&lt;p&gt;The article’s point here is practical: SMS has a per-message fee on every send, including retries. Those fees range from fractions of a cent in the US to well over USD 0.30 in some markets. Then add support load, fraud exposure, and the infrastructure around delivery and verification.&lt;/p&gt;

&lt;p&gt;Passkey logins do not carry a per-authentication messaging fee. So the more traffic you have, and the more countries you operate in, the more the cost gap widens.&lt;/p&gt;

&lt;p&gt;A fair comparison looks like this:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Axis&lt;/th&gt;
&lt;th&gt;SMS OTP&lt;/th&gt;
&lt;th&gt;Passkeys&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;User steps&lt;/td&gt;
&lt;td&gt;Wait, read, switch, type&lt;/td&gt;
&lt;td&gt;Confirm on device&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Marginal auth cost&lt;/td&gt;
&lt;td&gt;Per-message fee, plus retries&lt;/td&gt;
&lt;td&gt;No messaging fee&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Failure pattern&lt;/td&gt;
&lt;td&gt;Delivery and transcription issues&lt;/td&gt;
&lt;td&gt;Device / platform support issues&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Security model&lt;/td&gt;
&lt;td&gt;Human-readable code&lt;/td&gt;
&lt;td&gt;Domain-bound cryptographic credential&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This is also why login funnel analytics matter. If SMS needs retries to produce one completed login, the real cost is not the headline message price.&lt;/p&gt;

&lt;h2&gt;
  
  
  Security is where the gap is clearest
&lt;/h2&gt;

&lt;p&gt;Phishing-resistant authentication is the strongest technical argument for passkeys.&lt;/p&gt;

&lt;p&gt;A passkey is bound to the exact domain. There is no shared secret to steal, copy, or replay on a phishing site. SMS OTP is the opposite: a human-readable code that can be phished, intercepted, or abused via SIM-swap attacks and malware.&lt;/p&gt;

&lt;p&gt;So on passkeys security vs SMS, the difference is not subtle. SMS may still be useful operationally, but it remains a weak factor against modern phishing.&lt;/p&gt;

&lt;p&gt;That matters even more in regulated environments. The article points out that markets like the UAE are already phasing out SMS OTP for banking.&lt;/p&gt;

&lt;h2&gt;
  
  
  The right rollout is not “replace SMS overnight”
&lt;/h2&gt;

&lt;p&gt;The common mistake is the migration trap: a team sees the conversion, cost, and security upside of passkeys and decides to rip out SMS immediately. That usually backfires because some users still depend on SMS for first contact, older devices, or non-ideal app/browser environments.&lt;/p&gt;

&lt;p&gt;The better SMS OTP fallback strategy is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;make passkeys the primary option&lt;/li&gt;
&lt;li&gt;keep SMS OTP as an explicit fallback&lt;/li&gt;
&lt;li&gt;segment by OS, browser, and device class&lt;/li&gt;
&lt;li&gt;track method switches and cost per successful login&lt;/li&gt;
&lt;li&gt;shrink SMS only when the remaining users have a clean alternative&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is where authentication observability becomes essential. Most stacks only record “logged in” or “did not log in.” That is not enough. You need per-method funnel visibility from method chosen to &lt;code&gt;session_established&lt;/code&gt;, plus segmentation by environment.&lt;/p&gt;

&lt;p&gt;Without that, you are guessing. With it, you can make decisions like: passkeys outperform SMS on iPhone Safari, but SMS still covers a legacy Android segment we cannot strand yet.&lt;/p&gt;

&lt;p&gt;Corbado is a passkey observability and adoption platform for large B2C enterprises.&lt;/p&gt;

&lt;p&gt;Read the &lt;a href="https://www.corbado.com/blog/passkeys-vs-sms-otp" rel="noopener noreferrer"&gt;full breakdown&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>passkey</category>
      <category>webdev</category>
      <category>security</category>
    </item>
    <item>
      <title>Choosing a CIAM in 2026: Passkey Adoption, MCP Support and TCO at 500k MAU</title>
      <dc:creator>vdelitz</dc:creator>
      <pubDate>Thu, 11 Jun 2026 08:02:46 +0000</pubDate>
      <link>https://dev.to/vdelitz/choosing-a-ciam-in-2026-passkey-adoption-mcp-support-and-tco-at-500k-mau-13eb</link>
      <guid>https://dev.to/vdelitz/choosing-a-ciam-in-2026-passkey-adoption-mcp-support-and-tco-at-500k-mau-13eb</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F39l8h4ihk5v450txreke.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F39l8h4ihk5v450txreke.png" alt="Choosing CIAM in 2026" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why CIAM selection changed in 2026
&lt;/h2&gt;

&lt;p&gt;The 2026 CIAM market looks different from even a year ago. The shift is not just about adding passkeys or checking an OAuth box anymore. For large-scale B2C deployments, especially around &lt;strong&gt;500k monthly active users&lt;/strong&gt;, the real decision is about three things at once: passwordless execution, AI agent identity, and total cost of ownership.&lt;/p&gt;

&lt;p&gt;A recent market evaluation compared CIAM platforms including Auth0, Clerk, Descope, Ory, Ping Identity, IBM Verify, Stytch, Zitadel, Amazon Cognito, FusionAuth, Firebase, and Supabase at that scale. The headline is simple: most platforms now expose WebAuthn or passkey APIs, but that alone does not produce strong outcomes.&lt;/p&gt;

&lt;p&gt;That gap matters because web passkey readiness is already around &lt;strong&gt;89% of completed logins&lt;/strong&gt; in 2026. Readiness is no longer the bottleneck. Adoption is.&lt;/p&gt;

&lt;h2&gt;
  
  
  The passkey problem is not API availability
&lt;/h2&gt;

&lt;p&gt;This is the part many teams still underestimate. Enabling passkeys in a CIAM dashboard is not the same thing as driving passkey usage.&lt;/p&gt;

&lt;p&gt;The comparison shows that generic CIAM implementations often stall at &lt;strong&gt;5-10% passkey adoption&lt;/strong&gt;. At 500k MAU, that still leaves roughly 450k users relying on passwords or SMS OTP. So the question for the best CIAM platform for B2C is no longer “does it support WebAuthn?” but “can it actually move users onto passkeys?”&lt;/p&gt;

&lt;p&gt;The market data breaks passkey rollouts into distinct outcomes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;settings-only availability: roughly 5% passkey login rate&lt;/li&gt;
&lt;li&gt;simple post-login nudge: about 23% in better cases&lt;/li&gt;
&lt;li&gt;passkey-first return flow with automatic creation and recovery: &lt;strong&gt;60%+&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The important technical takeaway is that the CIAM backend is rarely the thing causing that spread. Prompt timing, device classification, recovery design, and return-user flows are what move passkeys WebAuthn adoption.&lt;/p&gt;

&lt;h2&gt;
  
  
  Vendor tradeoffs at 500k MAU
&lt;/h2&gt;

&lt;p&gt;If you are comparing CIAM solutions 2026, the tradeoffs are pretty clear once you separate base platform features from orchestration quality.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Vendor&lt;/th&gt;
&lt;th&gt;Passkey position&lt;/th&gt;
&lt;th&gt;Estimated pricing at 500k MAU&lt;/th&gt;
&lt;th&gt;Main tradeoff&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Auth0&lt;/td&gt;
&lt;td&gt;Universal Login + API/SDK&lt;/td&gt;
&lt;td&gt;$15k-30k/mo&lt;/td&gt;
&lt;td&gt;Mature and extensible, but expensive and no adoption tooling&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Clerk&lt;/td&gt;
&lt;td&gt;Toggle in pre-built components&lt;/td&gt;
&lt;td&gt;~$9k/mo&lt;/td&gt;
&lt;td&gt;Excellent DX, but React-centric&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Descope&lt;/td&gt;
&lt;td&gt;Visual passwordless workflows&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;td&gt;Strong orchestration and A/B testing, but less flexible with own frontend&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Amazon Cognito&lt;/td&gt;
&lt;td&gt;Passkeys in Managed Login v2&lt;/td&gt;
&lt;td&gt;~$7.3k-10k/mo&lt;/td&gt;
&lt;td&gt;Good AWS scale, but hidden engineering overhead&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Stytch&lt;/td&gt;
&lt;td&gt;WebAuthn API/SDK&lt;/td&gt;
&lt;td&gt;~$4.9k/mo&lt;/td&gt;
&lt;td&gt;Strong fraud tooling, but more implementation work&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Firebase / Supabase&lt;/td&gt;
&lt;td&gt;No native passkeys&lt;/td&gt;
&lt;td&gt;~$2.1k/mo / $599/mo&lt;/td&gt;
&lt;td&gt;Cheap, but not suitable for enterprise passwordless CIAM&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A useful example is &lt;strong&gt;Amazon Cognito passkeys Managed Login v2&lt;/strong&gt;. Native support exists, but only on the Essentials tier and above. That makes the base price look reasonable, yet teams still absorb substantial engineering cost if they need custom UI or better passkey adoption flows.&lt;/p&gt;

&lt;h2&gt;
  
  
  AI agent identity is now part of CIAM
&lt;/h2&gt;

&lt;p&gt;The second big change is that CIAM is no longer only about humans. AI agents are now participating in workflows, calling APIs, and acting through MCP-based patterns.&lt;/p&gt;

&lt;p&gt;That is why &lt;strong&gt;AI agent identity MCP&lt;/strong&gt; and &lt;strong&gt;Model Context Protocol OAuth 2.1&lt;/strong&gt; support are becoming real buying criteria. The evaluation notes that &lt;strong&gt;95% of organizations cite identity concerns around AI agents&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For technical buyers, that means looking for support around:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OAuth 2.1&lt;/li&gt;
&lt;li&gt;PKCE&lt;/li&gt;
&lt;li&gt;tool-level scopes&lt;/li&gt;
&lt;li&gt;machine and agent identity controls&lt;/li&gt;
&lt;li&gt;MCP-compatible authorization models&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Descope, Clerk, Stytch, Ping, and IBM are all discussed through that lens, but not equally mature. If your roadmap includes agent access to tools or services, this is no longer optional future-proofing.&lt;/p&gt;

&lt;h2&gt;
  
  
  TCO is bigger than license cost
&lt;/h2&gt;

&lt;p&gt;A lot of CIAM evaluations still stop at monthly pricing. That is a mistake.&lt;/p&gt;

&lt;p&gt;The comparison estimates that building passkeys natively on top of any CIAM platform typically requires &lt;strong&gt;25-30 FTE-months&lt;/strong&gt; across product, engineering, and QA, plus about &lt;strong&gt;1.5 FTE per year&lt;/strong&gt; for maintenance. That changes how you should think about CIAM total cost of ownership 500k MAU.&lt;/p&gt;

&lt;p&gt;Even platforms with lower sticker prices can become expensive if they require:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;custom passkey UX&lt;/li&gt;
&lt;li&gt;cross-platform retesting&lt;/li&gt;
&lt;li&gt;recovery flow design&lt;/li&gt;
&lt;li&gt;frontend maintenance&lt;/li&gt;
&lt;li&gt;support and analytics work&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is also why the Auth0 vs Clerk vs Descope passkeys debate is not just about feature checklists. Auth0 is extensible but expensive. Clerk is fast for modern frontend teams but narrower in ecosystem fit. Descope is strong on orchestration, especially for passwordless journeys, but comes with different frontend tradeoffs.&lt;/p&gt;

&lt;p&gt;Corbado is a passkey observability and adoption platform for large B2C enterprises.&lt;/p&gt;

&lt;p&gt;The interesting conclusion from the market review is that many enterprises should not replace their CIAM at all. They should optimize what sits on top of it: passkey orchestration and analytics.&lt;/p&gt;

&lt;p&gt;Read the &lt;a href="https://www.corbado.com/blog/best-ciam-solutions" rel="noopener noreferrer"&gt;full breakdown&lt;/a&gt;.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Authentication Process Mining in CIAM</title>
      <dc:creator>vdelitz</dc:creator>
      <pubDate>Mon, 01 Jun 2026 13:28:08 +0000</pubDate>
      <link>https://dev.to/vdelitz/authentication-process-mining-in-ciam-2nhl</link>
      <guid>https://dev.to/vdelitz/authentication-process-mining-in-ciam-2nhl</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7on9oxkf4uphd78z1lmw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7on9oxkf4uphd78z1lmw.png" alt="Authentication Process Mining in CIAM" width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why passkeys exposed a CIAM blind spot
&lt;/h2&gt;

&lt;p&gt;Authentication process mining is the idea of applying process-mining techniques to login journeys, using per-session event logs to reconstruct what users actually did instead of what the auth flow was supposed to do.&lt;/p&gt;

&lt;p&gt;That matters now because passkeys moved critical parts of authentication to the client. Traditional IDP logs can tell you attempt, success, and failure. They usually cannot tell you whether &lt;strong&gt;Conditional UI&lt;/strong&gt; fired, whether the browser showed a biometric prompt, which credential manager was selected, or whether the user silently abandoned before any assertion hit the backend.&lt;/p&gt;

&lt;p&gt;This is why many teams think their rollout is healthy when it is not. A &lt;strong&gt;92% aggregate success rate&lt;/strong&gt; can still hide a &lt;strong&gt;40% abandonment rate on the passkey path alone&lt;/strong&gt;. Averaged metrics flatten the journey. Process mining rebuilds it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Authentication observability is the prerequisite
&lt;/h2&gt;

&lt;p&gt;A lot of teams want passkey analytics, but they still lack the event model required to make it real. Authentication process mining only works after you have client-side observability in place.&lt;/p&gt;

&lt;p&gt;At minimum, the event model needs to capture:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;initiation type: text-field, one-tap, or Conditional UI&lt;/li&gt;
&lt;li&gt;client-side ceremony events: page load, prompt display, biometric interaction, assertion return&lt;/li&gt;
&lt;li&gt;richer outcomes than success/failure: explicit abort, implicit abort, no-start, not-loaded, suppressed flows&lt;/li&gt;
&lt;li&gt;environment data: OS, browser, device brand, app, authenticator, transport&lt;/li&gt;
&lt;li&gt;credential inventory context: Apple, Google Password Manager, iCloud Keychain, Windows Hello, security keys, and others&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without that, you do not have process-mining event logs. You have outcome counters.&lt;/p&gt;

&lt;p&gt;The practical shift is important: authentication observability asks “what happened?” Authentication process mining asks “which path did this session take, where did it diverge, and what should we change next?”&lt;/p&gt;

&lt;h2&gt;
  
  
  The designed login journey is rarely the lived one
&lt;/h2&gt;

&lt;p&gt;The most useful insight in the article is not theoretical. In observed deployments, only about &lt;strong&gt;30% of eligible users&lt;/strong&gt; follow the designed passkey happy path.&lt;/p&gt;

&lt;p&gt;That means the majority of sessions drift somewhere else: password fallback, social login, magic links, dismissals, retries, or silent exits. Once you reconstruct the per-session graph, you can rank those variants instead of guessing.&lt;/p&gt;

&lt;p&gt;A simple comparison looks like this:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;View&lt;/th&gt;
&lt;th&gt;What it tells you&lt;/th&gt;
&lt;th&gt;What it misses&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;IDP outcome logs&lt;/td&gt;
&lt;td&gt;success/failure by method&lt;/td&gt;
&lt;td&gt;pre-assertion friction, abandonment cause, UI behavior&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Passkey analytics dashboard&lt;/td&gt;
&lt;td&gt;adoption and conversion trends&lt;/td&gt;
&lt;td&gt;exact deviation paths per session&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Authentication process mining&lt;/td&gt;
&lt;td&gt;lived journey variants and deviation frequency&lt;/td&gt;
&lt;td&gt;requires front-end instrumentation first&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Another useful pattern: the &lt;strong&gt;top five deviation variants&lt;/strong&gt; typically account for &lt;strong&gt;85% of all deviations&lt;/strong&gt;. That is why fixing two broken variants often moves passkey adoption more than another A/B test on the happy path.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this changes step-up authentication
&lt;/h2&gt;

&lt;p&gt;This gets more interesting when you connect login journey analytics to risk.&lt;/p&gt;

&lt;p&gt;A lot of step-up authentication still works like a blunt threshold rule: if transaction value is high, trigger OTP. The article frames the tradeoff clearly: teams often add friction to &lt;strong&gt;95% of legitimate traffic&lt;/strong&gt; to catch the &lt;strong&gt;5%&lt;/strong&gt; that looks suspicious.&lt;/p&gt;

&lt;p&gt;With authentication process mining, the decision can become session-specific instead of rule-only. Signals can include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;deviation from the user’s normal path&lt;/li&gt;
&lt;li&gt;cohort baseline success rate&lt;/li&gt;
&lt;li&gt;time-of-day anomalies&lt;/li&gt;
&lt;li&gt;device reputation&lt;/li&gt;
&lt;li&gt;IP reputation&lt;/li&gt;
&lt;li&gt;credential manager identity&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is the bridge from CIAM observability to &lt;strong&gt;step-up authentication risk scoring&lt;/strong&gt;. You stop treating every high-value action the same and start using the session’s actual path as a risk input.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why IDPs are unlikely to solve this natively
&lt;/h2&gt;

&lt;p&gt;The article makes a useful distinction: IDPs own the control plane, while authentication process mining is a data-plane problem.&lt;/p&gt;

&lt;p&gt;That sounds subtle, but it has real architectural consequences. Orchestration products in Okta, Ping, ForgeRock, and Auth0 are good at defining policy and journey logic. They are not built to normalize high-cardinality front-end telemetry across browsers, operating systems, authenticators, and credential managers.&lt;/p&gt;

&lt;p&gt;That is why terms like &lt;strong&gt;cohort drift detection&lt;/strong&gt;, &lt;strong&gt;credential manager selection&lt;/strong&gt;, and variant analysis are becoming first-class concerns for CIAM teams. Browser updates and OS rollouts change behavior silently. Aggregate success rate often catches that too late.&lt;/p&gt;

&lt;p&gt;The near-term takeaway is simple: if you care about passkey rollout KPIs, start by measuring happy-path share and the top deviation variants on the passkey path. That is usually where the real leverage is.&lt;/p&gt;

&lt;p&gt;Read the full breakdown](&lt;a href="https://www.corbado.com/blog/authentication-process-mining" rel="noopener noreferrer"&gt;https://www.corbado.com/blog/authentication-process-mining&lt;/a&gt;).&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
