Identity Manager Drivers 4.8: G Suite Driver Implementation Guide
Identity Manager Drivers 4.8: G Suite Driver Implementation Guide
8
G Suite Driver Implementation Guide
April 21, 2020
Legal Notices
For information about NetIQ legal notices, disclaimers, warranties, export and other use restrictions, U.S. Government
restricted rights, patent policy, and FIPS compliance, see https://www.netiq.com/company/legal/.
1 Overview 9
Driver Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Data Transfer Between Systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
How the Driver Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Understanding the Google APIs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Driver Features . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Supported Operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Entitlement Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Multiple E-Mail Domain Support. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2 Driver Installation 13
Driver Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Configuring Google Authentication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Creating a G Suite Administrative Account . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Enabling the G Suite API Access . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Configuring API and Service Account . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3 Driver Customization 41
Driver Properties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Driver Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
GVCs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
Trace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Driver Filter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Gmail Settings Attributes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
GmailSettingsDelegates. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
GmailSettingsEnableIMAP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
GmailSettingsEnablePOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
GmailSettingsForwarding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
GmailSettingsLabel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
GmailSettingsLanguage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
GmailSettingsSendAs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
GmailSettingsSignature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Gmail Settings Attribute Syntax and Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Role Assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Understanding Roles and Role Assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
Identity Manager and Role Assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Location Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Other Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Use G Suite Custom Schema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Contents 3
A Appendix – Multi Email Domain Support 67
4
About Micro Focus Corporation
We are a global, enterprise software company, with a focus on the three persistent challenges in your
environment: Change, complexity and risk—and how we can help you control them.
Our Viewpoint
Adapting to change and managing complexity and risk are nothing new
In fact, of all the challenges you face, these are perhaps the most prominent variables that deny
you the control you need to securely measure, monitor, and manage your physical, virtual, and
cloud computing environments.
Our Philosophy
Selling intelligent solutions, not just software
In order to provide reliable control, we first make sure we understand the real-world scenarios
in which IT organizations like yours operate — day in and day out. That's the only way we can
develop practical, intelligent IT solutions that successfully yield proven, measurable results.
And that's so much more rewarding than simply selling software.
Our Solutions
Identity & Access Governance
Access Management
Security Management
Systems & Application Management
Workload Management
Service Management
Worldwide:
www.microfocus.com/about_microfocus/officelocations.asp
Email:
[email protected]
Web Site:
Worldwide:
www.microfocus.com/support/contactinfo.asp
Email:
[email protected]
Web Site:
www.microfocus.com/support
Intended Audience
This book provides information for individuals responsible for understanding administration concepts
and implementing the G Suite Driver for Identity Manager.
The G Suite driver (Google Apps) for Micro Focus Identity Manager can create, update, and delete
users, groups, organizational units, and contacts from an Identity Vault to the G Suite cloud
application, keeping the user identity information consistent across the Identity Vault and the cloud
application. The G Suite driver supports secure password synchronization across Identity Vault and
G Suite cloud server. The G Suite driver for Identity Manager is a Subscriber channel only driver
and offers out-of-the-box random password generation policy for the newly provisioned users. The
G Suite driver uses a combination of language and protocols to enable identity provisioning and data
synchronization between an Identity Vault with G Suite Driver.
Driver Concepts
Data Transfer Between Systems
Identity Manager drivers support two data transfer channels between the Identity Vault and the
connected system, called the Publisher and Subscriber channels. The Publisher channel handles
data and events from the connected system into the Identity Vault. The Subscriber channel handles
data and events from the Identity Vault into the connected system.
The G Suite Driver only supports data transfers from the Identity Vault into Google Apps.
Communication is one-way only. Communication channels are discussed in the following sections:
Through the use of filters and policies, the driver can be configured to control and manage what
changes are detected and sent to Google Apps.
Overview 9
The Identity Manager engine uses XDS, a specialized form of XML, to represent events in the Identity
Vault. Identity Manager passes the XDS to the driver policy, which can consist of basic policies,
DirXML Script, and XSLT style sheets.
After driver policy has been applied, the driver shim communicates securely over https to the Google
Apps API's for your domain. The results are then communicated back to the driver. The driver then
processes that information converting it into an appropriate XDS that is reported back to the Identity
Manager engine.
Directory API
– The Directory API is responsible for creating users and group objects. It is required to turn this
API on inside the G Suite Admin Console.
Contact API *
– The Contacts API creates a Domain Contact inside of the Address Book (Contacts).
GMAIL API
– Gmail user account settings, labels, forwarding, send as, and delegation
NOTE: The Contact API Add events may not show in the G Suite Admin Console and Address Book
(Contacts) for up to 24 hours even though they are usable objects right away. Modify events will show
immediately.
Driver Features
The G Suite driver can use the local installation of Identity Manager or the Remote Loader Service.
The driver can be installed on either Linux or Windows where the Identity Manager Engine or Remote
Loader Service resides.
The following sections provide information about how the G Suite Driver supports these standard
driver features:
Supported Operations
The basic configuration files for the G Suite driver are capable of performing the following operations:
10 Overview
Entitlement Support
The driver has support for both RBE and RBPMs entitlements under Identity Manager 4.x. These
entitlements may be used for User account, placement, and group membership.
Overview 11
12 Overview
2 Driver Installation
2
The driver may already be installed as part of Identity Manager. However, obtain the most up to date
version of the driver from Micro Focus support downloads. Earlier versions provided with some
installation media may not work properly due to Google API service changes since the media was
created. It will be necessary to obtain a driver activation credential from your Micro Focus customer
center portal to activate the driver. Without the activation, the driver will run in a time-limited trial
mode.
Driver Requirements
The driver requires a supported version of Micro Focus Identity Manager. Currently Identity Manager
versions 4.5 or later are supported. The driver is supported on Windows and Linux where Identity
Manager is supported. The driver requires a patch and version level of Identity Manager which
provides at least a Java 7 (1.7) virtual machine.
NOTE: The driver does not support connections to Google through an Internet Proxy Server. Port
HTTPS/443 must be open from the driver system outbound.
NOTE: Google frequently updates the user interfaces of their web consoles. Your screens may differ
from the ones shown in this guide.
Driver Installation 13
Creating a G Suite Administrative Account
In order to be able to configure OAuth2 and properly authorize a Service Account credential,
a G Suite domain account with Super Admin access will be required. It is a recommended best
practice to create and dedicate an account specifically for use by the driver. This allows for tighter
controls and better auditing of domain events.
4. Specify an account that you can memorize and indicative of its role and purpose. Set or generate
a password.
14 Driver Installation
Figure 2-3 Naming the User and Creating a Password
Driver Installation 15
Figure 2-4 Adding Administrative Roles to the User Account
16 Driver Installation
Figure 2-6 Confirming the Super Admin Role Assignment
6. Log into the G Suite Admin Console with the new admin user to confirm proper set up.
Driver Installation 17
Figure 2-7 Logging in to Verify Account Setup
7. Accept the terms and conditions. The account will not work until this step is completed.
18 Driver Installation
Figure 2-8 Accepting Terms and Conditions
8. It is recommended to set up a recovery phone number and/or email address for this new
admin account.
NOTE: It is necessary to log in to the admin console with the new admin user via a web browser at
least once to fully activate the account. Until that step is done, the driver will not function.
1. Using a web browser, log into the G Suite Admin Console. From the Dashboard select
“Security.”
Driver Installation 19
Figure 2-9 Starting Configuration of G Suite API Access
20 Driver Installation
Figure 2-10 Working with the API Reference Setting
Driver Installation 21
Configuring API and Service Account
NOTE: Google frequently updates the user interfaces of their web consoles. Your screens may differ
from the ones shown in this guide.
The next step is to set up a developer project in the developer console. After creating the developer
project, it is a recommended best practice to add additional administrators/owners of the project
beyond the G Suite Driver account created earlier. This can prevent losing access to the project
should changes be needed in the future.
3. Fill in the Project Name field. The Project ID field is generated by Google.
22 Driver Installation
Figure 2-14 Naming the Project
Once the new project is created, there are several steps which must be performed:
Driver Installation 23
Enable Admin SDK API
Once the project is created, from the developer's console, proceed to enable the Admin SDK API.
The Admin SDK exposes the majority of the necessary API endpoints that the driver needs.
When this API is enabled, we will be given an opportunity to create the needed credentials for
the connector.
24 Driver Installation
Figure 2-16 Displaying the G Suite APIs
3. Select and Enable the Admin SDK. The interface will prompt you to create credentials,
which will be needed for the driver to connect to Google's servers.
Figure 2-17 Select the Admin SDK
Driver Installation 25
Figure 2-18 Enable the Admin SDK
26 Driver Installation
Figure 2-19 Starting the Credential Creation Process
2. The G Suite driver uses the “service account” credential type. Select “service account,”
skipping the wizard.
Figure 2-20 Selecting an API for Credentials
Driver Installation 27
Figure 2-21 Select Create Service Account to Continue
5. Do NOT assign a role or permissions to the service account. Simply continue from the
screen above.
28 Driver Installation
Figure 2-23 Continue Without Assigning Role or Permissions
6. There is no need to grant access to the service account. The driver uses a private key as
the login credential, so it is necessary to create a key from this screen. Select "Create Key."
This key is required for the driver to function.
Figure 2-24 Starting the Creation of the Private Key
Driver Installation 29
7. Save the key in the P12 format. The key will download and be saved on your workstation. This is
your ONLY copy of this key. The key cannot be redownloaded from the developer's console. If
lost, a new key will need to be created for this service account. A new key can be recreated from
the credential in the developer's console project, if needed. The P12 key file is the equivalent of
the service account’s password and should be treated accordingly.
Figure 2-25 Select P12 Format for the Private Key
8. The key will need to be copied to the hosting machine which is running the driver.
Figure 2-26 Private Key Saved Locally
9. Click done.
30 Driver Installation
Locate the P12 file and upload it to your Identity Manager server in a location accessible from
the driver. /opt/novell/eDirectory/lib/dirxml/classes is a recommended location for Linux
hosts. Generally, a good location is the same location as the gmailshim.jar file. If the driver is on
a remote loader, then it needs to go with the gmailshim.jar file in the remote loader location.
NOTE: The location and filename of the key file is a necessary configuration parameter for
the driver.
10. IMPORTANT: On the service account details screen below, copy and paste the Email and
Unique ID values into a text file for later use. The required data is highlighted below. These two
values will be used to authorize the service account to access your domain via the various APIs
used by the driver.
NOTE: Copy the Unique ID and service account email address to a text file. They will be
necessary for authorizing the service account and configuring the connector.
Driver Installation 31
Figure 2-28 Record Email and Unique ID Values in a Text File for Later Reference
32 Driver Installation
Figure 2-29 Managing Credentials and Keys After the Fact
From there, you can either create a new service account, manage your existing service account,
or create new keys, as shown below.
Figure 2-30 Options for Managing Accounts and Keys
For more information, see the Google's developer console help system accessible from the question
mark icon at the top right of the page for more information.
Driver Installation 33
Enable Remaining APIs
The Admin SDK API is not sufficient alone for the connector to function. It is necessary to enable
these additional APIs:
Group Settings
Contacts
Gmail
1. From the developer console dashboard, click the GoogleAPIs banner to easily reach this point.
Figure 2-31 Start of Process to Enable Remaining APIs
2. Select Enable APIs. From the API Library, search for and enable the Group Settings, Contacts,
and Gmail APIs.
34 Driver Installation
Figure 2-32 Selecting the Group Settings API
3. Return to the Enable APIs screen and search for “Contacts.” Enable the Contacts API.
Driver Installation 35
Figure 2-34 Finding the Contacts API
36 Driver Installation
NOTE: You will need the Unique ID of the service account which was created earlier. You will also
need the API scope list provided with the driver. The scope list can be found in a text file called
DirectoryScopes.txt. The scope list is a list of authorized scopes, which take the form of URLs, in a
comma separated list, all in one line. The authorized scope list can also be found in Appendix E –
Directory Scopes. Use the most recent scope list as it may be updated in the future.
Driver Installation 37
3. Select “Manage API client access.” Copy and paste the Unique ID of the service account into the
"Client Name" field.
Figure 2-38 Entering the Client Name for the Authorized API Clients
4. Copy and paste the contents of the DirectoryScopes.txt file (included with the driver download
or in Appendix E – Directory Scopes) into the "One or More API Scopes" field. Note that the
content should be plain text, so copy from a text file not from a web page to avoid any metadata.
Click Authorize.
Figure 2-39 Entering the API Scope and Authorizing the API Client Access
If this step was successful, the entry will appear in the authorized list similar to the image below:
Figure 2-40 Example of Successful API Client Access Authorization
If, for any reason, this does not work or you need to change the authorized scopes, delete the
authorization entry and create it again with the correct information.
38 Driver Installation
Configuring Driver Authentication
This section shows what information needs to be set in the Identity Manager driver properties to use
the service account. If you have not yet imported the driver configuration into Designer or iManager,
then complete those steps first before attempting to set the service account information.
You will need the following information to configure the authentication settings:
Admin account email address and password for the G Suite domain
This is the one created first in this guide
Do not use your only admin account. Create one for the driver to use.
Service account Email Address
This should have been copied when the service account was created.
It can be found in the developer's console under service account details, as shown below:
Figure 2-41 Locating the Service Account Email Address
Full path and file name of the P12 key file on the Identity Manager server
This file was created as part of the credential process earlier in this guide
The file MUST be uploaded to the Identity Manager server where the Google driver is
running.
It is recommended that the file be placed in the same location as the gmailshim.jar file.
On a Linux host, this location might be:
/opt/novell/eDirectory/lib/dirxml/classes/KEYFILENAME.p12
Authentication ID
The email address of the admin account
Connection Information
The domain name of this Google domain
Driver Installation 39
Set Password
Set the password to the password of the admin account
The admin account is the actual identity used by the driver to effect changes in the domain. Once
authenticated via the service account, the driver assumes the identity of the admin account and does
the work through that proxy.
Figure 2-42 Completing the Driver Configuration Authentication Tab
40 Driver Installation
3 Driver Customization
3
The Identity Manager driver for G Suite can be customized using iManager or Designer. The default
package configuration should be considered an example for an implementation. With an
understanding of Identity Manager policy, it is possible, and often necessary, to configure the driver to
do just about anything the Google APIs will allow you to do. For examples, review the other Identity
Manager driver configuration files and Micro Focus Cool Solutions.
Driver Properties
The Driver Properties page (right click on the driver in Designer and choose Properties from the
menu) contains all the items that the driver needs to startup and connect to Google.
Driver Configuration
Authentication Tab
Application ID:
The admin account whose rights are used by the driver to do work in the G Suite domain.
Connection Information:
The primary domain name of the G Suite domain.
Set Password:
As the driver uses the OAuth2 service account for authentication, this password is unnecessary.
If you are configuring the remote loader, set up that authentication information here.
Startup Option
Auto start:
The driver will start when the eDirectory server starts.
Manual:
The driver will start only from user interaction in iManager or Designer.
Disabled:
The driver will not start, and no events will be cached for the driver.
Driver Customization 41
Driver Parameters
Driver Options
Service Account Email Address:
Email address associated with the Service Account credential created in Google Developers
Console
Subscriber Options
Hash passwords before sending them to Google:
Set this value to true to cause the driver to hash passwords being set on G Suite users.
Publisher Options
Publisher Heartbeat Interval:
If you have policies which need to fire periodically on the publisher channel, set the heartbeat
interval value here. The driver will send a heartbeat message to the Identity Manager engine
each time the interval expires. This feature is not used in the G Suite driver.
GVCs
42 Driver Customization
Google Apps Secondary Domain Names:
This is a list of secondary Google domain names the driver can service.
OU Settings Tab
User placement settings:
This variable controls placement policies to not generate placement, use Mirrored placement, or
Entitlement based placement.
The last tab in the list is named using the driver name and is intended to be a bucket for
administrators to place their own GCV definitions.
Trace
Trace Level:
For normal production use this value should be set to 0. For driver testing and debug information
set this to trace level 3. Trace level 5 is used to dump more information about the driver
operations between G Suite and the Driver Shim. Trace level 6 provides debug messaging and
is not recommended for routine use. Trace level 6 is the highest level at which any G Suite driver
debug messages are written.
Trace file:
If you are tracing you should set the path and name of the file you want to trace to. For example,
/var/log/googleappsdriver.log. If you set this option, ensure to set the Trace file size limit as it
defaults to Unlimited.
Trace name:
Typically set to GoogleApps. This is not a required entry.
Driver Customization 43
Driver Filter
The driver supports Contacts, Users, Groups and Organizational Units classes. For Users and
Contacts the following table lists the default list of attributes. These classes support many more
attributes that can be found by refreshing the application schema and mapping them to an eDirectory
attribute in the schema mapping rule.
OrganizationUnit Description
Group Member
Owner
CN Required
Surname Required
Login Disabled
Telephone Number
Mobile
Company
OU Department
44 Driver Customization
Class Attribute Notes
Title
Mobile
OU
Title
Pager
Telephone Number
Company
Driver Customization 45
Class Attribute Notes
MessageModerationLevel MODERATE_ALL_MESSAGES
MODERATE_NEW_MESSAGES
MODERATE_NONE
MODERATE_NONMEMBERS
SpamModerationLevel ALLOW
MODERATE
SILENTLY_MODERATE
REJECT
ReplyTo REPLY_TO_CUSTOM
REPLY_TO_IGNORE
REPLY_TO_LIST
REPLY_TO_MANAGERS
REPLY_TO_OWNER
REPLY_TO_SENDER
CustomReplyTo Custom REPLY_TO message
DEFAULT_FONT
FIXED_WIDTH_FONT
IncludeInGlobalAddressList Enables the group to be included in the
Global Address List. Possible values are
TRUE or FALSE.
46 Driver Customization
Class Attribute Notes
ALL_IN_DOMAIN_CAN_JOIN
ANYONE_CAN_JOIN
CAN_REQUEST_TO_JOIN
INVITED_CAN_JOIN
WhoCanViewMembership ALL_IN_DOMAIN_CAN_VIEW
ALL_MANAGERS_CAN_VIEW
ALL_MEMBERS_CAN_VIEW
WhoCanViewGroup ALL_IN_DOMAIN_CAN_VIEW
ALL_MANAGERS_CAN_VIEW
ALL_MEMBERS_CAN_VIEW
ANYONE_CAN_VIEW
WhoCanInvite ALL_MEMBERS_CAN_INVITE
ALL_MANAGERS_CAN_INVITE
NONE_CAN_INVITE
WhoCanPostMessage ALL_IN_DOMAIN_CAN_POST
ALL_MANAGERS_CAN_POST
ALL_MEMBERS_CAN_POST
ANYONE_CAN_POST
NONE_CAN_POST
WhoCanLeaveGroup ALL_MANAGERS_CAN_LEAVE
ALL_MEMBERS_CAN_LEAVE
NONE_CAN_LEAVE
WhoCanContactOwner ALL_IN_DOMAIN_CAN_CONTACT
ALL_MANAGERS_CAN_CONTACT
ALL_MEMBERS_CAN_CONTACT
ANYONE_CAN_CONTACT
Driver Customization 47
NOTE: Due to limitations in the Gmail API and Directory API interactions, it is not possible to set
these attributes during user creation. It is recommended that a delay of at least five seconds or more
be used between the creation of a new user and any attempted setting of a Gmail Setting attribute.
GmailSettingsDelegates
Use this attribute to add, remove, or list the assigned delegates to a user’s Gmail account. The
attribute takes one of two forms: a string value which consists of the email address of the designated
delegate or a distinguished name syntax with an association reference for the designated delegate
for this user. The connector will take either form.
GmailSettingsEnableIMAP
Use this attribute to enable or disable the IMAP feature of a user’s account. The attribute takes two
values: true or false.
This attribute does not support remove-value or remove-all-values as a user’s IMAP settings cannot
be removed. Change the state of this setting with an add-value command.
GmailSettingsEnablePOP
Use this attribute to manage a user’s POP settings. This attribute takes a structured value with the
following components:
EnableFor
Whether to enable POP for all mail, or mail from now on.
Enumerated
Required
Values:
ALL_MAIL
MAIL_FROM_NOW_ON
Action
What Google Mail should do with its copy of the email after it is retrieved using POP
Enumerated
Required
Values:
KEEP
ARCHIVE
DELETE
Enable
Whether to enable/disable POP access
Boolean
This attribute does not support remove-all-values and remove-value commands as POP settings
cannot be removed from users. Send any changes as an add-value command.
48 Driver Customization
GmailSettingsForwarding
Use this attribute to set and update a user’s auto-forwarding rule. The attribute takes a structured
value with the following components:
Enable
Whether to enable forwarding of incoming mail
Boolean
ForwardAddress
The email address to which the email will be forwarded
This must be verified, which means it must satisfy one of these tests:
It belongs to the same domain
It belongs to a subdomain of the same domain
It belongs to a domain alias configured as part of the same G Suite account
Action
What Google Mail should do with its copy of the email after forwarding it on
Enumerated
Values
KEEP
Keep it in the inbox
ARCHIVE
Archive it
DELETE
Delete it
MARK_READ
Mark it as read
This attribute only supports add-value changes. Use an add-value command to update or disable
auto-forward.
GmailSettingsLabel
This attribute can be used to list, add to, and remove from a user’s configured set of labels within
Gmail. Note that the API only allows access to the user custom labels. The pre-defined system
default labels cannot be manipulated with the API. The attribute accepts string syntax values
representing the label to be created or removed. It supports add-value, remove-value, and remove-
all-values commands.
GmailSettingsLanguage
This attribute can be used to change or display the language setting for a user’s Gmail account. Note
that the values accepted and displayed by this API are strictly constrained by the API service to be in
RFC 3066 language tag format.
See https://www.w3.org/International/articles/language-tags/
Driver Customization 49
The attribute is string syntax containing the language tag desired. It only supports add-value
commands.
GmailSettingsSendAs
This attribute can be used to display, set, and remove SendAs aliases. A SendAs alias is a
configuration on a user’s account that allows them to send mail as another name and email address.
Note that the collection of SendAs alias on any user account includes a system entry, the primary
SendAs, which will be displayed when queried, but cannot be removed. The attribute is structured
with the following components:
Name
The display name for the send as alias
SendAs
The email address used for the send as alias
ReplyTo
The reply-to address used for the send as alias
isDefault
Whether or not this alias is the default SendAs configuration for this user
Takes the value of either true or false
GmailSettingsSignature
This attribute can be used to display or change a user’s signature. The attribute takes a string value
which is the signature for the user and applies it to their account.
GmailSettingsDelegates DN/String
50 Driver Customization
Application Attribute Name Syntax
Example
This can be formatted as a distinguished name with an association-ref or as a plain string in the form of an
email address of the delegate.
<modify-attr attr-name="GmailSettingsDelegates">
<add-value>
<value [email protected]" type="dn">/data/users/my-user</value>
</add-value>
</modify-attr>
== OR ==
<modify-attr attr-name="GmailSettingsDelegates">
<add-value>
<value type="string">[email protected]</value>
</add-value>
</modify-attr>
GmailSettingsEnableIMAP Boolean
Example
<modify-attr attr-name="GmailSettingsEnableIMAP">
<add-value>
<value type="string">true</value>
</add-value>
</modify-attr>
GmailSettingsEnablePop Structured
Example
<modify-attr attr-name="GmailSettingsEnablePOP">
<add-value>
<value type="structured">
<component name="EnableFor">ALL_MAIL</component>
<component name="Action">KEEP</component>
<component name="Enable">true</component>
</value>
</add-value>
</modify-attr>
GmailSettingsForwarding Structured
Driver Customization 51
Application Attribute Name Syntax
Example
<modify-attr attr-name="GmailSettingsForwarding">
<add-value>
<value type="structured">
<component name="ForwardAddress">[email protected]</component>
<component name="Action">KEEP</component>
<component name="Enable">true</component>
</value>
</add-value>
</modify-attr>
GmailSettingsLabel String
Example
<modify-attr attr-name="GmailSettingsLabel">
<add-value>
<value type="string">MyProject</value>
</add-value>
</modify-attr>
GmailSettingsLanguage String
Example
<modify-attr attr-name="GmailSettingsLanguage">
<add-value>
<value type="string">Eng</value>
</add-value>
</modify-attr>
GmailSettingsSendAs Structured
52 Driver Customization
Application Attribute Name Syntax
Example
<modify-attr attr-name="GmailSettingsSendAs">
<add-value>
<value type="structured">
<component name="Name">My Name</component>
<component name="SendAs">[email protected]</component>
<component name="ReplyTo">[email protected]</component>
<component name="IsDefault">true</component>
</value>
</add-value>
</modify-attr>
GmailSettingsSignature String
Example
<modify-attr attr-name="GmailSettingsSignature">
<add-value>
<value type="string">Signature Data</value>
</add-value>
</modify-attr>
Role Assignments
The G Suite connector is able to create and delete role assignments for users into Google admin
roles, both custom and default. The connector exposes an attribute on UserEntry objects called
roleAssignment which can be used to list, create, or delete role assignments for that user within the
environment.
NOTE: Google frequently updates the user interfaces of their web consoles. Your screens may differ
from the ones shown in this guide.
To view your domain roles, select the Admin Roles tool from the admin console at https://
admin.google.com.
Driver Customization 53
Figure 3-1 Assigning Administrative Roles
The default roles are visible in this panel. It is also possible to add custom roles to this list with various
privileges.
54 Driver Customization
Figure 3-2 Creating a New Role
Driver Customization 55
Figure 3-3 Assigning Administrators to Roles
For more information on administrator roles and role management, see Google's documentation.
https://support.google.com/a/answer/33325?hl=en&ref_topic=4514341
The developer documentation for role assignments may also provide additional clarity and
assistance. https://developers.google.com/admin-sdk/directory/v1/guides/manage-roles
When assigning a role to a user for multiple organizational units, multiple role assignments are used,
one per organizational unit assignment.
56 Driver Customization
Identity Manager and Role Assignments
The G Suite Identity Manager connector allows for the creation and deletion of role assignments for
users via a structured attribute called roleAssignment.
The roleAssignment attribute is an optional structured attribute on user objects. Added values are
interpreted by the connector as a role assignment creation and removed values are interpreted as
a deletion of a role assignment. There are several elements of a roleAssignment value:
roleId
Unique internal ID for the role
roleName
The role’s name
roleDescription
The role’s description
scopeType
The scope of the assignment.
Must be either:
CUSTOMER
The entire domain
ORG_UNIT
A specified org unit
Must specify either orgUnitId or orgUnitPath
orgUnitId
The unique internal ID for the orgUnit
orgUnitPath
The path of the orgUnit.
These elements are not all required for add or remove value elements, however, it is necessary
to ensure that enough data is present in a value element to perform the task.
When adding a value for roleAssignment, the following requirements must be met:
When removing a value for roleAssignment, the connector must search the list of that user’s role
assignments, identify the correct assignment, and delete it. A role assignment is matched by:
Driver Customization 57
To add or remove a value for roleAssignment, the connector needs to know two or three things: the
role being assigned, the scope of the assignment, and (depending on the scope) the organizational
unit which is the target of the assignment.
Role ID values can be found by issuing a query into the connector for object class name “Role” and
viewing the returned instance documents in the driver trace logs. Role ID values are also returned on
any query for roleAssignments on user objects. Note that role ID values are unique per instance or
domain and are not the same for each domain within the Google environment.
As of this writing, the default system roles have the following names and descriptions:
There may be other default system roles or changes to this list at any time.
For custom roles, the role name and role description are defined at role creation and are the same for
the connector and API as what was entered during creation.
58 Driver Customization
Figure 3-5 Creating a New Role
For the above example custom role, the values to use for roleName and roleDescription are
highlighted above.
A simple way to determine role ID, role Name, or role Description for any role would be to assign it to
a user managed by the connector then querying that user for the attribute roleAssignment. The
connector will populate all these elements for each assigned role.
In the following example, roleAssignment was mapped to siteLocation for testing. This is the result of
a query on a test user in iManager:
Figure 3-6 Example Query from iManager
Driver Customization 59
<component name="roleAssignmentId">1498736891002970</component>
<component name="scopeType">CUSTOMER</component>
<component name="roleId">1498736891002893</component>
<component name="roleName">_PLAY_FOR_WORK_ADMIN_ROLE</component>
<component name="orgUnitId"/>
<component name="roleDescription">Play For Work Administrator</component>
</value>
<value type="structured">
<component name="orgUnitPath"/>
<component name="roleAssignmentId">1498736891002971</component>
<component name="scopeType">CUSTOMER</component>
<component name="roleId">1498736891002886</component>
<component name="roleName">_SEED_ADMIN_ROLE</component>
<component name="orgUnitId"/>
<component name="roleDescription">Google Apps Administrator Seed Role</component>
</value>
</attr>
</instance>
From these examples, you can see how the role identifiers are present in the roleAssignment query.
To specify an organizational unit, either the orgUnitId or orgUnitPath must be specified. The orgUnitId
is the internal identifier for the organizational unit within Google. This can be determined by querying
the OrgUnit and reading the attribute named OrgUnitId.
Example OrgUnitId:
Alternately, the orgUnitPath can be specified. For the above example, the OrgUnitPath is the
association value or source DN: /AK/NL.
If the connector cannot find a role, org unit, or role assignment to add/remove role assignments,
then no operation is performed, and an error is returned.
Note that when matching on roleName or roleDescription, the first match is used, in the event multiple
roles match.
60 Driver Customization
Examples
Add Value
<modify-attr attr-name="roleAssignment">
<add-value>
<value type="structured">
<component name="roleDescription">Weaver testing role 1</component>
<component name="scopeType">ORG_UNIT</component>
<component name="orgUnitPath">/Weaver</component>
</value>
</add-value>
</modify-attr>
Remove Value
<modify-attr attr-name="roleAssignment">
<remove-value>
<value type="structured">
<component name="roleDescription">User Management Administrator</component>
<component name="scopeType">CUSTOMER</component>
<component name="orgUnitPath"/>
</value>
</remove-value>
</modify-attr>
</modify>
Location Attribute
The user attribute Location exposes and processes a structured value representing a set of location
values which are part of the user information available in the Google user object. Google exposes
the following Location data elements. (Taken from Google API documentation – https://
developers.google.com/admin-sdk/directory/v1/reference/users)
area Textual location. This is most useful for display purposes to concisely describe the location.
For example, "Mountain View, CA" or "Near Seattle."
floorSection Floor section. More specific location within the floor. For example, if a floor is divided into
sections "A," "B," and "C," this field would identify one of those values.
These data elements are collected into a group identified with a “type.” There are three acceptable
values for type:
desk
Driver Customization 61
default
custom
The connector supports one instance of each type or custom/customType combination. Any added
values of type “desk,” for example, will replace any existing “desk” location sets. Any removed values
for type “desk” will remove any “desk” location set values. The pair of type “custom” and the value
of customType will uniquely identify one element.
type
Must be desk, default, or custom
If set to “custom”, the component customType becomes mandatory.
customType
Mandatory if type is custom
Ignored if type is not custom
area
Optional, string
buildingId
Optional, string
The value MUST resolve to a building resource which exists in the domain*
deskCode
Optional, string
floorName
Optional, string
floorSection
Optional, string
NOTE: Building ID values will be rejected by the API stack if they do not refer to a building resource
within the Google domain. This is done through the Google Admin interface. For more information,
see: https://support.google.com/a/answer/1033925?hl=en&ref_topic=1034362
62 Driver Customization
Examples
Add Value
<modify-attr attr-name="Location">
<add-value>
<value type="structured">
<component name="type">default</component>
<component name="customType"/>
<component name="area">MyArea</component>
<component name="buildingId"/>
<component name="deskCode">Desk1121</component>
<component name="floorName">1st Floor</component>
<component name="floorSection"/>
</value>
</add-value>
</modify-attr>
Remove Value
<modify-attr attr-name="Location">
<remove-value>
<value type="structured">
<component name="type">default</component>
</value>
</remove-value>
</modify-attr>
On remove value elements, only type and, if needed, customType, are examined. All other
components are ignored.
Other Attributes
Several attributes are exposed for the Google Schema that the driver can use to make settings in
G Suite. The following table summarizes these attributes and provides an example of the settings.
Driver Customization 63
Attribute Example DOM and Notes
Permission
<add-attr attr-name="Permission">
This attribute is set on Group objects <value>Owner<value>
during creation. This is a GCV </add-attr>
setting that can be overwritten in the
Create Rule.
Valid values are: Owner, Member, Domain, Anyone
DirXMLGAGroupEMailAddress
<add-attr attr-name="DirXMLGAGroupEMailAddress">
This attribute is required on the <value>[email protected]<value>
Group object for sync to G Suite. </add-attr>
The default driver pre-config will set this value to the CN value of the
object and the primary domain name.
Note that the Google Admin interface will not allow this creation within
the UI but will allow you to see the group and manage it once it is
created.
preferredName
<add-attr attr-name="preferredName">
By default, this attribute is mapped <value>[email protected]<value>
to G Suite’s Alias attribute. It is used <value>[email protected]<value>
to add a nickname to the user’s mail </add-attr>
account.
The value should always be in the form of name@domain name.
Facsimile Telephone Number There is a policy that changes the format of this attribute so that G Suite
can consume it. The policy will take the first value found and send that
Due to the way eDirectory stores value while removing the structured values.
this attribute it cannot be sent to
Google without a transformation.
64 Driver Customization
Attribute Example DOM and Notes
AgreedToTerms The Google Provisioning API does not allow this value to be set. It can
be queried to determine if the user has accepted the Google Terms on
AgreedToTerms is a flag indicating first login.
that you have agreed to Google’s
terms and conditions the first time
you log into GA. This is a query-only
attribute. You may not set this value.
IsAdmin This attribute will return true if the user is a domain admin. The user can
be made domain admin by setting it to true. Set it to false to remove that
This is a flag that can be set on a authority.
user object to make the user a
Domain Admin.
ExternalId ExternalId is sent to the driver as a structured type. If the value of "type"
is "custom" then a third component with name="customtype" must be
ExternalIds reference identifiers in provided to specify the custom type.
external systems. An external ID
contains an ID value and an ID
Type. Valid types are: <modify-attr attr-name="ExternalId">
<add-value>
account <value timestamp="1467727743#2" type="structured">
<component name="value">[email protected]</component>
custom <component name="type">account</component>
customer </value>
</add-value>
network </modify-attr>
organization
BOOL
DATE
DOUBLE
EMAIL
INT64
PHONE
STRING
Driver Customization 65
66 Driver Customization
A Appendix – Multi Email Domain
A
Support
While the connector is capable of managing multiple domains within one connector instance, in many
cases, it is recommended that a one domain per driver instance model be used. This is a best
practice recommendation. The connector does not support a one to many model between IDV users
and Google domain users. As a result, a single IDV user instance can only be in one domain at a
time, if all domains are managed by a single driver instance. Configuring a driver instance per domain
(each child domain is set as the primary domain for the driver serving that domain) gives considerable
flexibility for provisioning users and groups in multiple domains from a single IDV source object.
The G Suite email application – Gmail – is included with all versions of Google Apps. This application
can be turned off by an administrator for the entire domain or a subset of users (via an organization).
There are three types of mail domains within Google Apps:
Primary Domain
– This domain is tied to the name of the G Suite Domain name: i.e. https://www.google.com/a/
mycompanys.com
Domain Alias
– A domain Alias is an alternate domain name for the primary domain only. If you create a
domain alias named myothercompany.com a user named [email protected] will be able
to receive an email via [email protected].
Planning out your email strategy within G Suite should be completed and verified prior to
synchronizing accounts with the driver.
In order to create a user in a specific e-mail domain all you have to do is set the UserName (Google
Attribute Name mapped to CN by default) to the domain name of your choice i.e. [email protected].
The driver import comes with disabled policies for adding a secondary domain. These policies can be
copied if there is more than one policy.
Note that you will need to modify your matching rule in a similar fashion.
Groups also fall into the same category as users. A policy would need to be written in the matching
and create rule to facilitate adding a secondary domain for groups. The attribute that facilitates this is
the DirXML-GAGroupEMailAddress. As with users all you have to do is set the attribute to determine
which email domain the group will belong to with the email address of the group.
The Google Apps driver packages included with Designer have examples of how to setup
entitlements for multiple email domains.
503 - Unavailable
GoogleJsonResponseException This code indicates the requested Success – If the driver was
with HTTP Response (see note) resource doesn't exist. processing a query, a Not Found is
a valid response.
404 - Not Found
Error – If the driver was retrieving
an object based on an association.
409 - Conflict
410 - Gone
401 - Unauthorized
RateLimitExceeded vs
QuotaExceeded
RateLimitExceeded is a transient
condition where the driver issues
too many requests too quickly. A
user's quota for a given service is
exceeded when the driver issues
too many requests in a 24-hour
period to that service. That
condition can't be resolved by
back-off. Contact Google to
request a higher quota. Read
about quotas and resolving this
issue in Appendix D – Google API
Quotas.
NOTE: For the references to “HTTP Response” in this table see this link: https://www.w3.org/
Protocols/rfc2616/rfc2616-sec10.html
User Placement. Do not use a To place a user in the root container, the dest-dn should only contain the
leading "\" to place users or Username. If you are placing a user in the google Sales\Marketing
Organization Units. container your dest-dn should look like:
Group Placement: Do not use a Groups are not kept in a hierarchical structure. Placement is not relevant
placement rule on groups as to group objects.
Google does not support placing
groups in organizations.
Unique naming: It is important that When developing a matching rule be sure to check for nicknames and
Nicknames, Group names and usernames to ensure proper matching. Further, naming must be unique
usernames be unique in the G across all Google Organization units. It is not legal to have
Suite domain. Sales\Marketing\myname and Engineering\myname since myname
needs to be unique across the domain.
Driver Unable to Start 1. Are the driver jar files installed and eDirectory restarted?
2. Have you created the admin account in Google and logged into the
web interface at least once?
3. Examine a level 3 or higher trace log of the driver start up for errors.
Driver Exceeds Quota on requests Google has specific default quotas defined for the various services the
to specific services. driver uses. The quotas limit the total number of requests allowed in a
given 24-hour period. Once these quotas are exceeded the driver will
receive an HTTP 403: Forbidden error. Read about quotas and how to
resolve this issue in Appendix D – Google API Quotas.
Token Response Exception when The trace will show something like this:
using Gmail Settings Attributes
DirXML Log Event -------------------
Status: Fatal
Message: <description>com.google.api.client.auth.oauth2.
TokenResponseException: 401 Unauthorized</description>
<message>401 Unauthorized</message>
</exception>
This error is due to not authorizing the new Gmail scopes within the
Security section of your G Suite domain. For more information, see the
OAuth Guide and reset the authorized scopes for the service account.
"code" : 403,
"errors" : [ {
"domain" : "usageLimits",
"message" : "Access Not Configured. Gmail API has not been used in
project 1233 before or it is disabled. Enable it by visiting https://
console.developers.google.com/apis/api/gmail.googleapis.com/
overview?project=1233 then retry. If you enabled this API recently, wait a
few minutes for the action to propagate to our systems and retry.",
"reason" : "accessNotConfigured",
The Gmail API has not been enabled for your G Suite domain. Enable it in
your service account's developers console project.
With the transition from the old Provisioning API to the Directory API via the Admin SDK, Google
has introduced and exposed quotas on the various interfaces used by the Google Identity Manager
Driver. Some people are seeing quota issues with their driver. This document details how to view your
quotas, current usage levels, and how to request more quota from Google, should you need it.
Should you exceed your quota, your Google driver will report this case to the trace log file and
shutdown.
Managing Quotas
Your API quotas and current usage can be viewed at any time from your developer’s console: https://
console.developers.google.com
Note that Google can and does change their policies and web interfaces at any time without warning.
The information provided here may no longer be correct or current, though we will attempt to keep it
up to date.
TIP: Log in with the account used to create the project in the first place.
Select the project which created the credential used by the Google Driver. The overview will give you
a snapshot of your usage overall.
Figure D-1 Overall Google Driver Usage
From the APIs & Auth section, select APIs, then select Enabled APIs.
Select the Admin SDK. This API provides all services for the driver with the exception of Group
Settings and Domain Shared Contacts. Selecting Usage will allow you to see a usage summary
over time.
Figure D-3 Generating Usage Data
Select "Quotas" to see your current quotas and current remaining quota.
If you have exceeded your quota for requests per day, click the highlighted link to create a request to
Google for more daily quota.
You can also go to this URL directly to access the Quota request form for the Admin SDK: https://
support.google.com/code/contact/admin_sdk_quota
Clicking the "Change" button allows you to change your per-user limit of 15 requests per user per
second, though it is unlikely that the driver will ever exceed this threshold.
For more information on the Admin SDK and quota limits, see the Google documentation: https://
developers.google.com/admin-sdk/directory/v1/limits
Below is the list of all authorized scopes required by the driver. It is highly recommended that you
refer to the DirectoryScopes.txt file bundled with the driver and any driver patches as this list can and
will change as new features are added or old endpoints are deprecated. When authorizing scopes,
the values should be plain text (use a text file editor, do not copy and paste from a web, pdf, or rich
document as that may result in failures due to extra information kept in the clipboard), all on one line,
and comma separated. The DirectoryScopes.txt file is properly formatted and should be used for this
purpose. See section 2.2.3 – Configuring API and Service Account – for more information.
https://www.googleapis.com/auth/admin.directory.group,
https://www.googleapis.com/auth/admin.directory.group.member,
https://www.googleapis.com/auth/admin.directory.orgunit,
https://www.googleapis.com/auth/admin.directory.user,
https://www.googleapis.com/auth/admin.directory.user.alias,
https://www.googleapis.com/auth/admin.directory.user.security,
https://www.googleapis.com/auth/admin.directory.userschema,
https://www.googleapis.com/auth/userinfo.profile,
https://www.googleapis.com/auth/userinfo.email,
http://www.google.com/m8/feeds,
https://www.googleapis.com/auth/contacts.readonly,
https://www.googleapis.com/auth/apps.groups.settings,
https://www.googleapis.com/auth/admin.directory.rolemanagement,
https://www.googleapis.com/auth/gmail.settings.basic,
https://www.googleapis.com/auth/gmail.settings.sharing,
https://www.googleapis.com/auth/gmail.labels,
https://apps-apis.google.com/a/feeds/emailsettings/2.0/