<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>207951</bug_id>
          
          <creation_ts>2020-02-19 11:03:21 -0800</creation_ts>
          <short_desc>[WebAuthn] Yubikey 5ci lightning does not work in iOS 13.4 beta</short_desc>
          <delta_ts>2020-02-19 21:16:48 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>Other</version>
          <rep_platform>iPhone / iPad</rep_platform>
          <op_sys>iOS 13</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>CONFIGURATION CHANGED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>181943</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter>sweeden</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>jiewen_tan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1620744</commentid>
    <comment_count>0</comment_count>
    <who name="">sweeden</who>
    <bug_when>2020-02-19 11:03:21 -0800</bug_when>
    <thetext>In testing WebAuthn on iOS 13.4 beta with an iPad Air 2 using a Yubikey 5ci authenticator, I used the WebAuthn parameters for requireResidentKey: false, userVerification: discouraged. The lightning key did NOT blink when performing a registration operation. The key does blink (and can be used) with the same parameters on the same device using iOS 13.3.1 (although there is a different problem with the AAGUID in the attestation result in that version).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620796</commentid>
    <comment_count>1</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-19 12:21:51 -0800</bug_when>
    <thetext>(In reply to sweeden from comment #0)
&gt; In testing WebAuthn on iOS 13.4 beta with an iPad Air 2 using a Yubikey 5ci
&gt; authenticator, I used the WebAuthn parameters for requireResidentKey: false,
&gt; userVerification: discouraged. The lightning key did NOT blink when
&gt; performing a registration operation. The key does blink (and can be used)
&gt; with the same parameters on the same device using iOS 13.3.1 (although there
&gt; is a different problem with the AAGUID in the attestation result in that
&gt; version).

Could you tell me the exact beta version like: 17E5233g? BTW, we release beta 2 today, can you try that as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620801</commentid>
    <comment_count>2</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-19 12:26:10 -0800</bug_when>
    <thetext>It is probably a duplicate of Bug 204111, which is fixed in Beta 2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620918</commentid>
    <comment_count>3</comment_count>
    <who name="">sweeden</who>
    <bug_when>2020-02-19 15:51:41 -0800</bug_when>
    <thetext>I just installed 13.4 beta 2. Same behaviour. Key does not blink at all when registering with the following options:

{
      &quot;extensions&quot;: {},
      &quot;attestation&quot;: &quot;direct&quot;,
      &quot;challenge&quot;: &quot;9MmAkj8jroow3kq_gKb5jjs8YjSA9jgMk-YXb86Xxj8&quot;,
      &quot;authenticatorSelection&quot;: {
        &quot;userVerification&quot;: &quot;discouraged&quot;,
        &quot;requireResidentKey&quot;: false
      },
      &quot;user&quot;: {
        &quot;displayName&quot;: &quot;REDACTED&quot;,
        &quot;name&quot;: &quot;REDACTED&quot;,
        &quot;id&quot;: &quot;k-rsnTR5Q6CWAmU_VMwjeA&quot;
      },
      &quot;rp&quot;: {
        &quot;name&quot;: &quot;fidointerop.securitypoc.com&quot;,
        &quot;id&quot;: &quot;fidointerop.securitypoc.com&quot;
      },
      &quot;timeout&quot;: 60000,
      &quot;pubKeyCredParams&quot;: [
        {
          &quot;type&quot;: &quot;public-key&quot;,
          &quot;alg&quot;: -7
        },
        {
          &quot;type&quot;: &quot;public-key&quot;,
          &quot;alg&quot;: -257
        }
      ]
    }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620919</commentid>
    <comment_count>4</comment_count>
    <who name="">sweeden</who>
    <bug_when>2020-02-19 15:56:09 -0800</bug_when>
    <thetext>The beta 2 build as you suggested is 17E5233g</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620929</commentid>
    <comment_count>5</comment_count>
    <who name="">sweeden</who>
    <bug_when>2020-02-19 16:18:32 -0800</bug_when>
    <thetext>Ok so more details. I got *another* Yubikey 5ci brand new and it worked. I think the defining difference is the yubikey that did not work had a PIN set whereas the one that did work did NOT have a PIN set.

Not sure why that should make any difference when uv=discouraged is set in options...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620939</commentid>
    <comment_count>6</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-19 16:38:54 -0800</bug_when>
    <thetext>(In reply to sweeden from comment #5)
&gt; Ok so more details. I got *another* Yubikey 5ci brand new and it worked. I
&gt; think the defining difference is the yubikey that did not work had a PIN set
&gt; whereas the one that did work did NOT have a PIN set.
&gt; 
&gt; Not sure why that should make any difference when uv=discouraged is set in
&gt; options...

Alright then. Can you please try STP 101 which should have the fix for Bug 206547? I will close this bug as &quot;configuration changed&quot;. Feel free to reopen it if you still see your issues on STP 101.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620946</commentid>
    <comment_count>7</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-19 16:46:28 -0800</bug_when>
    <thetext>(In reply to Jiewen Tan from comment #6)
&gt; (In reply to sweeden from comment #5)
&gt; &gt; Ok so more details. I got *another* Yubikey 5ci brand new and it worked. I
&gt; &gt; think the defining difference is the yubikey that did not work had a PIN set
&gt; &gt; whereas the one that did work did NOT have a PIN set.
&gt; &gt; 
&gt; &gt; Not sure why that should make any difference when uv=discouraged is set in
&gt; &gt; options...
&gt; 
&gt; Alright then. Can you please try STP 101 which should have the fix for Bug
&gt; 206547? I will close this bug as &quot;configuration changed&quot;. Feel free to
&gt; reopen it if you still see your issues on STP 101.

Actually, I&apos;m wrong. You are talking about registrations. According to CTAP2 authenticatorMakeCredential Step 6:
&quot;If pinAuth parameter is not present and clientPin been set on the authenticator, return CTAP2_ERR_PIN_REQUIRED error.&quot;

Link here:
https://fidoalliance.org/specs/fido-v2.0-ps-20190130/fido-client-to-authenticator-protocol-v2.0-ps-20190130.html#authenticatorMakeCredential

Yes, if your authenticator has a PIN, registrations won&apos;t work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621015</commentid>
    <comment_count>8</comment_count>
    <who name="">sweeden</who>
    <bug_when>2020-02-19 18:54:16 -0800</bug_when>
    <thetext>Is it reasonable to conclude that the reason my key stopped working for registration between 13.3.1 and 13.4 is that Safari is moving from CTAP1 to CTAP2?

When using CTAP1 / U2F attestation, the presence or absence of the PIN would have been irrelevant. This is no longer the case with CTAP2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621022</commentid>
    <comment_count>9</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-19 19:03:39 -0800</bug_when>
    <thetext>(In reply to sweeden from comment #8)
&gt; Is it reasonable to conclude that the reason my key stopped working for
&gt; registration between 13.3.1 and 13.4 is that Safari is moving from CTAP1 to
&gt; CTAP2?
&gt; 
&gt; When using CTAP1 / U2F attestation, the presence or absence of the PIN would
&gt; have been irrelevant. This is no longer the case with CTAP2.

That&apos;s probably not accurate. WebKit should always prefer CTAP2 if it is available. There was a bug that WebKit doesn&apos;t recognize authenticator that supports more than 2 protocols, and treat them all like U2F.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621029</commentid>
    <comment_count>10</comment_count>
    <who name="">sweeden</who>
    <bug_when>2020-02-19 19:23:35 -0800</bug_when>
    <thetext>Ok thanks for letting me know. I am fine with leaving this one closed for now with an understanding that PIN-based authenticators simply are not yet supported.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621036</commentid>
    <comment_count>11</comment_count>
    <who name="">sweeden</who>
    <bug_when>2020-02-19 19:39:43 -0800</bug_when>
    <thetext>Hmm - one additional question on this. When I use Chrome and set rk=false, uv=discouraged, I am not prompted for a PIN even if one is set on the authenticator, and I am able to register and get a fido2-u2f attestation. I guess with this combination of flags, Chrome is falling back to CTAP1. As soon as I change uv=preferred, then I get PIN prompt, plus I get a CTAP2 packed attestation format.

This is not the case with WebKit. Is this a bug, or just a different interpretation of how to map webauthn parameters to CTAP?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621066</commentid>
    <comment_count>12</comment_count>
    <who name="Jiewen Tan">jiewen_tan</who>
    <bug_when>2020-02-19 21:16:48 -0800</bug_when>
    <thetext>(In reply to sweeden from comment #11)
&gt; Hmm - one additional question on this. When I use Chrome and set rk=false,
&gt; uv=discouraged, I am not prompted for a PIN even if one is set on the
&gt; authenticator, and I am able to register and get a fido2-u2f attestation. I
&gt; guess with this combination of flags, Chrome is falling back to CTAP1. As
&gt; soon as I change uv=preferred, then I get PIN prompt, plus I get a CTAP2
&gt; packed attestation format.
&gt; 
&gt; This is not the case with WebKit. Is this a bug, or just a different
&gt; interpretation of how to map webauthn parameters to CTAP?

Probably later, I don&apos;t think the CTAP 2.0 spec has specified such a fallback.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>