Set up the User Sync tool

This document is intended to walk you through the installation of User Sync tool to automate the user management process.

The User Sync tool is a command-line utility that moves user and group information from your organization’s enterprise directory system (such as an Active Directory or other LDAP systems) to your organization’s directory in the Adobe Admin Console. Each time you run the User Sync tool, it looks for differences between the user and group information in the two systems and updates the Adobe directory to match the information in your directory.

This document provides step-by-step instructions to interface an Active Directory system with the Adobe Admin Console. This is one of the most popular combinations that our customers use in the K-12 and SMB segments. The User Sync tool is flexible and can be used to interface with most LDAP and directory systems. If you're using a directory system other than Active Directory, the instructions in this document do not apply directly; modify as required. For more information, see the Setup and Success Guide.

Before you begin

You need the following information about your LDAP system. If you do not have this information, contact your IT administrator.

  • Domain controller name (or its IP, if fixed) and port.
  • User name and password to a service account that the tool can use to extract users from your LDAP (read-only access).
  • Base DN, which is the point from where the server searches for users; it should be wide enough to allow the discovery of all users and groups requiring to be synced.
  • Group names that are a part of the synchronization.
  • The best suited LDAP attribute for mail/username for all users needing to be created in Admin Console.
  • (Optional) You might also require a custom LDAP query that selects the set of users to be synced with Adobe if the default filters don't cover the requirements.
Active directory

The key pair is used to sign a JWT and verify its legitimacy in obtaining the access_token process. To assist you on this process, contact your security team, if necessary.

Certificate tips:

  • Public certificate can be signed by your own CA (raise a CSR if necessary); self signed ones are accepted too
  • Private key should be RSA: 2048 bits at min
  • The public certificate should have a .crt extension
  • Sign using SHA-256
  • Public key validity: three years recommended but your internal security policy will dictate

Create a self-signed certificate

For using self-signed certificates with randomized values and a public certificate with validity of one year, the adobe.io portal offers the possibility to generate them during the project creation phase or inside the Service Account (JWT) menu of an existing project. For more information, see Create integration with Adobe I/O.

For self-signed certificates with data and validity set by yourself, follow these steps:

  1. For macOS/Linux, open Terminal. 

    For Windows, open the program that offers openssl support, like Cygwin or cmd, if installed. Otherwise, starting with version 2.6.0, the User Sync Tool can be used to generate the public certificate and private key. The requirement is to have the tool downloaded locally and to run this command line in Command Prompt, from within the folder containing the user-sync.exe file:

    user-sync.exe certgen
  2. Run the following command:

    openssl req -x509 -sha256 -nodes -days 1095 -newkey rsa:2048 -keyout private.key -out certificate_pub.crt
    Digital certificate

  3. When the private key generation is complete, you are prompted to enter additional information to create a Distinguished Name for the public key. You can accept default values, or enter a relevant one. To leave a field blank, enter "." (a dot character).

    Digital certificate

The public certificate and the private key files are stored in the following default locations:

Windows: C:\cygwin64\home\<your_user_name>

(if you have used user-sync.exe, the file should be inside same folder as the script)

macOS: /Users/<your_user_name>

If you plan to install User Sync on your machine, ensure that it meets the following requirements:

  • Has access to the Internet, and your directory service such as LDAP or AD.
  • Is protected and secure (your administrative credentials are stored or accessed there).
  • Stays up, is reliable, and has a backup and recovery capability.
  • Can send emails so User Sync can send reports to administrators.
  • If it is a Windows machine, it has a 64-bit processor.

Otherwise, work with your IT department to identify such a server and get access to it.

Ensure that you have created the directories for your organization, and the Product Profiles and User Groups are created in the Adobe Admin Console.

Set up the server

To set up an adobe.io integration, do the following:

  1. As a system administrator, sign in to the Adobe I/O Console, select your organization from the drop-down list on upper right. Click Create New Project.

    Select your organization

  2. Click Edit Project on the upper right, and enter a title and description for the project. Click Save.

    Edit project

  3. Click Add API.

    Add API

  4. In the Add an APi window, filter by Adobe Services, and select User Management API. Click Next.

    User Management APi

    • Generate a Key Pair:

    If you want to use a self-signed certificate with randomized values generated by adobe.io with a validity of 1 year, select Generate a Key Pair. Then, click Generate Keypair.

    A config.zip file is downloaded to your local machine containing the certificate_pub.crt file and the private.key. The public certificate is automatically added to your integration and the private.key is used later in the configuration process.

    • Upload Your Public Key:

    If you have your own public certificate or you have generated it using the steps in Obtain the public and private key section, then select Upload Your Public Key. Scroll down and upload the Public key certificate file. Click Next.

    Configure API

  5. Click Save Configured API.

  6. To view the credential details, navigate to Service Account (JWT).

    Credential details

