[blink-dev] Re: [EXTERNAL] Re: Native support of Windows SSO in Chrome

2021-09-28 Thread Owen Min
where the browser also confirms with the user (e.g. via enterprise
>> policy or user consent) part of the thinking?*
>>
>>
>>
>> Browser should just trust OS, the same as it trusts when it calls
>> ReadFile windows API to read cookie file. How a browser sure that we
>> Microsoft underneath on driver level read right bits, and not feed cookie
>> from WAM plugin? I think OS and browser share responsibility to do right
>> thing. We, OS, cannot insert a hook in read file api to give some data that
>> will be useful for us, because when people will discover it, and it will be
>> discovered, we will be in very bad situation. Overall, from my
>> understanding of the software development, the browser has no option “Do
>> not trust OS” OS can do everything in the browser memory space.
>>
>>
>>
>> We should trust each other .
>>
>>
>>
>> The same statement applies to IDPs, browser should trust IDPs, if an IDP
>> makes a mistake or misbehaves users will punish them by dollar.
>>
>>
>>
>>
>>
>>1.
>>   2. *Validates if the resource owner (enterprise admin or user)
>>   authorizes access to the resource.*
>>   3. *Applies consent policy and ask consent if needed, for example
>>   enterprises, when they own the resource can pre-consent access by their
>>   employees. Note, It is responsibility of IDP to ensure that only 
>> authorized
>>   and consented applications can access users’ identity.*
>>
>> *I'm not sure I fully understand this part. Could you share more?*
>>
>>
>>
>> *Specifically, it's unclear if "applications" here are referring to OS
>> level applications (like the browser), or to web applications (like a
>> relying party). *
>>
>>
>>
>> “application” here is “web-applications” (==resource).
>>
>>
>>
>> This part about consent. Overall, consent is a big topic, and usually
>> consent starts from who owns the resources. If it is a document on my
>> personal OneDrive or Google drive, then I’m the owner. If it is on my
>> corporate OneDrive or SharePoint, then my company is the owner. The owner
>> decides who can access, and which application can access. Also, in the
>> enterprise world the consent story even more complex, employees should not
>> use some random applications without pre-authorization from management.
>>
>>
>>
>> All those relationships managed by IDP and I don’t see how browser can
>> help here, as the browser doesn’t know who the owner is, what was
>> pre-authorized for accessing without consent, what was forbidden, etc. The
>> browser can only destruct by very questionable prompts.
>>
>>
>>
>> *> Earlier, you mentioned "header or cookie", and this seems to be
>> describing "SSO headers and cookies". I wasn't sure if it was either/or or
>> both - could you clarify?*
>>
>>
>>
>> In some case we issue cookies, in some cases header, but both header and
>> cookies should behave like cookie. It is only question of size limitation
>> on cookies.
>>
>>
>>
>> *> Just making sure I parse this: the "user consent" being described is
>> from the IdP, right? So the IdP learns about the user's activity - whether
>> malicious or benign websites - and is responsible for helping the user
>> distinguish between those two?*
>>
>>
>>
>> Right, IDP must not allow a malicious web site to access data without
>> authorization.
>>
>>
>>
>> *> And is it correct that when you say “enterprise account”, this is in
>> reference to the IdP’s notion, not the OS/browser notion?*
>>
>>
>>
>> Here it is user account in IDP notion. IDP can serve enterprise needs,
>> and personal/consumer accounts needs. Azure Active Directory is IDP for
>> enterprises (aka organizational accounts, aka work or school accounts) it
>> is Azure AD responsibility to know who can access what, and Azure AD has
>> huge portal which allows amdin to control its resources. While Google
>> Account, or Microsoft Account, or Facebook is usually mange consumers
>> identity.
>>
>>
>>
>> In one logon session in OS, you can have multiple enterprise accounts and
>> multiple personal/consumers accounts. Additionally, you can be logged in
>> using your personal account via operation system logon, or using your
>> enterprise account.  So, “enterprise account” can be applied to windows
>> logon as well. However, in that context, I meant

Re: [blink-dev] Re: Native support of Windows SSO in Chrome

