- From: Benjamin Tidor <btidor@stripe.com>
- Date: Wed, 22 Jan 2020 07:37:30 -0800
- To: Ian Jacobs <ij@w3.org>
- Cc: public-webauthn-pay@w3.org
- Message-ID: <CAOkMxBxY-zdkMmvckyuxBkN2tsAiQNLenEv3S6Yf-2Y20WZdNg@mail.gmail.com>
Hi all,
Sorry for the late write-up! It looks like the scenario I wanted to
describe is
approximately captured by the new "Merchant is a pass-through between the
issuing bank's FIDO server and the client" section in the wiki, which I've
been
referring to as the "federated authentication" use case. I wanted to provide
some more color on this use case and suggest a few small tweaks:
* As we discussed on the calls, reducing friction in the checkout flow is
important to improve conversion rates. Ideally, when the customer clicks
the
"Pay" button on the merchant site, the Web Authentication prompt would be
triggered immediately with no extra UI or additional clicks.
In today's world there's a lot of intermediate UI where the issuing bank
opens up in an iframe and the user has to reorient themselves and click
around a few times to complete authentication, which creates a poor user
experience and a lot of loading spinners. Getting to a one-click checkout
flow with Web Authentication would be a significant attraction.
(I imagine it would actually be more like two clicks, one on the "Pay"
button
plus a tap/biometric scan for Web Authentication's user presence check.
It
would be interesting to explore if there's a way to consolidate these two
actions and use the user presence check as the actual payment action,
but I
don't know if that's too ambitious.)
* On the merchant side, we've heard that some merchants are hesitant to
trust
code and embedded resources from issuing banks. In today's world,
opening the
3D Secure challenge iframe requires punching a hole in the merchant
origin's
content security policy in order to embed the frame; an ideal solution
here
would be fully compatible with CSP best practices.
Concretely, where the wiki currently talks about "the ACS, via code
embedded
in the merchant site", I'd like to suggest that this interaction be
handled
by the browser, with the necessary Web Authentication parameters
(credentials
list, etc.) passed on the back end via a payment network like 3DS or
SRC. This would allow the merchant origin to avoid embedding resources
from
the issuer origin.
* Related to the above, making network requests to the issuer can be
problematic in cases where the issuer has downtime or experiences network
disruptions. Not all issuers are able to run highly-available
internet-facing
services, and the way that banks present a large target for DDOS attacks
is
always a concern. Further, because the payments use case involves
coordinating between two parties (the merchant origin and the issuer
origin),
it's very difficult to pinpoint these sorts of problems when they're
reported
by customers.
In contrast, the card networks are built around a store-and-forward model
where messages can be queued if a component is unavailable. In an ideal
world, Web Authentication would integrate with the card networks in a way
that preserves this property, e.g.:
- Merchant fetches Web Authentication parameters via a backend call to
the
issuer (the results of which can be cached)
- Merchant invokes the Web Authentication API from the merchant origin
and
receives some sort of cryptogram in response; no network requests to
the
issuer origin are required.
- Merchant forwards the cryptogram to the issuer for validation via a
second
backend call. (We might also consider having a mechanism for
merchants to
check the cryptogram on their own in case the issuer is down, but it
seems
like this might involve a privacy trade-off for the user).
(As an aside: one interesting use case is businesses that operate paid
wi-fi
hotspots, for coffee shops and the like. These merchants are running a
captive portal that shows a payment page and allows outbound network
access
to their payment provider. With 3D Secure this system breaks down because
it's not really feasible to maintain a whitelist of issuing banks --
there
are thousands and the list changes frequently. But this use case is an
example of a constrained network environment where limiting requests to
the
merchant origin only is particularly valuable.)
* One more use case, this one on the issuing side: say an issuing bank
already
supports Web Authentication for their online banking portal; we can
imagine
that customers use it to log in, to confirm large transfers, and for
other
sensitive account actions.
If this bank wants to adopt Web Authentication for the payments use case,
they would reasonably want to take the precaution of separating the
credentials used for payments from the credentials used for online
banking.
I know we've talked about having the issuer run code in the payment flow
that
gates which merchant origins can request a signature, but I don't think
that's quite the right mental model. Rather, we want to have two
identities:
one used for online banking, which can *never* be accessed from a
third-party
context and can *only* be used to mint online banking sessions, and
another
which can *only* meaningfully be accessed from a third-party context
(i.e. the bank won't let it be used to mint online banking sessions) and
is
instead used to mint some kind of payment cryptograms (a signature over a
transaction ID and amount and merchant origin, more or less). In this
world,
the issuing bank doesn't care about gating access to certain merchant
origins: from their perspective, any origin should be able to request a
payment cryptogram from the issuer's payment key, and if the user taps
their
authenticator then they're consenting to transact with that origin.
I hope these cases are clear and interesting; I'm happy to talk more on
tomorrow's call!
~Benjamin
On Mon, Jan 20, 2020 at 9:36 AM Ian Jacobs <ij@w3.org> wrote:
> Dear task force participants,
>
> Jonathan Grossar and I have made some edits to the payments use cases for
> Web Authentication:
> https://github.com/w3c/webauthn-pay/wiki/Use-cases
>
> I am hoping we also have edits from Benjamin Tidor in time for the
> discussion.
>
> Call info:
>
> - The call is from 10:30-11:00 ET
> - WebEx: http://www.w3.org/2019/11/sectf.ics
> - IRC: irc.w3.org #webauthn-pay
>
> Thank you,
>
> Ian
>
> --
> Ian Jacobs <ij@w3.org>
> https://www.w3.org/People/Jacobs/
> Tel: +1 718 260 9447
>
>
>
>
>
Received on Wednesday, 22 January 2020 15:38:05 UTC