Skip to content

Commit 43df910

Browse files
authored
Merge pull request #171 from adobe-apiplatform/v2
update docs from v2 branch so as to push them live
2 parents a114564 + a636cb8 commit 43df910

File tree

3 files changed

+215
-1
lines changed

3 files changed

+215
-1
lines changed

docs/FAQ/index.md

Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
---
2+
layout: page
3+
title: User Sync Frequently Asked Questions
4+
advertise: FAQ
5+
---
6+
### Table of Contents
7+
{:."no_toc"}
8+
9+
* TOC Placeholder
10+
{:toc}
11+
12+
13+
### What is User Sync?
14+
15+
A tool that will enable enterprise customers to create/manage Adobe
16+
users and entitlement assignments utilizing Active Directory (or other
17+
tested OpenLDAP directory services). The target users are IT Identity
18+
Administrators (Enterprise Directory / System Admins) who will be able
19+
to install and configure the tool. The open-source tool is customizable
20+
so that customers can have a developer modify it to suit their own
21+
particular requirements.
22+
23+
### Why is User Sync important?
24+
25+
The cloud-agnostic (CC, EC, DC) User Sync tool serves as a catalyst
26+
to move more users to named user deployment, and fully take advantage
27+
of the products and services capabilities within the Admin Console.
28+
29+
### How does it work?
30+
31+
When User Sync runs, it fetches a list of users from the organization’s
32+
Active Directory (or other data source) and compares it with the list of
33+
users within the Admin Console. It then calls the Adobe User Management
34+
API so that the Admin Console is synchronized with the organization’s
35+
directory. The change flow is entirely one-way; any edits made in the
36+
Admin Console do not get pushed out to the directory.
37+
38+
The tools allows the system admin to map user groups in the customer’s
39+
directory with product configuration and user groups in the Admin Console
40+
41+
To set up User Sync, the organization needs to create a set of credentials
42+
in the same way they would to use the User Management API.
43+
44+
### Where do I get it?
45+
46+
User Sync is open source, distributed under the MIT License, and maintained by Adobe. It is available [here](https://github.com/adobe-apiplatform/user-sync.py/releases/latest).
47+
48+
49+
### Does user sync apply for both on-premise and Azure Active Directory servers?
50+
51+
User sync supports local or Azure hosted AD (Active Directory) servers as well as any other LDAP servers. It can also be driven from a local file.
52+
53+
### Is AD treated as an LDAP server?
54+
55+
Yes, AD is accessed via the LDAP v3 protocol, which AD fully supports.
56+
57+
### Does User Sync automatically put all my LDAP/AD user groups into the Adobe Admin Console?
58+
59+
No. In those cases
60+
where the groups on the enterprise side correspond to desired product access
61+
configurations, the User Sync configuration file can be set up to map
62+
users to Product Configurations (PCs) or User Groups on the Adobe
63+
side based on their enterprise-side group membership. User groups and Product Configurations must be set up manually in the Adobe Admin Console.
64+
65+
66+
### Can User Sync be used to manage the membership in User Groups or just Product Configurations?
67+
68+
In User Sync, you can use user groups or Product Configurations in the mapping from directory groups. So users can be added to or removed from user groups as well as PCs. You can't create new user groups or product configurations however; that must be done in the Admin Console.
69+
70+
### In the examples in the user manual I see that each directory group is mapped to exactly one Adobe group; is it possible to have 1 AD group map to multiple product configurations?
71+
72+
Most of the examples show just a single Adobe user group or PC, but the mapping can be one to many. Simply list all the user groups or PCs, one per line, with a leading "-" (and indented to the proper level) on each as per YML list format.
73+
74+
### Can the UMAPI server's throttling interfere with the operation of user sync?
75+
76+
No, User sync handles throttling and retries so that throttling may slow
77+
down the overall user sync process, but there is no problem caused by throttling
78+
and user sync will properly complete all operations.
79+
80+
The Adobe systems protect themselves from overload by tracking the incoming
81+
request volume. If this is starting to exceed limits, then requests return
82+
a "retry-after" header indicating when capacity will be available again. User sync honors these headers and waits for the requested amount of time before retrying. More information, including code samples, can be found in the [User Management API documentation](https://www.adobe.io/apis/cloudplatform/usermanagement/docs/throttling.html).
83+
84+
### Is there a local list of users created/updated (on the user sync side) in order to reduce Adobe server calls?
85+
86+
No, User sync always queries the Adobe user management systems to get
87+
current information when it is run.
88+
89+
### Is the user sync tool limited to federated Ids or can any type of ID can be created?
90+
91+
User sync supports all id types (Adobe IDs, Federated IDs and Enterprise IDs).
92+
93+
### An Adobe organization can be granted access to users from domains owned by other organizations. Can User Sync handle this case?
94+
95+
Yes. User Sync can both query and manage user
96+
group membership and product access for users in both owned and accessed domains. However,
97+
like the Admin Console, User Sync can only be used to create and update user
98+
accounts in owned domains, not domains owned by other organizations. Users from those
99+
domains can be granted product access but not edited or deleted.
100+
101+
### Is there an update function, or just add/remove users (for only federatedID)?
102+
103+
For all types of ID (Adobe, Enterprise, and Federated), User Sync supports
104+
update of group memberships under control of the --process-groups option.
105+
For Enterprise and Federated IDs, User Sync supports update of first name, last
106+
name, and email fields under control of the --update-user-info option. When
107+
country updates become available in the Admin Console, they will also be
108+
available via the UMAPI. And for Federated IDs whose "User Login Setting"
109+
is "Username", User Sync supports update of username as well as the other fields.
110+
111+
### Is the user sync tool dedicated to a particular OS?
112+
113+
User Sync is an open source python project. Users can build for any OS platform they desire. We provide builds for Windows, OS X, Ubuntu, and Cent OS 7 platforms.
114+
115+
### Has this been tested on python 3.5?
116+
117+
User Sync has been run successfully on Python 3.x, but most of our use and testing is on Python 2.7 so you may discover problems, and we only provide builds on Python 2.7. Feel free to report problems (and contribute fixes) to the open source site at https://github.com/adobe-apiplatform/user-sync.py.
118+
119+
### If something changes in the API (new field in creating users, for example ) how will the update be applied to the user sync tool?
120+
121+
User sync is an open source project. Users can download and build the latest
122+
sources at their discretion. Adobe will post new releases with builds periodically.
123+
Users can stay informed of them via git notifications. When adopting a new release,
124+
only the single pex file needs to be updated by the user. If there are configuration
125+
changes or command line changes to support new features, there may be updates in
126+
those files to take advantage of them.
127+
128+
Also note that User Sync is built on top of umapi-client, which is the only module with direct knowledge of the API. When the API changes, umapi-client always gets updated to support it. If and when API changes provide for more User Sync-related capabilities, then User Sync may be updated to provide them.
129+
130+
### Does User sync need some sort of whitelisting with the firewall rules of the machine on which it runs?
131+
132+
Generally no. User sync is purely a network client, and does not accept incoming connections, so the machine-local firewall rules for inbound connections are irrelevant.
133+
134+
However, as a network client, User Sync requires SSL (port 443) outbound access through customer network firewalls in order to reach the Adobe servers. Customer networks also need to permit User Sync, if configured that way, to reach the customer LDAP/AD server, on whatever port is specified in the User Sync configuration (port 389 by default).
135+
136+
### Is User Sync part of Adobe's offering to EVIP customers?
137+
138+
Yes, all Enterprise customers have access to the UMAPI and User Sync, regardless of their buying program (E-VIP, ETLA, or Enterprise Agreement).
139+
140+
### What is the internationalization story for the User Sync tool; is it internationally enabled (support at least double-byte character input)?
141+
142+
Python 2.7 (the language of the tool) distinguishes “str” (8-bit character strings)
143+
and “unicode” (enforced UTF-8-encoded 8 bit character strings), and the user
144+
sync code uses “str” not “unicode” everywhere. However, all of the output of
145+
the tools are UTF-8 encoded, and as long as UTF-8 encoding is used on the
146+
input things should work fine. This has been lightly tested and no problems were
147+
found. Further testing is planned.
148+
149+
We have an enhancement planned to port the tool to run in Python 3 as well as Python 2.
150+
At that point we can be assured that unicode will work fine, as the types are merged
151+
in Python 3. Customers for whom this is critical should build using Python 3.
152+
153+

docs/index.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,8 @@ the [User Manual](user-manual/index.md). It's also your starting
3131
point for customizing the behavior of User Sync, as it includes
3232
instructions for doing custom mappings between customer directory
3333
information and data on the Adobe side.
34+
35+
# Frequently Asked Questions
36+
37+
We have compiled a [FAQ document](FAQ/index.md) that answers many questions we have been asked and others we expected to be asked.
38+

docs/user-manual/index.md

Lines changed: 57 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -812,7 +812,7 @@ specific behavior in various situations.
812812
| `--user-filter` _regex\_pattern_ | Limit the set of users that are examined for syncing to those matching a pattern specified with a regular expression. See the [Python regular expression documentation](https://docs.python.org/2/library/re.html) for information on constructing regular expressions in Python. The user name must completely match the regular expression.|
813813
| `--update-user-info` | When supplied, synchronizes user information. If the information differs between the enterprise directory side and the Adobe side, the Adobe side is updated to match. This includes the firstname and lastname fields. |
814814
| `--process-groups` | When supplied, synchronizes group membership information. If the membership in mapped groups differs between the enterprise directory side and the Adobe side, the group membership is updated on the Adobe side to match. This includes removal of group membership for Adobe users not listed in the directory side (unless the `--adobe-only-user-action exclude` option is also selected).|
815-
| `--adobe-only-user-action preserve`<br />`--adobe-only-user-action remove-adobe-groups`<br />`--adobe-only-user-action remove`<br />`--adobe-only-user-action delete`<br /><br/>`--adobe-only-user-action write-file`&nbsp;filename<br/><br/>`--adobe-only-user-action exclude` | When supplied, if user accounts are found on the Adobe side that are not in the directory, take the indicated action. <br/><br/>`preserve`: no action concerning account deletion is taken. This is the default. There may still be group membership changes if the `--process-groups` option was specified.<br/><br/>`remove-adobe-groups`: The account is removed from user groups and product configurations, freeing any licenses it held, but is left as an active account in the organization.<br><br/>`remove`: In addition to remove-adobe-groups, the account is also removed from the organization, but is left as an existing account.<br/><br/>`delete`: In addition to the action for remove, the account is deleted if owned by the organization.<br/><br/>`write-file`: the list of user account present on the Adobe side but not in the directory is written to the file indicated. No other account action is taken. You can then pass this file to the `--adobe-only-user-list` argument in a subsequent run.<br/><br/>`exclude`: No update of any kind is applied to users found only on the Adobe side. This is used when doing updates of specific users via a file (--users file f) where only users needing explicit updates are listed in the file and all other users should be left alone.<br/><br>Only permitted actions will be applied. Accounts of type adobeID are owned by the user so the delete action will do the equivalent of remove. The same is true of Adobe accounts owned by other organizations. |
815+
| `--adobe-only-user-action preserve`<br />`--adobe-only-user-action remove-adobe-groups`<br />`--adobe-only-user-action remove`<br />`--adobe-only-user-action delete`<br /><br/>`--adobe-only-user-action write-file`&nbsp;filename<br/><br/>`--adobe-only-user-action exclude` | When supplied, if user accounts are found on the Adobe side that are not in the directory, take the indicated action. <br/><br/>`preserve`: no action concerning account deletion is taken. This is the default. There may still be group membership changes if the `--process-groups` option was specified.<br/><br/>`remove-adobe-groups`: The account is removed from user groups and product configurations, freeing any licenses it held, but is left as an active account in the organization.<br><br/>`remove`: In addition to remove-adobe-groups, the account is also removed from the organization, but the user account, with its associated assets, is left in the domain and can be re-added to the organization if desired.<br/><br/>`delete`: In addition to the action for remove, the account is deleted if its domain is owned by the organization.<br/><br/>`write-file`: No action concerning account deletion is taken. The list of user accounts present on the Adobe side but not in the directory is written to the file indicated. You can then pass this file to the `--adobe-only-user-list` argument in a subsequent run. There may still be group membership changes if the `--process-groups` option was specified.<br/><br/>`exclude`: No update of any kind is applied to users found only on the Adobe side. This is used when doing updates of specific users via a file (--users file f) where only users needing explicit updates are listed in the file and all other users should be left alone.<br/><br>Only permitted actions will be applied. Accounts of type adobeID are owned by the user so the delete action will do the equivalent of remove. The same is true of Adobe accounts owned by other organizations. |
816816
| `adobe-only-user-list` _filename_ | Specifies a file from which a list of users will be read. This list is used as the definitive list of "Adobe only" user accounts to be acted upon. One of the `--adobe-only-user-action` directives must also be specified and its action will be applied to user accounts in the list. The `--users` option is disallowed if this option is present: only account removal actions can be processed. |
817817
{: .bordertablestyle }
818818

@@ -1501,6 +1501,26 @@ group in its group map. It updates membership in the user group,
15011501
which indirectly updates the membership in the product
15021502
configuration.
15031503

1504+
### Removing Group Mappings
1505+
1506+
There is potential confusion when removing a mapped group. Say a
1507+
directory group `acrobat_users` is mapped to the Adobe group `Acrobat`.
1508+
and you no longer want to map the group to `Acrobat` so you take out
1509+
the entry. The result is that all of the users are left in the
1510+
`Acrobat` group because `Acrobat` is no longer a mapped group so user
1511+
sync leaves it alone. It doesn't result in removing all the users
1512+
from `Acrobat` as you might have expected.
1513+
1514+
If you also wanted the users removed from the `Acrobat` group, you can
1515+
manually remove them using the Admin Console, or you can (at least
1516+
temporarily) leave the entry in the group map in the configuration
1517+
file, but change the directory group to a name that you know does
1518+
not exist in the directory, such as `no_directory_group`. The next sync
1519+
run will notice that there are users in the Adobe group who are
1520+
not in the directory group and
1521+
they will all be moved. Once this has happened, you can remove
1522+
the entire mapping from the configuration file.
1523+
15041524
### Working with Username-Based Login
15051525

15061526
On the Adobe Admin Console, you can configure a federated domain to use email-based user login names or username-based (i.e., non-email-based) login. Username-based login can be used when email addresses are expected to change often or your organization does not allow email addresses to be used for login. Ultimately, whether to use username-based login or email-based login depends on a company's overall identity strategy.
@@ -1554,6 +1574,42 @@ that are not named in the group map in the config file.
15541574
- `exclude_identity_types`: The values of this configuration item is a list of strings that can be "adobeID", "enterpriseID", and "federatedID". This causes any account that is of the listed type(s) to be preserved and never deleted as Adobe-only users.
15551575

15561576

1577+
### Working With Nested Directory Groups in Active Directory
1578+
1579+
If your directory groups are structured in a nested manner so that users are
1580+
not in one simple named directory group, you will need to run more complex
1581+
LDAP queries to enumerate the list of users. For example you might have a group
1582+
nesting structure like this:
1583+
1584+
1585+
All_Divisions
1586+
Blue_Division
1587+
1588+
1589+
Green_Division
1590+
1591+
1592+
1593+
1594+
To handle this type of nesting structure, in your LDAP config file,
1595+
set the value of group_filter_format as follows:
1596+
1597+
group_filter_format: "(memberOf:1.2.840.113556.1.4.1941:=cn={group},cn=users,DC=example,DC=com)"
1598+
1599+
where this part of the query:
1600+
1601+
cn={group},cn=users,DC=example,DC=com
1602+
1603+
is the full distinguished name of the group. The entry {group} will be replaced by the actual group when User Sync runs the group membership query. This example assumes the group is located in the
1604+
directory in users.example.com. If the group is located elsewhere in the directory, you
1605+
would need to provide the appropriate path to reference it. (example.com would be replaced by
1606+
your actual domain name also.)
1607+
1608+
Once this is set, you can use `All_Divisions` in the group map as the directory group and/or specify `--users group All_Divisions` as the source for users.
1609+
1610+
How this works is explained in the accepted answer to this [StackOverflow](http://stackoverflow.com/questions/6195812/ldap-nested-group-membership) question and in this [MS technote](https://msdn.microsoft.com/en-us/library/aa746475%28VS.85%29.aspx). AD supports the LDAP_MATCHING_RULE_IN_CHAIN predicate which will search the entire ancestry tree to find containment. 1.2.840.113556.1.4.1941 is the precise OID you must specify to use that predicate.
1611+
1612+
This can be a very expensive filter, and should be used very carefully.
15571613

15581614
---
15591615

0 commit comments

Comments
 (0)