1
1
import json
2
+ import urllib .request
3
+ import argparse
2
4
3
5
from keycloak import KeycloakOpenID
4
6
from keycloak import KeycloakAdmin
5
- import urllib2 , argparse , json
6
7
7
8
# Import realm
8
9
def keycloak_import_realm (keycloak_realm_file ):
@@ -17,20 +18,24 @@ def keycloak_create_user(email, username, firstName, lastName, password):
17
18
"enabled" : True ,
18
19
"firstName" : firstName ,
19
20
"lastName" : lastName ,
20
- "credentials" : [{"value" : "12345" , "type" : password }],
21
+ "credentials" : [{"value" : password , "type" : " password" }],
21
22
"realmRoles" : ["user_default" ]})
22
23
23
24
# Create the user and assign the role to access the user management API
24
25
def update_user_roles (config ):
25
26
realm_json = json .load (open (config ['keycloak_realm_json_file_path' ]))
26
27
27
28
# Get the id of realm-management
29
+ client_id = None
28
30
for client in realm_json ['clients' ]:
29
31
if config ['clientId' ] == client ['clientId' ]:
30
32
client_id = client ["id" ]
31
33
break
32
34
33
- user = keycloak_admin .get_users ({"username" :config ['keycloak_api_management_username' ]})
35
+ if client_id is None :
36
+ raise ValueError ("Client ID not found in realm JSON" )
37
+
38
+ user = keycloak_admin .get_users ({"username" : config ['keycloak_api_management_username' ]})
34
39
user_id = user [0 ]['id' ]
35
40
36
41
# Read the role from file
@@ -40,13 +45,13 @@ def update_user_roles(config):
40
45
roles = json .loads (json_data )
41
46
42
47
# Get only client roles
43
- clientRoles = roles [config ['clientId' ]]
48
+ client_roles = roles [config ['clientId' ]]
44
49
45
- keycloak_admin .assign_client_role (user_id , client_id , clientRoles )
50
+ keycloak_admin .assign_client_role (user_id , client_id , client_roles )
46
51
47
- if __name__ == "__main__" :
48
- parser = argparse .ArgumentParser (description = 'Configure keycloak user apis ' )
49
- parser .add_argument ('keycloak_bootstrap_config' , help = 'configuration json file that is needed for keycloak bootstrap' )
52
+ if __name__ == "__main__" :
53
+ parser = argparse .ArgumentParser (description = 'Configure keycloak user APIs ' )
54
+ parser .add_argument ('keycloak_bootstrap_config' , help = 'Configuration JSON file needed for keycloak bootstrap' )
50
55
args = parser .parse_args ()
51
56
52
57
with open (args .keycloak_bootstrap_config ) as keycloak_bootstrap_config :
@@ -55,35 +60,34 @@ def update_user_roles(config):
55
60
try :
56
61
# Get access token
57
62
keycloak_admin = KeycloakAdmin (server_url = config ['keycloak_auth_server_url' ],
58
- username = config ['keycloak_management_user' ],
59
- password = config ['keycloak_management_password' ],
60
- realm_name = "master" ,
61
- client_id = 'admin-cli' ,
62
- verify = False )
63
+ username = config ['keycloak_management_user' ],
64
+ password = config ['keycloak_management_password' ],
65
+ realm_name = "master" ,
66
+ client_id = 'admin-cli' ,
67
+ verify = False )
63
68
# Import realm
64
69
keycloak_import_realm (config ['keycloak_realm_json_file_path' ])
65
70
66
71
# Set realm name to sunbird
67
72
keycloak_admin .realm_name = config ['keycloak_realm' ]
68
73
69
- # Add user for user api
74
+ # Add user for user API
70
75
keycloak_create_user (email = config ['keycloak_api_management_user_email' ],
71
- username = config ['keycloak_api_management_username' ],
72
- firstName = config ['keycloak_api_management_user_first_name' ],
73
- lastName = config ['keycloak_api_management_user_last_name' ],
74
- password = config ['keycloak_api_management_user_password' ])
76
+ username = config ['keycloak_api_management_username' ],
77
+ firstName = config ['keycloak_api_management_user_first_name' ],
78
+ lastName = config ['keycloak_api_management_user_last_name' ],
79
+ password = config ['keycloak_api_management_user_password' ])
75
80
76
- # Update user roles for access user management API's
81
+ # Update user roles for access user management APIs
77
82
config ['clientId' ] = "realm-management"
78
83
update_user_roles (config )
79
84
80
85
# Update user roles for SSO
81
86
config ['clientId' ] = "admin-cli"
82
87
update_user_roles (config )
83
- # If keycloak is returning the error realm does exists
88
+ # If Keycloak is returning the error realm does exist
84
89
except Exception as e :
85
90
if "409" in str (e ):
86
- print "Skipping error: " + str (e )
91
+ print ( "Skipping error: " + str (e ) )
87
92
else :
88
- raise
89
-
93
+ raise
0 commit comments