55from keycloak import KeycloakAdmin , KeycloakOpenID , KeycloakPostError
66
77
8+ def _fallback (value , default ):
9+ return default if value is None else value
10+
11+
812class Realm :
913 """Helper class for RHSSO realm manipulation"""
1014
11- def __init__ (self , master : KeycloakAdmin , name ) -> None :
15+ def __init__ (self , master : KeycloakAdmin , name , verify = True ) -> None :
1216 self .admin = KeycloakAdmin (
1317 server_url = master .connection .server_url ,
1418 username = master .connection .username ,
1519 password = master .connection .password ,
1620 realm_name = name ,
1721 user_realm_name = "master" ,
18- verify = False ,
22+ verify = verify ,
1923 )
2024 self .name = name
25+ self .verify = verify
2126
2227 def delete (self ):
2328 """Deletes realm"""
2429 self .admin .delete_realm (self .name )
2530
26- def create_client (self , name , ** kwargs ):
31+ def create_client (self , name , cert = None , verify = None , ** kwargs ):
2732 """Creates new client"""
2833 self .admin .create_client (payload = {** kwargs , "clientId" : name })
2934 client_id = self .admin .get_client_id (name )
30- return Client (self , client_id )
35+ return Client (self , client_id , cert , _fallback ( verify , self . verify ) )
3136
3237 def create_user (self , username , password , ** kwargs ):
3338 """Creates new user"""
@@ -42,23 +47,27 @@ def create_user(self, username, password, **kwargs):
4247 self .admin .update_user (user_id , {"emailVerified" : True })
4348 return user_id
4449
45- def oidc_client (self , client_id , client_secret ) -> KeycloakOpenID :
50+ def oidc_client (self , client_id , client_secret , cert = None , verify = None ) -> KeycloakOpenID :
4651 """Create OIDC client for this realm"""
4752 return KeycloakOpenID (
4853 server_url = self .admin .connection .server_url ,
4954 client_id = client_id ,
5055 realm_name = self .name ,
5156 client_secret_key = client_secret ,
57+ cert = cert ,
58+ verify = _fallback (verify , self .verify ),
5259 )
5360
5461
5562class Client :
5663 """Helper class for RHSSO client manipulation"""
5764
58- def __init__ (self , realm : Realm , client_id ) -> None :
65+ def __init__ (self , realm : Realm , client_id , cert = None , verify = None ) -> None :
5966 self .admin = realm .admin
6067 self .realm = realm
6168 self .client_id = client_id
69+ self .cert = cert
70+ self .verify = verify
6271
6372 def assign_role (self , role_name ):
6473 """Assign client role from realm management client"""
@@ -73,23 +82,24 @@ def oidc_client(self) -> KeycloakOpenID:
7382 # Note This is different clientId (clientId) than self.client_id (Id), because RHSSO
7483 client_id = self .admin .get_client (self .client_id )["clientId" ]
7584 secret = self .admin .get_client_secrets (self .client_id )["value" ]
76- return self .realm .oidc_client (client_id , secret )
85+ return self .realm .oidc_client (client_id , secret , self . cert , verify = self . verify )
7786
7887
7988# pylint: disable=too-few-public-methods
8089class RHSSO :
8190 """Helper class for RHSSO server"""
8291
83- def __init__ (self , server_url , username , password ) -> None :
92+ def __init__ (self , server_url , username , password , verify = True ) -> None :
8493 # python-keycloak API requires url to be pointed at auth/ endpoint
8594 # pylint: disable=protected-access
95+ self .verify = verify
8696 try :
8797 self .master = KeycloakAdmin (
8898 server_url = server_url ,
8999 username = username ,
90100 password = password ,
91101 realm_name = "master" ,
92- verify = False ,
102+ verify = verify ,
93103 )
94104 self .master .get_clients () # test whether the server url is valid
95105 self .server_url = server_url
@@ -100,14 +110,14 @@ def __init__(self, server_url, username, password) -> None:
100110 username = username ,
101111 password = password ,
102112 realm_name = "master" ,
103- verify = False ,
113+ verify = verify ,
104114 )
105115 self .master .get_clients () # test whether the server url is valid
106116
107- def create_realm (self , name : str , ** kwargs ) -> Realm :
117+ def create_realm (self , name : str , verify = None , ** kwargs ) -> Realm :
108118 """Creates new realm"""
109119 self .master .create_realm (payload = {"realm" : name , "enabled" : True , "sslRequired" : "None" , ** kwargs })
110- return Realm (self .master , name )
120+ return Realm (self .master , name , verify = _fallback ( verify , self . verify ) )
111121
112122
113123# pylint: disable=too-few-public-methods
0 commit comments