Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Keycloak fastapi user registry

Tags:

fastapi

So I was testing a way to add more users to keycloak and I found this way:

keycloak_connection = KeycloakOpenIDConnection(
                        server_url="http://localhost:8080/*",
                        username='test',
                        password='1234',
                        realm_name="test_admin",
                        client_id="test_admin_user",
                        client_secret_key="1111111111111",
                        verify=True)

keycloak_admin = KeycloakAdmin(connection=keycloak_connection)

# Add user
new_user = keycloak_admin.create_user({"email": "test_email",
                                       "username": "alias",
                                       "enabled": True,
                                       "firstName": "top",
                                       "lastName": "top1"})

But then when I try this with keycloak I see this error:

keycloak.exceptions.KeycloakPostError: 403: b'{"error":"unknown_error","error_description":"For more on this error consult the server log at the debug level."}'
like image 393
rainbow12 Avatar asked May 02 '26 01:05

rainbow12


1 Answers

You need to use 'admin-cli' client and user has realm-management manage-users role.

enter image description here

launching Keycloak

In your other question here

Demo code

Save as create-user.py

from keycloak import KeycloakOpenIDConnection, KeycloakAdmin

keycloak_connection = KeycloakOpenIDConnection(
                        server_url="http://localhost:8180",
                        username='test',
                        password='1234',
                        realm_name="test_admin",
                        user_realm_name="test_admin",
                        client_id="admin-cli",
                        verify=True
)
keycloak_admin = KeycloakAdmin(connection=keycloak_connection)

# Add user
users = keycloak_admin.get_users()

isAlias = False
for user in users:
  print("user:", user['username'])
  if (user['username'] == "alias"):
    isAlias = True

if (not isAlias):
    new_user = keycloak_admin.create_user({
        "email": "[email protected]",
        "username": "alias",
        "enabled": True,
        "emailVerified": True,
        "firstName": "top",
        "lastName": "top1"
        })
    print("alias registered")

Result

enter image description here

enter image description here

like image 59
Bench Vue Avatar answered May 11 '26 17:05

Bench Vue