<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[WebAuthn passkey registration fails on Android with origin validation error in 1.69.2]]></title><description><![CDATA[<p dir="auto">After upgrading FusionAuth from 1.55.x to 1.69.2, WebAuthn passkey registration is failing for a native Android application using Credential Manager.</p>
<h2>Setup</h2>
<ul>
<li>FusionAuth Server: 1.69.2</li>
<li>WebAuthn workflow: <code>reauthentication</code></li>
<li>Relying Party ID: a web domain (e.g., <code>dashboard.example.com</code>)</li>
<li>Android implementation: Credential Manager API</li>
<li>Digital Asset Links configured correctly between the web domain and Android app</li>
</ul>
<h2>The Problem</h2>
<p dir="auto">When completing registration via <code>POST /api/webauthn/register/complete</code>, FusionAuth returns HTTP 400:</p>
<pre><code class="language-json">{
  "statusCode": 400,
  "exception": {
    "fieldErrors": {
      "origin": [
        {
          "code": "[invalid]origin",
          "message": "The [origin] property is not valid. The provided value must match the value returned by the authenticator. Expected [android:apk-key-hash:&lt;certificate-hash&gt;] but found [dashboard.example.com]."
        }
      ]
    }
  }
}
</code></pre>
<p dir="auto">The Android Credential Manager produces an origin in the <code>clientDataJSON</code> with the format:</p>
<pre><code>android:apk-key-hash:&lt;base64url-sha256-of-signing-certificate&gt;
</code></pre>
<p dir="auto">This is the standard Android format and cannot be modified by the application. FusionAuth 1.69.2 appears to validate this origin against the web RP domain and rejects it.</p>
<h2>What Changed</h2>
<p dir="auto">Before 1.69.0, the implementation supplied top-level <code>origin</code> and <code>rpId</code> fields when completing registration. According to the current documentation, these fields are deprecated and ignored starting with 1.69.0. The new implementation now passes only:</p>
<pre><code class="language-javascript">await fusionAuthClient.completeWebAuthnRegistration({
  userId,
  credential,
});
</code></pre>
<p dir="auto">FusionAuth now reads the origin directly from the signed <code>clientDataJSON</code> and validates it strictly. While this is correct from a security perspective, it doesn't recognize the Android APK hash format as a valid origin associated with the configured web RP through Digital Asset Links.</p>
<h2>Questions</h2>
<ol>
<li>Does FusionAuth 1.69.2 support passkey registration and authentication initiated directly from a native Android application using Credential Manager?</li>
<li>Does the new relying-party validation support origins in the <code>android:apk-key-hash:&lt;certificate-hash&gt;</code> format?</li>
<li>Is there a tenant or application setting where trusted Android APK origins can be allowlisted?</li>
<li>Is this a known limitation introduced by the WebAuthn security changes in 1.69.0?</li>
<li>Is there a recommended workaround other than moving the ceremony into a browser/Custom Tab?</li>
</ol>
]]></description><link>https://fusionauth.io/community/forum/topic/3351/webauthn-passkey-registration-fails-on-android-with-origin-validation-error-in-1-69-2</link><generator>RSS for Node</generator><lastBuildDate>Fri, 06 Nov 2026 18:33:57 GMT</lastBuildDate><atom:link href="https://fusionauth.io/community/forum/topic/3351.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 06 Nov 2026 06:33:52 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to WebAuthn passkey registration fails on Android with origin validation error in 1.69.2 on Fri, 06 Nov 2026 14:25:29 GMT]]></title><description><![CDATA[<p dir="auto">This is a confirmed bug in FusionAuth 1.69.2. The issue is in how FusionAuth validates the <code>origin</code> from <code>clientDataJSON</code> during WebAuthn registration.</p>
<p dir="auto">This has been fixed and will be released in the next release. <a href="https://fusionauth.io/docs/deploy/troubleshoot/technical-support#release-notifications" rel="nofollow ugc">Subscribe to the release announcements</a> to be notified when that happens.</p>
]]></description><link>https://fusionauth.io/community/forum/post/9042</link><guid isPermaLink="true">https://fusionauth.io/community/forum/post/9042</guid><dc:creator><![CDATA[FASupportBot]]></dc:creator><pubDate>Fri, 06 Nov 2026 14:25:29 GMT</pubDate></item></channel></rss>