The information on this page is later used in one of the User Sync Tool's config files.

  1. Create a folder named user_sync_tool in a location on the drive where users with required permissions can access its contents.

  2. Access GitHub and locate the Latest release tag.

    Inside this release, find and expand the Assets. Then, locate and download:

    • The examples.zip file
    • The .zip of the User Sync Tool in the list that matches your OS type
  3. Unzip examples.zip, navigate to config files - basic, and copy these files to user_sync_tool folder: connector-ldap.yml, connector-umapi.yml, and user-sync-config.yml.

  4. From the other zip file, extract the user-sync.exe file and place it inside same user_sync_tool folder.

  5. Locate the private.key that came along with the public certificate and move it to same user_sync_tool folder. So now, the folder contains:

    • connector-ldap.yml
    • connector-umapi.yml
    • private.key
    • user-sync.exe
    • user-sync-config.yml

Configure User Sync

  1. Edit the file connector-ldap.yml with a specialized text editor.

  2. Enter the user name, password, host, and base_dn values.

    Directory Access configuration file

  3. Set search_page_size to 200.

  4. Although most of the times the default filters would do. If you need a custom LDAP query to extract a set of users, modify the all_users_filter config parameter.

  5. Verify the rest of the uncommented settings and what LDAP attributes they point to. Change them according to your needs.

    Some deployments have username-based login set up (Username field in Admin Console for a given user is not an email type of value). 

    In this case, enable the following line too (remove the # char):
    user_username_format: {sAMAccountName}

    Replace the sAMAccountName with the right attribute if it's not the one you need to use.

  1. Edit the connector-umapi.yml. This file has access information to your Adobe organization.

  2. Enter the following information from the adobe.io integration you created earlier:

    • org_id
    • api_key
    • client_secret
    • tech_acct
  3. Make sure that the priv_key_path contains the exact name of the private key inside the  user_sync_tool folder. 
    If the private key is inside same folder with the rest of the UST files, priv_key_path can contain only the name of the file; it works as a relative path.

    Adobe UMAPI credentials

If your directory does not list a country for each user, you can set a default country.

  1. Edit the user-sync-config.yml file.

  2. Remove # from the default country code line, and enter the appropriate country code. For example:

    default_country_code: US
    Note:

    A country code is required for Federated IDs and recommended for Enterprise IDs. If not supplied for Enterprise IDs, the users are prompted to choose a country when they first log in.

Group mapping defines what groups from LDAP should have a corresponding user-group or PLC in Admin Console.

The target here is to give the tool a source of groups/users so that it can match the same members in Admin Console side groups/PLCs.

  1. Edit group mapping in the user-sync-config.yml file. 

  2. For each directory group that must map to an Adobe Product Profile or user group, add an entry inside the groups section. For example:

    groups: 
        - directory_group: LDAP_group_name_goes_here 
          adobe_groups: 
            - Adobe_group_name_goes_here 
        - directory_group: LDAP_group_name_goes_here 
          adobe_groups: 
            - Adobe_group_name_goes_here
    Note:

    Group mapping can be done using Adobe User Groups or Product Profiles, not to Product names. And, you can map one directory group to more than one Adobe User Groups or Product Profiles.

To prevent accidental account removal if there is a misconfiguration or another problem, you can decide a limit of maximum number of account removals you'd expect in your daily sync.

  1. To change the limit, find  max_adobe_only_users in the user-sync-config.yml file.

  2. If you expect the number of account removals to be more than the set max_adobe_only_users value between User Sync runs, raise the value to cover all account removals.

    Note:

    If the number of accounts to be removed is more than the max_adobe_only_users value, the tool would not process any account removal. A critical entry appears in the log that announces reaching that limit.

    This limit does not impact the create actions.

There are situations where some accounts must be excluded from the synchronization. This can be achieved by editing the user-sync-config.yml file.
The tool offers three exclude features: by identity type, by group name and by regular expression.
Any account found in Admin Console that fits in at least one of the mentioned criteria is protected from remove actions (from group, from Org).

It's a good practice to have AdobeIDs for System Administrators in Admin Console and exclude them via exclude by exclude_identity_types: adobeID

Here is a sample:

adobe_users:
  exclude_identity_types:
    - adobeID           # adobeID, enterpriseID, or federatedID
  exclude_adobe_groups:
    - adobe_group_name  # its members are not to be removed by User Sync
    - other_group_name  # you can exclude multiple groups
  exclude_users:
    - ".*@example.com"
    - important_user@domain.com

User Sync produces log entries that are printed to standard output and also written to a log file. The logging set of configuration settings control details of where and how much log information is output.

  1. To turn the file log on or off, edit the log_to_file value in the user-sync-config.yml file.

  2. Review the settings for logs and make any desired changes. For the initial setup it's recommended to use 
    log_to_file: True 
    file_log_level: debug

Alternatively, if you have a Windows server, you can use the User Sync Tool Configuration wizard to configure User Sync.

The User Sync Tool Configuration wizard is a GUI tool that helps you easily configure the User Sync tool with User Management API (Adobe.io), Enterprise Directory (LDAP), and sync settings. It provides context-based help and links to User Sync tool documentation. For more information, see Adobe User Sync Tool Configuration wizard.

Deploy and automate

Now that the User Sync tool is set up on your server or machine, you can check if it works as expected. To troubleshoot the common issues while running the User Sync Tool, see tips to resolve common errors.

  1. Open Command Prompt.
  2. Using the following command, navigate to the user_sync_tool folder.

    cd path/to/user_sync_tool
  3. To verify that your configuration is complete, run the following commands:

    For Windows:

    user-sync.exe -v 
    user-sync.exe -h

    For UNIX:

    ./user-sync –v
    ./user-sync –h

    -v reports the version, -h provides help on command-line args.

  4. In test mode, run a sync limited to the mapped groups named in the config file, excluding the existing Adobe side accounts.

    user-sync.exe -t --users mapped --process-groups --adobe-only-user-action exclude

    The command above syncs only the users in the mapped group specified in user-sync-config.yml. If the users don't exist in the Admin Console, it results in an attempt to create the users and add them to any groups that are mapped from their directory groups.

    Running user-sync in test mode (-t) only attempts to create the user and not actually do it. The --adobe-only-user-action exclude option prevents removal of any existing user account in the Adobe organization.

  5. Although the invocation_defaults sets the default arguments the tool runs with, you can override them by mentioning them in command line. In test mode, run a sync limited to the mapped groups named in the config file, removing the extra accounts found on Adobe side and not found in the LDAP extraction.

    user-sync.exe -t --users mapped --process-groups --adobe-only-user-action remove

    -t

    run a simulation not an actual sync and see what would happen.

    --users-mapped

    extract users from LDAP that are results of both all_user_filter and member of the provided directory_group names in the config file.

    --process-groups

    add/remove users to/from the Adobe side user-groups or PLCs, based on account being or not member of the LDAP mapped groups.

    --adobe-only-user-action remove

    any account found on Adobe side is removed from Users menu and entitlements stripped off if not found in the LDAP extraction and not being excluded from sync.

    Read more about command parameters here.

    Read about some other usage scenarios here.

If all the tests run as expected, you are ready to make a full run (without the test-mode flag).

Note:
  • The provided command lines are just examples and might not cover the entirety of use-cases.
  • Initial sync can take from seconds to hours depending on the number of accounts to sync. Roughly 250 users get created every 1.5-2 minutes (including time-out).
  • The UMAPI timeout warning code 429 messages are expected. The tool handles the retry mechanism.

User Sync can be run manually, or you can set up automation where it runs once to a few times per day automatically.

Note:

If you have a log analysis and alerting system available, arrange for the log from User Sync to be sent to the log analysis system. And, set up alerts for any Error or Critical messages that appear in the log.

  1. To pull out relevant log entries for a summary, create a batch file in the user_sync_tool folder with the invocation of user-sync piped to a scan. For example, create a file run_sync.bat with contents like:

    cd path/to/user-sync-folder 
    user-sync.exe --users file example.users-file.csv --process-groups | findstr /I "==== ----- WARNING ERROR CRITICAL Number" > temp.file.txt 
    rem email the contents of temp.file.txt to the user sync administration 
    your-mail-tool –send file temp.file.txt
  2. Optionally, set up an email command-line tool.

    There is no standard email command-line tool in Windows, but several are available commercially, where you can fill in your specific command-line options.

  3. Set up the Windows task scheduler to run the User Sync tool.

    For example, the below code runs the User Sync tool every day starting at 4:00 PM:

    C:\> schtasks /create /tn "Adobe User Sync" /tr path_to_bat_file/run_sync.bat /sc DAILY /st 16:00
Adobe logo

Sign in to your account