2021-09-24 Thread Owen Min
Answer inline. Sasha and Greg, feel free to correct me or add more things
if you want.

On Fri, Sep 24, 2021 at 1:27 AM Yutaka Hirano  wrote:

> I have some questions.
>
>  - Is the proposal that Chrome detects such a redirect and sends an
> authentication request to IDP?
>
Browser detects the access of IDP URL(https://login.microsoftonline.com)
and appends a cookie which gets from the OS to that request.

>  - Is there at most one IDP for a profile? /
>
 - How is IDP registered to Chrome?
>
IDPs are registered with the OS. And the browser gets both IDP urls (see
CloudApPlatformWin::ReadOrigins
<https://chromium-review.googlesource.com/c/chromium/src/+/3147471/10/content/browser/net/cloud_ap/cloud_ap_platform_win.cc#399>)
and cookies from the OS.

>
> Thanks,
>
> On Fri, Sep 24, 2021 at 6:18 AM Owen Min  wrote:
>
>> +people who may be interested in this.
>>
>> On Thursday, September 23, 2021 at 12:21:51 PM UTC-4 Sasha Tokarev wrote:
>>
>>> Hi all,
>>>
>>> I have a proposal to integration with Windows SSO in Chrome.
>>>
>>> Currently Windows has ability to join device to cloud identity, like
>>> AAD, MSA. When a device is joined to a cloud identity provider (IDP), it
>>> would be great if I’m as a user do not need enter credentials, when I’m
>>> using a service, which uses IDP where my device is joined to. I’m consented
>>> to have single sign on (SSO) when I joined the device, and trust IDP to
>>> protect my identity and do not allow an authorized access. If I do not
>>> trust, I should not join my device. Additionally, sometimes web resources,
>>> that I’m accessing to as a user, are owned by organization where I work or
>>> study. Hence, an organization administrator should be able to manage access
>>> to such resources based on the quality of my device, e.g., prevent access
>>> if the device doesn’t make malware scans or doesn’t have latest security
>>> patches etc.
>>>
>>> Edge has this feature built in, in Chrome we must use a special
>>> extension
>>> https://chrome.google.com/webstore/detail/windows-10-accounts/ppnbnpeolgkicgegkbkbjmhlideopiji
>>>
>>> While using extension works, the built-in experience is better, as we
>>> have with Windows Integrated authentication.
>>>
>>> In high level it should work like this, if I’m accessing to a resource,
>>> from a joined device.
>>>
>>>1. *Resource* (e.g., www.mywork.com) will redirect me for the
>>>authentication to the cloud identity provider(
>>>https://login.microsoftonline.com). The request will have a redirect
>>>URI that IDP will use to return a token.
>>>2. *User agent* (Chrome) will detect this navigation and call an OS
>>>API for producing a crypto-protected SSO cookies, which has device and 
>>> user
>>>information. This cookie will be appended to the request as a header or
>>>cookie.
>>>3. *Cloud identity provider* ( https://login.microsoftonline.com ):
>>>   1. Detects presence of the SSO cookies, validates them by
>>>   checking signature, and authenticates the user and device.
>>>   2. Validates that the supplied redirect uri is registered for
>>>   this application.
>>>   3. Validates if the resource owner (enterprise admin or user)
>>>   authorizes access to the resource.
>>>   4. Applies consent policy and ask consent if needed, for example
>>>   enterprises, when they own the resource can pre-consent access by 
>>> their
>>>   employees. Note, It is responsibility of IDP to ensure that only 
>>> authorized
>>>   and consented applications can access users’ identity.
>>>   5. Read device identity, and checks the state of device, that
>>>   reported out of band by device management system.
>>>   6. If all checks are fine, the IDP redirect back to the resource
>>>   with a token.
>>>4. *User agent* (Chrome) should not do much, just to make sure it
>>>will not include SSO headers (as in case of some HTTP Redirects 
>>> user-agent
>>>repeats the same headers) and cookies to the resource, to prevent its
>>>disclosure.
>>>5. *Resource* gets the token and provides service to the user.
>>>
>>>
>>>
>>> Note, a malicious web site will not be able to access user identity
>>> without explicit user consent, and if it is an enterprise account, then it
>>> should check admin authorization for th

[blink-dev] Re: Native support of Windows SSO in Chrome

2021-09-23 Thread Owen Min
+people who may be interested in this.

On Thursday, September 23, 2021 at 12:21:51 PM UTC-4 Sasha Tokarev wrote:

> Hi all,
>
> I have a proposal to integration with Windows SSO in Chrome.
>
> Currently Windows has ability to join device to cloud identity, like AAD, 
> MSA. When a device is joined to a cloud identity provider (IDP), it would 
> be great if I’m as a user do not need enter credentials, when I’m using a 
> service, which uses IDP where my device is joined to. I’m consented to have 
> single sign on (SSO) when I joined the device, and trust IDP to protect my 
> identity and do not allow an authorized access. If I do not trust, I should 
> not join my device. Additionally, sometimes web resources, that I’m 
> accessing to as a user, are owned by organization where I work or study. 
> Hence, an organization administrator should be able to manage access to 
> such resources based on the quality of my device, e.g., prevent access if 
> the device doesn’t make malware scans or doesn’t have latest security 
> patches etc.
>
> Edge has this feature built in, in Chrome we must use a special extension 
> https://chrome.google.com/webstore/detail/windows-10-accounts/ppnbnpeolgkicgegkbkbjmhlideopiji
>
> While using extension works, the built-in experience is better, as we have 
> with Windows Integrated authentication.
>
> In high level it should work like this, if I’m accessing to a resource, 
> from a joined device.
>
>1. *Resource* (e.g., www.mywork.com) will redirect me for the 
>authentication to the cloud identity provider(
>https://login.microsoftonline.com). The request will have a redirect 
>URI that IDP will use to return a token.
>2. *User agent* (Chrome) will detect this navigation and call an OS 
>API for producing a crypto-protected SSO cookies, which has device and 
> user 
>information. This cookie will be appended to the request as a header or 
>cookie.
>3. *Cloud identity provider* ( https://login.microsoftonline.com ): 
>   1. Detects presence of the SSO cookies, validates them by checking 
>   signature, and authenticates the user and device. 
>   2. Validates that the supplied redirect uri is registered for this 
>   application.
>   3. Validates if the resource owner (enterprise admin or user) 
>   authorizes access to the resource.
>   4. Applies consent policy and ask consent if needed, for example 
>   enterprises, when they own the resource can pre-consent access by their 
>   employees. Note, It is responsibility of IDP to ensure that only 
> authorized 
>   and consented applications can access users’ identity.
>   5. Read device identity, and checks the state of device, that 
>   reported out of band by device management system.
>   6. If all checks are fine, the IDP redirect back to the resource 
>   with a token.
>4. *User agent* (Chrome) should not do much, just to make sure it will 
>not include SSO headers (as in case of some HTTP Redirects user-agent 
>repeats the same headers) and cookies to the resource, to prevent its 
>disclosure.
>5. *Resource* gets the token and provides service to the user.
>
>  
>
> Note, a malicious web site will not be able to access user identity 
> without explicit user consent, and if it is an enterprise account, then it 
> should check admin authorization for this application. One may think that 
> if we have SSO, now we need to think about protection from malicious web 
> sites. However, this issue is not relevant to SSO, as if a user has either 
> MSA or AAD, most likely she or he will enter credentials at some moment, 
> and IDP will store persistent cookie. As a result, IDP still needs to 
> protect from a malicious web site, that is why all protocols that use 
> redirection has special handling for such cases, i.e. the IDP must redirect 
> on initially pre-registered for this client redirect URI 
> https://datatracker.ietf.org/doc/html/rfc6749#section-3.1.2 
>
> SSO itself reduces number of prompts, OS cookies are hardware crypto 
> protected and short-lived, while protection of web-cookies is lower. 
> Integration with OS SSO not just a convenience feature but increases users’ 
> security.
>
>  
>
> 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/bc1fb9ba-2951-4d59-aec1-aed2e88fd584n%40chromium.org.