On Fri, Oct 28, 2022 at 7:07 PM Sasha Tokarev <alex...@microsoft.com> wrote:
> Hi John, > > > > Sorry for the delay. > > > > 1) Can we avoid modifying the Cookie header, and only modify "x-ms-" > headers? > > - No, in some version of windows we use Cookie instead of headers. > I'm not seeing why this is an issue? It's not difficult to check two different request headers, server-side. Cookies have web standard behavior, which these don't obey, so it seems safer to use a separate header, rather than provide APIs to manipulate Cookies within Chromium for the sake of things that are not cookies. > 2) Can this be scoped to just frame requests, e.g. only for requests to > fetch the html for main frames and subframes and not subresource requests > like images, XHR, JS, CSS etc. requests? Igor had tried this locally and it > seemed to work. > > > > - some customers have a proxy, which redirects to all requests, including > from images to their internal service, authenticates the user via AAD and > redirects back if this request is authorized to the user. Can you do it for > frame request only – yes, and it will cover most of the scenarios, but the > previous one will not work in Chrome. My recommendation would be to do in > all requests. > > > > Thank you, > > Sasha > > > > *From:* John Abd-El-Malek <j...@chromium.org> > *Sent:* Tuesday, October 18, 2022 12:58 PM > *To:* Sasha Tokarev <alex...@microsoft.com> > *Cc:* Matt Menke <mme...@chromium.org>; blink-dev <blink-dev@chromium.org>; > Owen Min <z...@chromium.org>; Greg Thompson <g...@chromium.org>; Ryan > Sleevi <rsle...@chromium.org>; Adam Langley <a...@chromium.org> > *Subject:* Re: [blink-dev] RE: [EXTERNAL] Re: Native support of Windows > SSO in Chrome > > > > You don't often get email from j...@chromium.org. Learn why this is > important <https://aka.ms/LearnAboutSenderIdentification> > > Hi Sasha, I got looped in to a code review and I had a few questions: > > > > 1) Can we avoid modifying the Cookie header, and only modify "x-ms-" > headers? > > 2) Can this be scoped to just frame requests, e.g. only for requests to > fetch the html for main frames and subframes and not subresource requests > like images, XHR, JS, CSS etc. requests? Igor had tried this locally and it > seemed to work. > > > > If we can do the above, either right away or with small changes to your > server, we can simplify the implementation in Chrome. This in turn would > help us reach a lower maintenance burden while still being performant. > > > > Thanks > > > > On Thu, Aug 11, 2022 at 4:30 PM 'Sasha Tokarev' via blink-dev < > blink-dev@chromium.org> wrote: > > With respect to credential mode “omit” it is fine not send those headers, > if the other mode will allow it. > > > > We use sandboxed iframes in out authentication libs, but we set > “allow-same-origin” token to be able to use cookies. > > > > > https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/6756b300c5696ad4890f1f7f27de69f6941a71e7/lib/msal-browser/src/interaction_handler/SilentHandler.ts#L143 > <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FAzureAD%2Fmicrosoft-authentication-library-for-js%2Fblob%2F6756b300c5696ad4890f1f7f27de69f6941a71e7%2Flib%2Fmsal-browser%2Fsrc%2Finteraction_handler%2FSilentHandler.ts%23L143&data=05%7C01%7Calextok%40microsoft.com%7C4d6e3ce176274255269008dab14328fb%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638017200716146352%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000%7C%7C%7C&sdata=vS14Xw7x%2FQvSsDsyCFOzjXy22HfbHsTeP7qGnbfYYeM%3D&reserved=0> > > > > We fine if “allow-same-origin” will relax restriction of not sending > cookies. > > > > > https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe#attr-sandbox > <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdeveloper.mozilla.org%2Fen-US%2Fdocs%2FWeb%2FHTML%2FElement%2Fiframe%23attr-sandbox&data=05%7C01%7Calextok%40microsoft.com%7C4d6e3ce176274255269008dab14328fb%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638017200716146352%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000%7C%7C%7C&sdata=dWrHKcXb7EVPimVkz%2FsUvbSEAYDhmstMlGKIPAj8ZvY%3D&reserved=0> > > > > Thank you, > > Sasha > > > > *From:* Matt Menke <mme...@chromium.org> > *Sent:* Thursday, August 11, 2022 3:09 PM > *To:* Sasha Tokarev <alex...@microsoft.com> > *Cc:* blink-dev <blink-dev@chromium.org>; Owen Min <z...@chromium.org>; > Greg Thompson <g...@chromium.org>; Ryan Sleevi <rsle...@chromium.org>; > Adam Langley <a...@chromium.org> > *Subject:* Re: [EXTERNAL] Re: Native support of Windows SSO in Chrome > > > > > > > > On Thu, Aug 11, 2022 at 5:43 PM Sasha Tokarev <alex...@microsoft.com> > wrote: > > Hi Matt, > > > > I apologize for not being able to respond, I was on vacation, but now I’m > back. However, before the vacation, I had planned to ping this thread, as > we are getting more and more feedback that the extension model is not > working for various reasons, and the users do not have sufficient help to > resolve it. In many cases the extension is either accidentally dismissed, > or partially works (has icon on tab, but the rest functionality is > blocked). In such cases we suggest to escalate to Google, but I’ve been > seeing very few cases that successfully got attention from Google. > > > > You can read review feedback here: > > > > > https://chrome.google.com/webstore/detail/windows-accounts/ppnbnpeolgkicgegkbkbjmhlideopiji > <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fchrome.google.com%2Fwebstore%2Fdetail%2Fwindows-accounts%2Fppnbnpeolgkicgegkbkbjmhlideopiji&data=05%7C01%7Calextok%40microsoft.com%7C4d6e3ce176274255269008dab14328fb%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638017200716146352%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000%7C%7C%7C&sdata=b%2F%2FNBSGW%2F97WYivO5807CiGo6Dz4VO8evx8FzwEavjU%3D&reserved=0> > > > > In such cases the only recommendation we have is “use Edge”, as it has the > native support and not a subject for the extension deployment issues. In > order to reduce support cost, we are also considering to change our > remediation page, which we show when the users hit the conditional access > issues, to detect such cases and show more explicit text to use Edge. I’m > hopping we will be able to make a progress on this. > > > > Back to your question: > > * Do we need to bypass CORS for requests send to Microsoft's IDP? > > - no you don’t need. It is ok to respect CORS. > > > > * Do we need to send Microsoft SSO credentials in Credentials Mode: Omit > requests? > > - I assume you meant this XHR requests with credentials? > https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#requests_with_credentials > <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdeveloper.mozilla.org%2Fen-US%2Fdocs%2FWeb%2FHTTP%2FCORS%23requests_with_credentials&data=05%7C01%7Calextok%40microsoft.com%7C4d6e3ce176274255269008dab14328fb%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638017200716146352%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000%7C%7C%7C&sdata=6zyZ8Hdx9YHiga6gaW3oBmoPqWNkZ8aI%2FZ%2BViCuBzRA%3D&reserved=0> > > We don’t use XHR for authentication for now. So, if it is > more simple, we can agree on “no”. > > > > No, I mean any request with a credentials mode of omit. See > https://fetch.spec.whatwg.org/#concept-request-credentials-mode > <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Ffetch.spec.whatwg.org%2F%23concept-request-credentials-mode&data=05%7C01%7Calextok%40microsoft.com%7C4d6e3ce176274255269008dab14328fb%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638017200716146352%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000%7C%7C%7C&sdata=GmN23x%2F%2BONho2vq1EHqYaKc93MhrP3eZyh55Yvu921w%3D&reserved=0>. > That's a fetch layer concept, not something unique to XHRs. > > > > > > * Do we need to send SSO credentials in sandboxed iframes of fenced frames? > > - no. I’ve synced up internally, we don’t use fenced > frames, but we use iframes (on the application page) for some > authentications. So, this headers should be available in iframes of the > application page. > > > > So what about sandboxed iframes? They don't have cookie access, normally. > > > > > > Thank you, > > Sasha > > > > *From:* Matt Menke mme...@chromium.org > *Sent:* Wednesday, July 20, 2022 8:52 AM > *To:* blink-dev <blink-dev@chromium.org> > *Cc:* Sasha Tokarev <alex...@microsoft.com>; Owen Min <z...@chromium.org>; > blink-dev <blink-dev@chromium.org>; Greg Thompson <g...@chromium.org>; > Ryan Sleevi <rsle...@chromium.org>; Adam Langley <a...@chromium.org>; Matt > Menke <mme...@chromium.org> > *Subject:* Re: [EXTERNAL] Re: Native support of Windows SSO in Chrome > > > > This task is being picked up again, but there are a lot of questions in > terms of implementation: > > > > * Do we need to send Microsoft SSO credentials in Credentials Mode: Omit > requests? > > * Do we need to bypass CORS for requests send to Microsoft's IDP? This is > a bit related to the above question. > > * Do we need to send SSO credentials in sandboxed iframes of fenced frames? > > > > I'm hoping the answer to all of these is "no", so these behave a bit like > 3P cookies (which are being removed from the web platform...). > > On Wednesday, November 3, 2021 at 11:12:16 AM UTC-4 Sasha Tokarev wrote: > > (Sorry for duplication, but I don’t see this response in the public > thread, probably because I’ve sent it from my private email and it went to > some filters, so I’m repeating it from my official with some *additions*) > > > > I would like to highlight one important conception of “joined device". If > a user/admin went through the joining process, they *consented* and > expect: > > > > 1. browser SSO > 2. application SSO > 3. access to protected services from *a web and a native applications* > > > > Otherwise, they should not join. > > > > While privacy and security concerns are important, we should agree that it > is IDP job to balance all parties in process *of authentication*, and > they always exist, given we have centralized identity service, and IDP use > cookies. > > > > *Joining of the device is an explicit, and in some case not a trivial > action from a device owner (in case of personal devices the device owner == > the user), an extra flag in this process makes this feature unusable for > some cases. With respect to security and privacy aspects, there is no > essential difference in the IDP behavior between a web application and a > native application (browser SSO and application SSO), if the device owner > doesn’t like the IDP behavior, he/she needs to unjoin. * > > > > Thank you, > > Sasha > > > > > > *From:* Sasha Tokarev > *Sent:* Tuesday, November 2, 2021 6:33 PM > *To:* 'Matt Menke' <mme...@chromium.org> > *Cc:* Owen Min <z...@chromium.org>; blink-dev <blink-dev@chromium.org>; > Greg Thompson <g...@chromium.org>; Ryan Sleevi <rsle...@chromium.org>; > Adam Langley <a...@chromium.org> > *Subject:* RE: [EXTERNAL] Re: Native support of Windows SSO in Chrome > > > > Hi Matt, > > > > I missed that you asked some questions inline, sorry about that, I’ll > cover answers *inline* as well. > > > > *From:* Matt Menke <mme...@chromium.org> > *Sent:* Saturday, September 25, 2021 7:45 PM > *To:* Sasha Tokarev <alex...@microsoft.com> > *Cc:* Owen Min <z...@chromium.org>; blink-dev <blink-dev@chromium.org>; > Greg Thompson <g...@chromium.org>; Ryan Sleevi <rsle...@chromium.org>; > Adam Langley <a...@chromium.org> > *Subject:* Re: [EXTERNAL] Re: Native support of Windows SSO in Chrome > > > > Thanks for the details, Sasha! Please don't feel like you need to answer > my questions while on vacation - there's no rush here. > > > > Enjoy your vacation! > > > > On Sat, Sep 25, 2021 at 9:22 PM Sasha Tokarev <alex...@microsoft.com> > wrote: > > Hi Matt, > > > > Disclaimer: I’m at vacation my responses may delay. > > > > *> What's the flow to join a cloud identity here? What are the permission > prompts like? I assume that home users who use generic home user Microsoft > accounts (as I believe encouraged during Windows install/configuration) > aren't assumed to be granting this permission, though it could reasonably > be described as a "device joined to cloud identity"?* > > > > There are many ways of joining devices, many of them looks like domain > joining, and requires admin’s action and explicit user action. Home user > also either go via explicit action and consent which include web SSO: > > [image: Graphical user interface, text, application Description > automatically generated] > > > > Thanks! So this is a per-local-app permission, that can also be > granted to all apps? (*Sasha: yes, if the user consents)* My main > concerns, in terms of privacy (not security issues) here are: > > > > 1. Home user using a Microsoft account on their personal device > unexpectedly gets logged in. If the user has to give explicit permission > to Chrome or all apps (apart from just using a Microsoft account), as it > sounds like is the case, I'm much less concerned about this. I'd still be > more comfortable if Chrome-side integration is disabled by default, though > the settings folk may not think it's worth a new setting. > > > > *Sasha: An extra settings just an extra friction, the user has consented, > and user expects SSO, otherwise it should not join the device.* > > > > 2) An enterprise uses corp Microsoft accounts, but doesn't want to use > Microsoft as an IDP. (*Sasha: it should not join device to Microsoft IDP > then)* It may not want this information to be sent to Microsoft. > Admittedly, I'm not sure how much of a concern this is, if Microsoft is > managing their accounts in the first place. Note that I'd be concerned > about this happening for non-Microsoft managed accounts here, too, just > think it's less likely for it to be possible to accidentally happen for > non-Microsoft accounts. Sounds like this does need explicit opt-in even > with Microsoft managed accounts, so sounds like this isn't at all an issue. > (*Sasha: Non-Microsoft accounts do not exist, but if they were, then I > don’t think it is an issue if the user has consented to it.)* > > > > 1. A bit less of a concern, but a person using their home account on a > corp device (not uncommon, though not generally a great idea), gets their > personal, non-corp managed account, sent to the IDP, inheriting the fact > that IDP is enabled on the device. It could either be using the corp IDP > configuration, or the IDP configuration associated with the domain of their > home account - both seem problematic to me. > > > > > > *Sasha: Currently, your personal cookie will not go to your organization’s > IDP, because our IDPs are segregated, and every IDP has associated list of > URLs, an IDP gets the cookie for its URL .However, if IDP handles both > personal and work identity, then it will get both cookies, and it will be > IDP’s job to ask the user which account he/she is going to use for this > application. However, there 2 things should happened for this scenario, the > IDP needs to handle both Organizational and Personal identity, the > application should be registered in a way that it handles personal and > organizational accounts. If that will happened, then the IDP will have to > ask the user which account to use, something like this: * > > > > 4) Enterprise intends to use the feature, but accidentally leaks this > information to a 3P. bouncing through the IDP. It sounds like there's > server-side configuration to prevent this, and given that the feature has > to be explicitly enabled on the OS, they've already indicated that they > trust their IDP. > > > > *Sasha: Admin needs to pre-install application in the tenant, otherwise it > will be rejetected. This concern also exists without this feature. A user > has Office, * > > 1. *the user logged in Office via IDP (login.microsoftonline.com > > <https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Flogin.microsoftonline.com%2F&data=05%7C01%7Calextok%40microsoft.com%7C4d6e3ce176274255269008dab14328fb%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638017200716146352%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000%7C%7C%7C&sdata=Ra3LapnCWETVb3f%2F5WCFZ5%2BWO2UFOJ3IctL%2B6UUjyIg%3D&reserved=0>)* > 2. *login.microsofonline.com > > <https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Flogin.microsofonline.com%2F&data=05%7C01%7Calextok%40microsoft.com%7C4d6e3ce176274255269008dab14328fb%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638017200716146352%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000%7C%7C%7C&sdata=ugOSrbP9uwXm4A62TCGaNlWIt1NCJMXGjIHFJNIIrPA%3D&reserved=0> > will store it as a cookie.* > 3. *Now, sasha.com > > <https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fsasha.com%2F&data=05%7C01%7Calextok%40microsoft.com%7C4d6e3ce176274255269008dab14328fb%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638017200716302589%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000%7C%7C%7C&sdata=tm5n1S5s5fNGYFOeGlKfkLpGlS2oVf2ZGZHd7XPY1I0%3D&reserved=0> > can silently bounce the user via login.microsfotonline.com > > <https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Flogin.microsfotonline.com%2F&data=05%7C01%7Calextok%40microsoft.com%7C4d6e3ce176274255269008dab14328fb%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638017200716302589%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000%7C%7C%7C&sdata=qflr4%2FsQuiiOt%2FD0fD6Dvjc%2BEjSZ3CTl7O%2F1OdgGt48%3D&reserved=0>, > get a token and read user’s email. It is a huge issue, if it would be > possible.* > > > > *That is why:* > > *Before sasha.com > <https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fsasha.com%2F&data=05%7C01%7Calextok%40microsoft.com%7C4d6e3ce176274255269008dab14328fb%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638017200716302589%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000%7C%7C%7C&sdata=tm5n1S5s5fNGYFOeGlKfkLpGlS2oVf2ZGZHd7XPY1I0%3D&reserved=0> > start to work in the tenant, admin needs to pre-install/pre-consent the > application in the tenant.* > > > > *I’m on purpose drawing parallel with cookie, because in this proposal, > the only thing we append a way how we deliver the cookie, the remaining > model stays the same. All threats that applicable for cookies, are also > applicable for this model.* > > > > Configure the admin consent workflow - Azure AD | Microsoft Docs > <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fazure%2Factive-directory%2Fmanage-apps%2Fconfigure-admin-consent-workflow&data=05%7C01%7Calextok%40microsoft.com%7C4d6e3ce176274255269008dab14328fb%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638017200716302589%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000%7C%7C%7C&sdata=W3N9Nzkk%2FwWBO79tSVu2Sxqp7Z5OqJoGOsDyqs99hIQ%3D&reserved=0> > > > > *> Would this be enabled by default (for enterprise users only)? * > > > > It is like domain join, when you join device to domain you expect SSO. > Given that there is explicit user or admin action, and consent, which > includes web SSO, it should be enabled by default both for consumers and > enterprise users, like it is enabled in Edge. Additional flags will only > complicate deployment and doesn’t bring extra protection, users will have > to remember about the extra flag. It decreases effectiveness of the > feature. > > > > We do not ask to deploy extra flags to enable Windows Integrated Auth, > once you joined to the domain you got it, this is a new versions of Windows > Integrated Authentication. > > > > *> Also, what about incognito? * > > > > In incognito it must be OFF by default, to protect user and organization, > but it is OK, to have a settings controllable by admin to make it on. > > > > *> So this means **evil.com* > <https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fevil.com%2F&data=05%7C01%7Calextok%40microsoft.com%7C4d6e3ce176274255269008dab14328fb%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638017200716302589%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000%7C%7C%7C&sdata=ZHvTLgexX9TKxFx5njsDiUwmXGWhodlnnzGPVdqG88I%3D&reserved=0>* > could redirect to **https://login.microsoftonline.com/* > <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Flogin.microsoftonline.com%2F&data=05%7C01%7Calextok%40microsoft.com%7C4d6e3ce176274255269008dab14328fb%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638017200716302589%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000%7C%7C%7C&sdata=k42HlQPwKGq%2FuDNel0RwdK%2Bvt%2F63maD7gVPSiT1w3n0%3D&reserved=0>*, > and tell it to log in using the IDP to **https://www.mywork.com* > <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.mywork.com%2F&data=05%7C01%7Calextok%40microsoft.com%7C4d6e3ce176274255269008dab14328fb%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638017200716302589%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000%7C%7C%7C&sdata=bqmUPwQ539HT55eNIMdElr7Njuvc7kPAMIX%2FUDCdk5w%3D&reserved=0>*, > by providing a redirect URI there? Or is the referrer to the IDP validated > in some way?* > > > > I’m not sure I fully understand the attack here. Evil.com will have to use > mywork.com > <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.mywork.com%2F&data=05%7C01%7Calextok%40microsoft.com%7C4d6e3ce176274255269008dab14328fb%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638017200716302589%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000%7C%7C%7C&sdata=bqmUPwQ539HT55eNIMdElr7Njuvc7kPAMIX%2FUDCdk5w%3D&reserved=0>’s > redirect URI, it means that token (authentication artifact) will be > delivered to https://www.mywork.com > <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.mywork.com%2F&data=05%7C01%7Calextok%40microsoft.com%7C4d6e3ce176274255269008dab14328fb%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638017200716302589%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000%7C%7C%7C&sdata=bqmUPwQ539HT55eNIMdElr7Njuvc7kPAMIX%2FUDCdk5w%3D&reserved=0> > not to evil.com > <https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Fevil.com%2F&data=05%7C01%7Calextok%40microsoft.com%7C4d6e3ce176274255269008dab14328fb%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638017200716302589%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000%7C%7C%7C&sdata=ZHvTLgexX9TKxFx5njsDiUwmXGWhodlnnzGPVdqG88I%3D&reserved=0>. > Overall, these kinds of threats covered by federation protocols OIDC, > OAuth, SAML etc. IDPs exist in the modern world (Facebook, Google, AAD, > MSA) they have to be protected from all kinds of threats, as they > authenticate the user and redirect the token. All these IDPs produce a > cookie for themselves to avoid useless re-auth. This proposal only manages > the way of more secure delivering those cookies from native component in > OS, which must be implemented by IDPs vendors, to IDPs web site. This > proposal doesn’t change protocols how an IDP talks with web applications > (aka resources, aka target resources, aka relying parties). All threats and > mitigation applied to existing protocols. > > > > I'm not suggesting a threat here, just trying to understand what > information is used by the server to authenticate users (which, sure, I > want to know so I can figure out the worst that can happen in the case of a > malicious actor). > > > > *Sasha: in the moment of Windows logon, or application logon the IDP web > site creates an encrypted blob, that has user information, device > information and session key. Nobody except server can decrypt this blob. We > call this blob as PRT or authentication artifact. When a web request goes > to IDP, and only to IDP (not other web site), we take request QS parameters > that may include nonce, PRT and sign this request by the session key that > stored in TPM. When the request reaches the server, we:* > > 1. *Validate nonce.* > 2. *Decrypt PRT, extract Session key from it.* > 3. *Validate signature of the cookie.* > 4. *If the signature is valid, the server takes device id and user id > information from the blob.* > > > > *Here is example of the cookie, you can use any JWT parser to decode to > some level, > eyJhbGciOiJIUzI1NiIsICJjdHgiOiIwcDRXekZ6TlF1TnhjakRCRjBlOUtNQk9nSXNlUDdZMSJ9.eyJyZWZyZXNoX3Rva2VuIjoiSUFRQUJBQUFBQUFBbS0wNmJsQkUxVHBWTWlsOEtQUTQxNEhpZllLbVIwcTBOdlZ5SXYwNlY4Ujc2Rkt3SzV4SWd6NHlXMUJBSU5QNXZEekl4VGc4cXV1V25oaVY4TDEzZHIyNWtNVWxMU0t2VDVTcEFrNEhKQnRDTTFKbm43dzlZRkpCWlBoWnFwcE5lOXIzWGxEV0NLOFkwWVhoRC0wQV8yTkVIRkQzbG1RcEdNd1VkcGUtS2hiWjBNNDZ0aTFsYkVVR2RGNWRuc0c1R1pYYThoNzdTV1Fqay1TY2NETVA2Tnh0aDNRQzhRYV9zZ255Q2FQYVZKanBZaVhFYmFIajNTb0RDYS1Yb1RHQ192Q2JpaVhQX2NyWFZtSVhzQkZBSDg1WnFqYUhQYThlVTYwMTVINThOTmVJTll5VTlsVDFYeXZmanE5RXZ2QloyR1RIRU02MnNJWXR2SmkzQk1SeGJoLXB1cEV0UVpfY1doNEdLSXVBM2JrMFdHdUZVT3pnQmpGaERyWUk5aDJJLVVXUGF3cHFiTFJXbEZmejk5VDFsMnlFYVZlQ29uemotSHZYSVBCVjZfaEU0TUtYajh2T1pqV3ltelVnQmtvMVhqQlNyWkg4ZG1MMm9oX1BBU29oQWN4c2h2LXAwU05FTW1tQ1hPa1VwU2t0aXNhZkxNYUY5SnhMVW80dGVYanFLc1NDT2o0QURfYjZhQ2MybEY1dnpQWTdZNjdMVlVYZDRvYmkyX2RpOXJDbVQtLWVacXRHY25kMENUQmFvTWh5U0RrMTlqcVE5QVF0dGFRTnV6OTV3LVVCaEEyd09wRzVnaVNLM2tOOEhfZ0VhSF9ubjdaX2FQeU1GR1BfQ0VxNWppZTJjOGF5aWdmX2tjdjNHSWVfVGhfeFROSThjNE5JaWp2NWdCaEpCWU15R0NVejJfMEg2MnRUenJac1ZRYTIwTmphZlpVd3pxQ24xTDIwUnJNcUF4U2dwQzlYc1ZTcWY0WDEtRDBQRDB4WjdyYWR5U2RoWkV2X0FIV05PWGhiUk5oLXktem5JYV9LV2lvcnRxSWw3aW05ZzVWZzFmUTZuLThxUTRkWTUxM1pOTUI1SG03dks2emlJM19ORFdBUmdWU1VjekRGaUNnQ0lUWlVjdGQ2eW5Xbk9ZNnFiaVAxMFJjejZ2T2VjMzNsUHhaWTI2VnkwN1UwLUtHUEZnYlB4NmViM0dwY1c0MElLdmVaT2dnM2VDdkx1MkM0MHhsSnJYcnhEVmZBMGY2bTh3VWktVENRLWJEc2tzNEF3S1VHRk1YSUlzeF9ZaVlEMWd6OGoxYTJyRS1JVnM0OVJCMDNCQjlla2cwUVV4X2NPS0Z3dnpXdWt6Vkd4dFY0SWVjMGVXa21pLW9aR1NxVXVrWlpGMHdqZmpYckxBTExiTEQ2QmZQSl9oRGxxMnNGcHFibGtrN0tGMmZiQ0hudm03eFN0ZTYwMzlZRGNrZ3FpU3pfb3FhYk5Kb2JWdFdoRGNNNDlnb29SdXdpNERJbC1EVjFUWVhucVBpSnl1WWpOQlM5WjE2S2ZZQmtKdGtwblhlbW8tSDh0YlRNaUNvZXF1eEZFTFJKc0MxU0xEVUVQbjl5eEVaLWFlRno4N2xRNC1KQk9feHNxM09BWFMydXNJd3U0ZmpSTkRPM25QMllUYmFRTlNxamNvYnV3T1RMSGJJNVV3UFlTU19nUkFPdkRGbi1hNDRudWN0azBKcExTVXRrQVlFajBFWmVwYjIySDFfOTctal9fNERvM0FxVTBQTURfNFJUM1preHgyMUJJdkxmUWt1XzU3dVZ3WGtNdzNud2JxTUJKSUFBIiwgImlzX3ByaW1hcnkiOiJ0cnVlIiwgInJlcXVlc3Rfbm9uY2UiOiJBUUFCQUFBQUFBQW0tMDZibEJFMVRwVk1pbDhLUFE0MVhKWmVNb3MxSmxubzZuZXNBbVR1VEl2VTdLZUs3LXZab1dJR0JGdmNzZHNtb1ZUR2ZxOHdNZlVYRW9sRWE0c1h2bXZPQjBtemdNV0V4bFdhbTUzNWZDQUEifQ.ah99UVhYNBp2KoKx5I3yLbzdf01nV0nicPPCf43uMMw* > > > > *However, you will not be able to open refresh_token field, as it is > encrypted by a server key.* > > > > What happens if the cookie is rejected? > > > > *Sasha: IDP will try to ask username and password, 2FA, however if the > admin wants to validate the state of device, and device will not be > delivered, the user will blocked.* > > > > Could an MitM attacker figure out if the cookie is rejected or not > by whether the user was redirected from the IDP to the destination site? > > > > *Sasha: this question I didn’t fully understand. Overall MitM can conclude > that cookie was rejected.* > > > > *> I believe the initial proposed CL I saw wiring this up added the > cookies to all requests to the magic URL. Does this mean that only main > frame navigations need these additional cookies?* > > > > No, all navigations. It is a cookie by nature, it must follow all cookie > rules. If XHR-web request should append a cookies, then we need append this > cookie. The difference between this cookie and regular cookie is regular > cookie is not protected, an attacker can steal it and use on a different > device. This cookie is protected. Attacker can steal it but it will be > expired very fast. > > > > So not just all navigations, but also XHRs and subresource requests, then? > (*Sasha: yes if they go to IDP*) What about internal Chrome requests? > (*Sasha: > Chrome is not integrated with IDPs that on Windows, but if it will – then > yes)* These are non-webby requests, but I believe some enterprise > policies may trigger them (e.g., installing extensions mandated by group > policy). (*Sasha: I don’t think we care about them, these requests do not > have integration with our IDP.*) > > > > Should enabling 3P cookie blocking also block these, in contexts where we > consider the IDP server a 3P server? > > > > These sound like SameSite=None cookies, which are slated for removal from > the web platform. Admittedly, partitioned cookies will be added before > that, though since these aren't really partitioned, it's not accurate to > call these partitioned cookies, since they give a cross-site identity. > Clearing all cookies also clears cookies (whether the user does it, or it's > done by a Clear-Site-Data header), while the state maintained by these is > persistent. These are also not scoped per Chrome profile, unlike cookies. > So I'm not sure saying these must follow all cookie rules is accurate > here. I'd be more comfortable not overloading the cookie request header. > > > > *Sasha: I would consider them as 1st party cookies, as an IDP creates > cookie for itself. The cookie is created by > login.microsoftonline.com/live.com > <https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Flogin.microsoftonline.com%2Flive.com&data=05%7C01%7Calextok%40microsoft.com%7C4d6e3ce176274255269008dab14328fb%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638017200716302589%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000%7C%7C%7C&sdata=LBcXoEqGhLaMu%2F8ccQOuSWTd48zcjJSjf%2FMyfFXoqQo%3D&reserved=0> > for itself ( login.micosofotonline.com/live.com > <https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Flogin.micosofotonline.com%2Flive.com&data=05%7C01%7Calextok%40microsoft.com%7C4d6e3ce176274255269008dab14328fb%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638017200716302589%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000%7C%7C%7C&sdata=lmg3Acibyp68N4D9IqWLVQ9nyM2tikAt5a4rbUHd4dc%3D&reserved=0> > ), but outside of browser during windows logon/application logon. Clean all > the cookies will not actually clean them (they will be re-created), and yes > in this aspect it is auth **😊* > > > > *> Is there some other communication behind the scene between the OS and > the IDP here to authenticate the device? Or is this just a matter of > encoding data in the request?* > > > > I think it is easier to answer this question is to describe what cookie > is. Please, note, format of the cookie is something internal between IDP > native component and IDP web services. Microsoft’s cookie is JWT-blob that > contains PRT > <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fazure%2Factive-directory%2Fdevices%2Fconcept-primary-refresh-token&data=05%7C01%7Calextok%40microsoft.com%7C4d6e3ce176274255269008dab14328fb%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638017200716458799%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000%7C%7C%7C&sdata=xc7TVluKdtKNOqU3FSwp8EjjGXxqojzY4%2FKTW4iQEJQ%3D&reserved=0>, > nonce, and signature. The PRT contains deviceid, userid and the key hash. > The key for the signature is in a hardware chip, e.g., TPM: > > > > { > > ctx: "HfRmDwiULBY5mDyUxd8\/RQV2xs72B55H", > > *alg*: "HS256" > > }. > > { > > request_nonce: "AQABAAAAA…. < used to make sure that issuer still has > access to the hardware key >", > > refresh_token: "AQABAAAAAAA….< an encrypted by IDP blob that contains > deviceid, userid, keyHash >", > > *iat*: *1597885901* > > }. > > [signature] > > > > When such cookie arrived to IDP, we check nonce and signature. It gives us > assurance PRT comes from the same device as it was originally created. > Hence, we can trust device and user info inside PRT. A browser doesn’t > create PRT, PRT is created and updated: > > 1. During Windows logon > 2. Application logon (if user has added account), e.g., when Outlook > accessing Exchange. > > > > Browser just reads PRT-cookie. > > > > Thank you, > > Aleksandr > > -- > You received this message because you are subscribed to the Google Groups > "blink-dev" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to blink-dev+unsubscr...@chromium.org. > To view this discussion on the web visit > https://groups.google.com/a/chromium.org/d/msgid/blink-dev/PH0PR00MB1313E2E1FE66EEFFD8F75BAEA1649%40PH0PR00MB1313.namprd00.prod.outlook.com > <https://nam06.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgroups.google.com%2Fa%2Fchromium.org%2Fd%2Fmsgid%2Fblink-dev%2FPH0PR00MB1313E2E1FE66EEFFD8F75BAEA1649%2540PH0PR00MB1313.namprd00.prod.outlook.com%3Futm_medium%3Demail%26utm_source%3Dfooter&data=05%7C01%7Calextok%40microsoft.com%7C4d6e3ce176274255269008dab14328fb%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C638017200716458799%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000%7C%7C%7C&sdata=BO6wyhW0%2BrsbbNXp5CtzL0Puxa8vrIuKt1Zb5zoF5iE%3D&reserved=0> > . > > -- You received this message because you are subscribed to the Google Groups "blink-dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscr...@chromium.org. To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAEK7mvowd1TkNxhjWyCc4HQgLT9962WtVaWAWf8hZJP1MTkaaQ%40mail.gmail.com.