@@ -44,6 +44,7 @@ def __init__(self, caller_options, *args, **kwargs):
4444 builder .set_string_value ('user_identity_type' , None )
4545 builder .set_string_value ('identity_type_filter' , 'all' )
4646 builder .set_bool_value ('ssl_cert_verify' , True )
47+ builder .set_string_value ('authentication_method' , 'jwt' )
4748 options = builder .get_options ()
4849
4950 if not options ['identity_type_filter' ] == 'all' :
@@ -57,8 +58,17 @@ def __init__(self, caller_options, *args, **kwargs):
5758 server_builder = config_common .OptionsBuilder (server_config )
5859 server_builder .set_string_value ('host' , 'usermanagement.adobe.io' )
5960 server_builder .set_string_value ('endpoint' , '/v2/usermanagement' )
60- server_builder .set_string_value ('ims_host' , 'ims-na1.adobelogin.com' )
6161 server_builder .set_string_value ('ims_endpoint_jwt' , '/ims/exchange/jwt' )
62+
63+ auth_host_key = 'ims_host' if 'ims_host' in server_config else 'auth_host'
64+ server_builder .set_string_value (auth_host_key , 'ims-na1.adobelogin.com' )
65+
66+ auth_endpoint_key = 'ims_endpoint_jwt' if 'ims_endpoint_jwt' in server_config else 'auth_endpoint'
67+ auth_endpoint_default = '/ims/exchange/jwt'
68+ if options ['authentication_method' ] == 'oauth' :
69+ auth_endpoint_default = '/ims/token/v2'
70+ server_builder .set_string_value (auth_endpoint_key , auth_endpoint_default )
71+
6272 server_builder .set_int_value ('timeout' , 120 )
6373 server_builder .set_int_value ('retries' , 3 )
6474 options ['server' ] = server_options = server_builder .get_options ()
@@ -67,17 +77,33 @@ def __init__(self, caller_options, *args, **kwargs):
6777 integration_builder = config_common .OptionsBuilder (enterprise_config )
6878 integration_builder .require_string_value ('org_id' )
6979 tech_field = 'tech_acct_id' if 'tech_acct_id' in enterprise_config else 'tech_acct'
70- integration_builder .require_string_value (tech_field )
80+ integration_builder .set_string_value (tech_field , None )
7181 options ['integration' ] = integration_options = integration_builder .get_options ()
7282
83+ if integration_options [tech_field ] is None and options ['authentication_method' ] == 'jwt' :
84+ raise AssertionException (f"'{ tech_field } ' is required for jwt authentication" )
85+
86+ if integration_options [tech_field ] is not None and options ['authentication_method' ] == 'oauth' :
87+ raise AssertionException (f"'{ tech_field } ' should not be set for oauth authentication" )
88+
7389 self .logger = logger = user_sync .connector .helper .create_logger (options )
7490 logger .debug ('%s initialized with options: %s' , self .name , options )
7591
7692 self .options = options
7793
7894 ims_host = server_options ['ims_host' ]
7995 self .org_id = org_id = integration_options ['org_id' ]
80- auth_dict = make_auth_dict (self .name , enterprise_config , org_id , integration_options [tech_field ], logger )
96+ auth = create_umapi_auth (
97+ self .name ,
98+ enterprise_config ,
99+ org_id ,
100+ integration_options [tech_field ],
101+ server_options [auth_host_key ],
102+ server_options [auth_endpoint_key ],
103+ options ['ssl_cert_verify' ],
104+ options ['authentication_method' ],
105+ logger ,
106+ )
81107
82108 # this check must come after we fetch all the settings
83109 caller_config .report_unused_values (logger )
@@ -88,15 +114,12 @@ def __init__(self, caller_options, *args, **kwargs):
88114 try :
89115 self .connection = umapi_client .Connection (
90116 org_id = org_id ,
91- auth_dict = auth_dict ,
92- ims_host = ims_host ,
93- ims_endpoint_jwt = server_options ['ims_endpoint_jwt' ],
94- user_management_endpoint = um_endpoint ,
117+ auth = auth ,
118+ endpoint = um_endpoint ,
95119 test_mode = False ,
96120 user_agent = "user-sync/" + app_version ,
97- logger = self .logger ,
98- timeout_seconds = float (server_options ['timeout' ]),
99- retry_max_attempts = server_options ['retries' ] + 1 ,
121+ timeout = float (server_options ['timeout' ]),
122+ max_retries = server_options ['retries' ] + 1 ,
100123 ssl_verify = options ['ssl_cert_verify' ]
101124 )
102125 except Exception as e :
0 commit comments