blob: 8f2cd4b57b98b6e2cb707913e8f9f220095fb3e8 [file] [log] [blame] [view]
# Manage Chrome OS devices with Active Directory®
Enterprise customers may integrate their Chrome OS devices into a Microsoft®
Active Directory® (AD) environment. This integration joins devices to the AD
domain. Users do not need Gaia identities; they sign in using their AD
credentials. Admins manage sessions and push policies to users and devices from
their AD servers using group policy. There is no need to synchronize users to
Google.
[Google Chrome Enterprise Help article](https://support.google.com/chrome/a?p=ad)
[Troubleshoot Active Directory](https://support.google.com/chrome/a?p=troubleshoot_ad)
[TOC]
## Integration with enterprise enrollment flow
Google domains can either be set up for (regular) cloud management or AD
management. If during [enterprise enrollment](enrollment.md) a device is
registered with a domain set up for AD management, the device management (DM)
server replies with
[DeviceRegisterResponse::CHROME_AD](https://cs.chromium.org/chromium/src/components/policy/core/common/cloud/cloud_policy_client.cc?l=45&rcl=506aea9166170a6ecb7ab5ecbf30b21626d5e14b),
which turns the device into
[DEVICE_MODE_ENTERPRISE_AD](https://cs.chromium.org/chromium/src/components/policy/core/common/cloud/cloud_policy_constants.h?rcl=a2aecfd5286d50ba833241f351f32e512ceb3351&l=142).
This mode gets written to install attributes. For devices in this mode we show
an additional
[step](https://cs.chromium.org/chromium/src/chrome/browser/chromeos/login/enrollment/enrollment_screen.cc?rcl=a2aecfd5286d50ba833241f351f32e512ceb3351&l=535)
for Active Directory® domain join.
## Active Directory® sign-in
If a device was joined to an AD domain, Chrome OS shows a custom
[dialog](https://cs.chromium.org/chromium/src/chrome/browser/resources/chromeos/login/screen_gaia_signin.html?rcl=298d950825cb079fbd6b05c3b84b2806c287afa5&l=23)
for user sign-in.
## Communication with AD server
Chrome does not talk to the AD server directly. Instead, all communication, i.e.
domain join, user auth, policy fetch, user status queries, Kerberos files queries,
is relayed through the
[authpolicy](https://cs.corp.google.com/chromeos_public/src/platform2/authpolicy/README.md)
system daemon.
## Policies
Policies pulled from AD group policy objects (GPOs) have
[POLICY_SOURCE_ACTIVE_DIRECTORY](https://cs.chromium.org/chromium/src/components/policy/core/common/policy_types.h?l=43&rcl=fdd7489f1f95a984371c03e118ff17a460c659f8),
which translates to "Local Server" on the [Chrome policy page](chrome://policy).
The conversion from GPO to protobuf happens in
[DevicePolicyEncoder](http://cs/chromeos_public/src/platform2/authpolicy/policy/device_policy_encoder.h?l=30&rcl=34f2f96b8af4677048f3f3d21e24d507618187ef)
and
[UserPolicyEncoder](http://cs/chromeos_public/src/platform2/authpolicy/policy/user_policy_encoder.cc?l=30&rcl=34f2f96b8af4677048f3f3d21e24d507618187ef).
Note that a
[protofiles uprev](http://cs/chromeos_public/src/third_party/chromiumos-overlay/chromeos-base/protofiles/protofiles-0.0.32.ebuild?l=26&rcl=735ecdbf0d4101a07558147d1e6ab4d7c45ad7aa)
is necessary to get the latest policies.
## Chrome Architecture
The following Chrome classes are most relevant for the AD integration:
[AuthPolicyClient](https://cs.chromium.org/chromium/src/chromeos/dbus/authpolicy/authpolicy_client.h)
is the D-Bus client for the authpolicy daemon. All authpolicy D-Bus calls are
routed through it. The
[AuthPolicyHelper](https://cs.chromium.org/chromium/src/chrome/browser/ash/authpolicy/authpolicy_helper.h)
is a thin abstraction layer on top of the
[AuthPolicyClient](https://cs.chromium.org/chromium/src/chromeos/dbus/authpolicy/authpolicy_client.h)
to handle cancellation and other stuff. The
[AuthPolicyCredentialsManager](https://cs.chromium.org/chromium/src/chrome/browser/ash/authpolicy/authpolicy_credentials_manager.h)
keeps track of user credential status, shows notifications if the Kerberos
ticket expires and handles network connection changes. The
[ActiveDirectoryPolicyManager](https://cs.chromium.org/chromium/src/chrome/browser/chromeos/policy/active_directory_policy_manager.h)
is the AD equivalent of the CloudPolicyManager and handles policy for AD-managed
devices.
## Google services
Users do not need a Google identity to sign in and Chrome is not signed in.
Thus, no Google services are available by default unless the user signs in from
the content area.
Moreover, users may sign up for a Play Store account from within their user
session, see step 5 of the
[Help article](https://support.google.com/chrome/a?p=ad).
For this purpose, DM Server creates a LaForge account for the user. A LaForge
account is a shadow Gaia account with scope limited to the Play Store. To prove
the user's identity, a SAML flow is employed with DM Server as service provider
and AD (or really any other) as identity provider. The SAML flow is triggered by
[ArcActiveDirectoryEnrollmentTokenFetcher](https://source.chromium.org/chromium/chromium/src/+/master:chrome/browser/ash/arc/auth/arc_active_directory_enrollment_token_fetcher.h).
### Instructions for Google Employees
See [go/cros-ad-test-env](https://goto.google.com/cros-ad-test-env) for setting
up an Active Directory® test environment.
See [go/streamlinesteps](https://goto.google.com/streamlinesteps) to check out
streamline domain join.