88from cryptojwt import as_unicode
99from cryptojwt .key_jar import init_key_jar
1010from cryptojwt .utils import as_bytes
11+ from cryptojwt .utils import importer
1112
1213from idpyoidc import verified_claim_name
1314from idpyoidc .client .defaults import DEFAULT_CLIENT_CONFIGS
@@ -60,6 +61,14 @@ def __init__(
6061 self .keyjar = init_key_jar (** config .key_conf , issuer_id = "" )
6162 if not client_configs :
6263 self .client_configs = config .clients
64+
65+ if "client_class" in config :
66+ if isinstance (config ["client_class" ], str ):
67+ self .client_cls = importer (config ["client_class" ])
68+ else : # assume it's a class
69+ self .client_cls = config ["client_class" ]
70+ else :
71+ self .client_cls = StandAloneClient
6372 else :
6473 if hash_seed :
6574 self .hash_seed = as_bytes (hash_seed )
@@ -79,6 +88,8 @@ def __init__(
7988 else :
8089 self .client_configs = client_configs
8190
91+ self .client_cls = StandAloneClient
92+
8293 if _jwks_path :
8394 self .jwks_uri = add_path (base_url , _jwks_path )
8495 else :
@@ -95,7 +106,6 @@ def __init__(
95106
96107 self .extra = kwargs
97108
98- self .client_cls = StandAloneClient
99109 if services is None :
100110 self .services = DEFAULT_OIDC_SERVICES
101111 else :
0 commit comments