-
Notifications
You must be signed in to change notification settings - Fork 40
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Proposal: Enhancement - Opt-out link #172
Comments
cc @ACathelin |
Assuming we are talking about 3DS, this issue seems to refer to things happening before the actual (issuer specific) authentication method is invoked. That is, a possible solution appears to rather belong to a generic part of a 3DS-enabled merchant Web application, since it (unlike SPC), indeed must handle card numbers. I guess that EMVCo already have updated their 3DS implementation guidelines to support these requirements. |
Thank you for writing up this issue. I have an observation and a question. Observation: It seems the primary concern here is for guest checkout scenarios. In use cases where the user has stored a card on file and the SPC credentials are bound to that data, then presumably the user would need some mechanism to manage the card-on-file data, and an opt-out link in the SPC dialog would not be needed. I am very uninformed about GDPR details, which brings me to the second question. There seem to be two pieces:
My question is: what if the relying party stores opaque information that is not credit card (or other payment instrument) data? I have in mind this flow:
Thus, no credit card data is stored. Would this implementation mean that there is no requirement for an opt-out mechanism because there is no stored credit card information? Or is the requirement more generic than that: "If someone agrees to store ANYTHING then you need to allow them to request that it be deleted." Thanks for any clarification, Ian |
@ianbjacobs GDPR states that the "data subject shall have the right to withdraw his or her consent for the storing of credit card data for the purposes of facilitating further purchases at any time.". SPC is considered here a facilitator when enrolled in a checkout flow. I don't think that hashing the card number (PAN) would make the case any better. I just want to note that despite opt-out being the trigger, the footer element can be used for other legal or operational purposes. |
These resources crossed my desk and may provide useful fodder for discussion (I still need to read them): Regarding keys as personal data See also the FIDO white paper on FIDO and GDPR: |
Hi Jean, Thanks for sharing this issue, and your proposal. We (Chrome) would like to find a way to support it in SPC - but we do have some concerns. As with many discussions around SPC, it concerns what should/shouldn't be done in browser-owned native UX (as opposed to web content). This is obviously a complex area where each browser vendor has their own views and processes, but for our part we are uneasy with the idea of allowing either:
In general, our goal as a user agent is to make sure that the user can always trust Chrome UX, even in the presence of malicious actors. SPC has always been on the edge of this, but previously we have been comfortable that the user could not be effectively attacked via the UX (due to the WebAuthn security model). We are concerned that this proposal may cross the line into being risky for users. We have developed an alternative proposal, which relies on the browser to send a signal to the relying party instead of sending the user to them. We'd love to hear your (and others) thoughts on it! ProposalAdd an optional, default-false input parameter to SPC:
The When set to
(If step 2.b fails, the browser might retry in some way, e.g., N efforts over When the relying party server receives the assertion, it can:
Mock-UpsUsing stripe.com as the RP and an example test merchant; who in the mocks is hosted on checkout.stripe.com, but in reality would be, e.g., merchant.com . |
Hi @stephenmcgruer, let's put this on the agenda of our 14 April WPWG call. Thanks! |
Consolidating input from EMV 3DSWG on this issue here.
|
I'm not quite sure that this regulation applies at all in this case. For SPC (at least as it pertains to 3DS), credit card information <--> WebAuthn credentials is stored by the issuer, NOT by the RP or the browser. Even if this wasn't the case, I think we can still argue that the information in our particular case is NOT stored to facilitate further purchases, but rather, to help during step-up authentication (which I don't think should be in scope for this regulation to being with). |
For clarity: Stripe is not using the 3DS integration of SPC (at least, currently). Instead, Stripe is the Relying Party and the user is being authenticated to Stripe from (Side-note: did you mean PSP instead of RP here?) |
Thanks for the clarification. In that case, since Stripe has control of the website, I wonder if it doesn't make more sense to implement this particular feature as a web-feature, rather than building it within SPC. Especially since it doesn't seem like this will be required when SPC is used in 3DS mode?
Ah, yes. Since the PSP will also be issuing the SPC call here I figured SPC and RP are interchangeable, but strictly speaking it's the PSP (since the RP could technically also refer to the issuer since they're ultimately the ones issuing the challenge). |
I agree with @christiaanbrand comment that it could be built outside of SPC. Opting out usually would require end-user education and potentially them accepting some T&Cs. All that can be offered separately. Perhaps the Secure Modal Window could have a cardholderinfotext space similar to 3DS windows where some static text (instructions) could be displayed on how user's could opt-out |
I guess I don't really understand why this has to be handled any differently than current 3DS challenges (this is all this is, imho). Specifically, when I go to merchant.com to buy something with my credit card from issuer.com, at some point, control is ceded to issuer.com (to do 3DS). There's no opt-out. It's just "either do 3DS and the transaction goes through" or "don't do 3DS and it's cancelled". Not sure that an opt-out in the context of 3DS makes any sense. |
See comment from @ljharb (probably meant for this issue) on per-merchant opt-out expectations: |
Hi folks; just a heads up that we have started experimenting with an opt-out flow in Chrome, to help Stripe (and any others!) determine their exact needs for an opt-out. This does not indicate (or not indicate!) that we will ship it in the future. Our first version has landed behind a flag in Chrome 104.0.5084.0, and requires launching the browser with
There is a test page at https://rsolomakhin.github.io/pr/spc-opt-out/ The version we have implemented is different from the above proposals, so let me lay it out below: ProposalAdd an optional, default-false input parameter to SPC:
The When set to If the user elects to opt-out, then the browser rejects the We have also discussed instead resolving the Mock-UpsUsing stripe.com as the RP and an example test merchant; who in the mocks is hosted on checkout.stripe.com, but in reality would be, e.g., merchant.com . (Everything beyond this is up to the merchant) |
An origin trial for opt-out UI is now ready for sign ups: https://developer.chrome.com/origintrials/#/view_trial/3293257227514675201. I've registered https://rsolomakhin.github.io/pr/spc-opt-out/ for the origin trial, so the feature should work on that website in Chrome Canary (104.0.5112.0 and later) without any command line flags. |
During our 23 June meeting [1] we observed that this feature is not currently described in the SPC specification. The WG is keen to continue to explore this proposed approach (and the overall need for an opt-out). If further experimentation with the feature reveals that we in fact need to modify the specification to support the feature, then we anticipate adding such support after v1. I am therefore leaving the issue open but marking it as after v1. Just to be clear: we want to continue to work on this right now; but if we need spec text, we are ok with adding it after v1. |
Background
In May 2021, the European Data Protection Board (EDPB) published recommendations [0] dealing with the storing of credit card data by online providers of goods and services, for the sole and specific purpose of facilitating further purchases. These recommendations note that “consent (Art. 6(1)(a) GPDR) appears to be the sole appropriate legal basis for the above-described processing to be lawful”.
The EDPB also noted that “[a]ccording to the Article 7(3) GDPR, the data subject shall have the right to withdraw his or her consent for the storing of credit card data for the purposes of facilitating further purchases at any time. The withdrawal must be free, simple and as easy for the data subject, as it was to give consent.”
[0] https://edpb.europa.eu/system/files/2021-05/recommendations022021_on_storage_of_credit_card_data_en_1.pdf
Proposal
To enable compliance with applicable laws relating to the collecting and withdrawal of consent, the proposal is to provide a customizable text field on the payer-facing SPC authentication screen to accommodate the inclusion of appropriate language and links to address applicable requirements.
footer
field in theSecurePaymentConfirmationRequest
dictionaryfooter
itemsa. Footer item is defined as a required
description
and an optionallink
The authentication prompt should display footer items below the payment total amount. The items should be displayed in a list format as in the mock-ups below.
A successful authentication should include the full content of the
footer
field in the payment field of theclientDataJSON
. That ensures the payment provider can validate if the prompt was compliant.Mock-Ups
The text was updated successfully, but these errors were encountered: