Skip to content

Commit 4fd09a4

Browse files
committed
Merge remote-tracking branch 'ust/v2' into sort_bug_fix
2 parents 1110244 + 49d2ac8 commit 4fd09a4

14 files changed

Lines changed: 396 additions & 109 deletions

File tree

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,3 +100,5 @@ user_sync/resources/*
100100
!user_sync/resources/__init__.py
101101
!user_sync/resources/README.md
102102
!user_sync/resources/manual_url
103+
104+
.DS_Store

README.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ Copyright (c) 2016-2017 Adobe Inc.
1414

1515
The [User Sync Documentation](https://adobe-apiplatform.github.io/user-sync.py/) covers all aspects of the tool, from both a general and a technical point of view. The following links are good places to start:
1616

17-
- [User Sync Overview](https://www.adobe.io/apis/cloudplatform/usermanagement/docs/UserSyncTool.html)
1817
- [Non-Technical Primer](https://spark.adobe.com/page/E3hSsLq3G1iVz/)
1918
- [User Manual](https://adobe-apiplatform.github.io/user-sync.py/en/user-manual/)
2019
- [Step-by-Step Setup](https://adobe-apiplatform.github.io/user-sync.py/en/success-guide/)

docs/Gemfile.lock

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ GEM
1616
commonmarker (0.17.13)
1717
ruby-enum (~> 0.5)
1818
concurrent-ruby (1.1.5)
19-
dnsruby (1.61.2)
19+
dnsruby (1.61.3)
2020
addressable (~> 2.5)
2121
em-websocket (0.5.1)
2222
eventmachine (>= 0.12.9)
@@ -83,7 +83,7 @@ GEM
8383
octokit (~> 4.0)
8484
public_suffix (~> 3.0)
8585
typhoeus (~> 1.3)
86-
html-pipeline (2.11.0)
86+
html-pipeline (2.12.0)
8787
activesupport (>= 2)
8888
nokogiri (>= 1.4)
8989
http_parser.rb (0.6.0)
@@ -207,15 +207,15 @@ GEM
207207
jekyll-seo-tag (~> 2.1)
208208
minitest (5.11.3)
209209
multipart-post (2.1.1)
210-
nokogiri (1.10.3)
210+
nokogiri (1.10.4)
211211
mini_portile2 (~> 2.4.0)
212-
nokogiri (1.10.3-x64-mingw32)
212+
nokogiri (1.10.4-x64-mingw32)
213213
mini_portile2 (~> 2.4.0)
214214
octokit (4.14.0)
215215
sawyer (~> 0.8.0, >= 0.5.3)
216216
pathutil (0.16.2)
217217
forwardable-extended (~> 2.6)
218-
public_suffix (3.1.0)
218+
public_suffix (3.1.1)
219219
rb-fsevent (0.10.3)
220220
rb-inotify (0.10.0)
221221
ffi (~> 1.0)
@@ -240,7 +240,7 @@ GEM
240240
ethon (>= 0.9.0)
241241
tzinfo (1.2.5)
242242
thread_safe (~> 0.1)
243-
tzinfo-data (1.2019.1)
243+
tzinfo-data (1.2019.2)
244244
tzinfo (>= 1.0.0)
245245
unicode-display_width (1.6.0)
246246

docs/en/user-manual/advanced_configuration.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ configuration file in the `directory_users` section:
202202

203203
```
204204
directory_users:
205-
extension: extenstions_config.yml # reference to file with custom mapping information
205+
extension: extension-config.yml # reference to file with custom mapping information
206206
```
207207
208208
Custom attribute handling is performed for each user, so the
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
# This is a sample configuration file for the Adobe-Console connector.
2+
#
3+
# umapi (user management api) is a network protocol served by Adobe that
4+
# provides management of users in Adobe-hosted enterprise organizations.
5+
#
6+
# This sample file contains all of the settable options for this protocol.
7+
# All of the settings here can be changed. It is recommended
8+
# that you make a copy of this file and edit that to match your configuration.
9+
# While you are at it, you will likely want to remove a lot of this commentary,
10+
# in order to enhance the readability of your file.
11+
12+
# (optional) UMAPI server settings (defaults as shown)
13+
# The host and endpoint settings specify the Adobe endpoints which
14+
# host the UMAPI services and those which provide authorization.
15+
# The timeout and retries settings control how much delay (in seconds)
16+
# can be tolerated in server responses, and also how many times a request
17+
# that fails due to server timeout or server throttling will be retried.
18+
# You will *never* need to alter these settings unless you are provided
19+
# alternate values by Adobe as part of a support engagement. It is
20+
# highly recommended that you leave these values commented out
21+
# so that the default values are guaranteed to be used.
22+
server:
23+
#host: usermanagement.adobe.io
24+
#endpoint: /v2/usermanagement
25+
#ims_host: ims-na1.adobelogin.com
26+
#ims_endpoint_jwt: /ims/exchange/jwt
27+
#timeout: 120
28+
#retries: 3
29+
30+
# (required) integration settings
31+
# You must specify all five of these settings. Consult the
32+
# Adobe UMAPI documentation and the Adobe I/O Console to determine
33+
# the correct settings for your enterprise organization.
34+
# [NOTE: the priv_key_path setting can be an absolute or relative pathname;
35+
# if relative, it is interpreted relative to this configuration file.]
36+
integration:
37+
org_id: "Org ID goes here"
38+
api_key: "API key goes here"
39+
client_secret: "Client secret goes here"
40+
tech_acct: "Tech account ID goes here"
41+
priv_key_path: "private.key"
42+
43+
# (optional) As an alternative to priv_key_path, you can place the private key
44+
# data directly in this file. To do this, remove the priv_key_path entry above
45+
# and uncomment the following entry. Replace the sample data with the data
46+
# from your private key file (which will be much longer).
47+
#priv_key_data: |
48+
# -----BEGIN RSA PRIVATE KEY-----
49+
# MIIf74jfd84oAgEA6brj4uZ2f1Nkf84j843jfjjJGHYJ8756GHHGGz7jLyZWSscH
50+
# CoifurKJY763GHKL98mJGYxWSBvhlWskdjdatagoeshere986fKFUNGd74kdfuEH
51+
# -----END RSA PRIVATE KEY-----
52+
53+
# (optional) You can store credentials in the operating system credential store
54+
# (Windows Credential Manager, Mac Keychain, Linux Freedesktop Secret Service
55+
# or KWallet - these will be built into the Linux distribution).
56+
# To use this feature, uncomment the following entries and remove the
57+
# api_key, client_secret, and priv_key_data above.
58+
# The actual credential values are placed in the credential store with the
59+
# username as the org_id value, and the key name (perhaps called internet
60+
# or network address) as one of the values below.
61+
#secure_api_key_key: umapi_api_key
62+
#secure_client_secret_key: umapi_client_secret
63+
#secure_priv_key_data_key: umapi_private_key_data
64+
# Note: the Windows credential store generally can't store data as large as a private
65+
# key, so the recommended path for securing your private key on windows is given next.
66+
67+
# (optional): You can secure your private key data by encrypting it, as with
68+
# openssl pkcs8 -in private.key -topk8 -v2 des3 -out private-encrypted.key
69+
# which prompts for a passphrase and creates a passphrase-encrypted file in PKCS#8 format.
70+
# Having done this, you can use the setting priv_key_pass to specify the passphrase needed
71+
# by User Sync to decrypt the private key file (or private key data), as in:
72+
#priv_key_pass: "my passphrase for my private key"
73+
# For better security, you should save your passphrase into the secure credential store
74+
# on your platform (username = your org ID, service/internet address = "umapi_private_key_passphrase")
75+
# and then uncomment this setting:
76+
#secure_priv_key_pass_key: umapi_private_key_passphrase
77+
78+
# (optional) identity_type_filter (default value is all)
79+
# By default, connector will automatically load users from all identity type to be load as directory users.
80+
# When specify with one of the following value (adobeID, enterpriseID, federatedID)
81+
# the connector will automatically filter users by the specified identity type.
82+
identity_type_filter: all
83+

examples/config files - basic/user-sync-config.yml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,12 @@ directory_users:
154154
# (optional) okta (no default value)
155155
# okta is a 3rd party federation provider compatible with Adobe Enterprise Federated ID.
156156
# See https://developer.okta.com/ for Okta developer information.
157-
# okta: "connector-okta.ytml"
157+
# okta: "connector-okta.yml"
158+
159+
# (optional) Adobe console
160+
# Query users from an Adobe organization to use as an identity source
161+
# See user manual for more inforation
162+
# adobe_console: connector-adobe-console.yml
158163

159164
# (optional) groups (no default value)
160165
# The groups setting specifies how groups in the enterprise directory map

setup.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,12 @@
5858
'click-default-group',
5959
],
6060
extras_require={
61+
':python_version>="3" and (sys_platform=="linux" or sys_platform=="linux2")':[
62+
'jeepney==0.4'
63+
],
6164
':sys_platform=="linux" or sys_platform=="linux2"': [
6265
'secretstorage',
63-
'dbus-python'
66+
'dbus-python',
6467
],
6568
':sys_platform=="win32"': [
6669
'pywin32-ctypes'

user_sync/app.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ def main():
124124
help='specify a connector to use; default is LDAP (or CSV if --users file is specified)',
125125
cls=user_sync.cli.OptionMulti,
126126
type=list,
127-
metavar='ldap|okta|csv [path-to-file.csv]')
127+
metavar='ldap|okta|csv|adobe_console [path-to-file.csv]')
128128
@click.option('--process-groups/--no-process-groups', default=None,
129129
help='if membership in mapped groups differs between the enterprise directory and Adobe sides, '
130130
'the group membership is updated on the Adobe side so that the memberships in mapped '

user_sync/config.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ def load_invocation_options(self):
127127
# --connector
128128
connector_spec = options['connector']
129129
connector_type = user_sync.helper.normalize_string(connector_spec[0])
130-
if connector_type in ["ldap", "okta"]:
130+
if connector_type in ["ldap", "okta", "adobe_console"]:
131131
if len(connector_spec) > 1:
132132
raise AssertionException('Must not specify a file (%s) with connector type %s' %
133133
(connector_spec[0], connector_type))
@@ -312,6 +312,7 @@ def get_directory_connector_configs(self):
312312
connectors_config.get_list('ldap', True)
313313
connectors_config.get_list('csv', True)
314314
connectors_config.get_list('okta', True)
315+
connectors_config.get_list('adobe_console', True)
315316
return connectors_config
316317

317318
def get_directory_connector_options(self, connector_name):
@@ -845,7 +846,8 @@ class ConfigFileLoader:
845846
}
846847

847848
# like ROOT_CONFIG_PATH_KEYS, but for non-root configuration files
848-
SUB_CONFIG_PATH_KEYS = {'/enterprise/priv_key_path': (True, False, None)}
849+
SUB_CONFIG_PATH_KEYS = {'/enterprise/priv_key_path': (True, False, None),
850+
'/integration/priv_key_path': (True, False, None)}
849851

850852
@classmethod
851853
def load_root_config(cls, filename):

0 commit comments

Comments
 (0)