privacycg / storage-access

The Storage Access API
https://privacycg.github.io/storage-access/
199 stars 27 forks source link

Scenario Validation (Embedded Component (Tableau)) #74

Open LGraber opened 3 years ago

LGraber commented 3 years ago

It is unclear exactly where to post this to since it is more of a scenario but after initially posting on the partitioning repo, I am reposting here as this proposal is currently not satisfying the requirements and so probably will generate more discussion. Here is the link to the other post if anyone wants (https://github.com/privacycg/storage-partitioning/issues/21). I have tried to outline our scenario, the expectations of our customers and end-users and the impact of all of the options currently on the table. Hopefully this issue can be used to have a discussion and I don't have to post on all the repositories?

Background

Tableau is a service which can run as a SaaS offering or via an on-premise, customer managed server installation. Tableau uses cookies primarily for session management. After a user logs in to Tableau, a session is created and a cookie is used to maintain this information (along with a csrf cookie used as part of CSRF protection). One of our primary (not unique) use cases is via embedded analytics where our visualations and experiences are embedded as a component (iframe) inside of a customer site or a third-party application. When cookies stop working, our ability to maintain sessions is broken and our user experience most often degrades into an endless login loop. We hit similar issues during the fixes for SameSite attribute enforcement (which just required updating everywhere we generate cookies) but are trying to make sure that the current proposals take into consideration our customer needs.

Requirements

Options

We have broken down options going forward and provided insight into each as well as a look at how proposals from the committee might affect them.

Current ‘Conclusions’

We have data that we can share which breaks down the impact of the currently available implementations and our testing of them across different browsers. Our hope is to work / communicate with the working groups to understand what the expectation so that we can continue to meet the requirements of our customers and end users.

johannhof commented 3 years ago

@LGraber Hi, would you have time to join our Privacy CG teleconference tomorrow? This issue is on the agenda and it might be helpful if you could present your findings directly and be available for questions.

Thanks!

LGraber commented 3 years ago

@johannhof Yep. Kris forwarded me the information when we saw it was on the agenda. 9am PST. Will be there. Thanks!

mpsenn commented 3 years ago

I too haven't found an allowed way to authenticate requests for protected <img> and CSS content, in a 3rd party iframe context.

I also corroborate that the StorageAccess API has huge limitations. The Webkit implementation requires an explicit interaction for every page load. So even if a user has granted access, if the user refreshes the page, access is lost.

hpsin commented 3 years ago

@LGraber is it correct to assume that all of these various frames need to fall back to a single auth source? As in, Tableau.example embeds tableauWiki.example, and both make (silent) requests to customerAuth.example to perform auth?

If so, a single storage access request from (tableau.example) to (customerAuth.example) should suffice for all embedded apps.

The problem is that it requires a high degree of non-standardized coordination between you and potentially multiple IDPs in order to get the prompt to trigger (visible interaction between the user and an embed of the customer IDP directly). We have some internal proposals for how to standardize a "prompt=storage" OIDC handshake that specifies e.g. iframe size and parameters to create a user interactable "finish sign in" button. Would that be of interest to you?