[webauthn] technical & terminology issues with PR#558 Plumb User ID through

equalsJeffH has just created a new issue for https://github.com/w3c/webauthn:

== technical & terminology issues with PR#558 Plumb User ID through ==
seems to me that PR#558 Plumb User ID through could have been reviewed more thoroughly prior to merging. I see a technical issue we arguably need to fix, and also feel that it further clouds our already fragmented/hazy/undisciplined terminology ( see also #358 and #462 ).

1.  technical issue with PR #558

please note here..
```
dictionary MakePublicKeyCredentialOptions {
    ...
    required PublicKeyCredentialUserEntity       user;
    ...
};

[...]

dictionary PublicKeyCredentialUserEntity : PublicKeyCredentialEntity {
    BufferSource   id;
    DOMString      displayName;
};
```
..that `user.id` is a BufferSource, here on the "input" side of things ie to [#createCrendential](https://w3c.github.io/webauthn/#createCredential), [authnrMakeCred()](https://w3c.github.io/webauthn/#op-make-cred) et al. 


However, on the "output" side of things (ie [#op-get-assertion](https://w3c.github.io/webauthn/#op-get-assertion) and [#getAssertion](https://w3c.github.io/webauthn/#getAssertion)), in the [AuthenticatorAssertionResponse interface](https://w3c.github.io/webauthn/#iface-authenticatorassertionresponse), it is declared as a `DOMString` -- it really should be an `ArrayBuffer` like the other returned values, no?
```
interface AuthenticatorAssertionResponse : AuthenticatorResponse {
    [...]
    [SameObject] readonly attribute DOMString        userId;
};
```

2.  overall confusing terminology

this is the terminology on the "input" side ie [#createCrendential](https://w3c.github.io/webauthn/#createCredential)l, [authnrMakeCred()](https://w3c.github.io/webauthn/#op-make-cred) et al:
```
dictionary MakePublicKeyCredentialOptions {
    ...
    required PublicKeyCredentialUserEntity       user;>     ...
};

[...]
dictionary PublicKeyCredentialUserEntity : PublicKeyCredentialEntity {
    BufferSource   id;
    DOMString      displayName;
};

id, of type BufferSource
  A unique identifier for the user account entity. This is a reference
  to an opaque byte array value specified by the Relying Party. The
  maximum size of this array is 64 bytes.
```
..so we have a "user.id" notion/term here, along with "user account".


In guts of [authnrMakeCred()](https://w3c.github.io/webauthn/#op-make-cred) we have..
```
   * Associate the credential with the specified RP ID and the user’s
     account identifier user.id.

   * Delete any older credentials with the same RP ID and user.id 
     that ...
```

..note use of "user's account identifier" and "user.id" here. 

the new term "user handle" only appears twice in the entire spec, both times on the "output side" of things, as noted below. 



On the "output" side, in [#getAssertion](https://w3c.github.io/webauthn/#getAssertion), there is:
```
    If any authenticator indicates success,

        Remove authenticator from issuedRequests.

        Let value be a new PublicKeyCredential associated with 
        global whose fields are:

        [...]>
        response

            A new AuthenticatorAssertionResponse object associated 
            with global whose fields are:

            [...]>
            userId

                A new DOMString containing the user handle returned
                from the successful authenticatorGetAssertion 
                operation, as defined in §5.2.2 The 
                authenticatorGetAssertion operation.
```

note the `userId` item that is part of `response`.  IMHO that contradicts the conclusion of the discussion in PR #558 where Christiaan agreed "[TODO: Change names to not contain the word userid. It's confusing](https://github.com/w3c/webauthn/pull/558#issuecomment-332736943)"

I would tend to want to name this "userHandle". (tho, then we have an impedance mismatch with the input side...)

And then the "user handle" prose term is used once more at the end of "[The authenticatorGetAssertion operation](https://w3c.github.io/webauthn/#op-get-assertion)"















Please view or discuss this issue at https://github.com/w3c/webauthn/issues/609 using your GitHub account

Received on Wednesday, 4 October 2017 22:41:36 UTC