我正在尝试访问 Keycloak Admin 以使用以下代码获取用户信息。执行任何 GET 命令时出现 403 错误。任何人都可以提供帮助或看到此错误。打印时得到“无”,打印(keycloak_admin1.get_token())。
from keycloak import keycloak_admin
keycloak_admin1 = keycloak_admin.KeycloakAdmin(server_url=endpoint,username=username, password=password,realm_name=realmname,client_id= clientid,client_secret_key=clientsecret,verify= True)
print(keycloak_admin1.realm_name)
print(keycloak_admin1.token)
# User counter
count_users = keycloak_admin1.users_count()
getusers = keycloak_admin1.get_user()
print(count_users)
我最终使用了 Keycloak API,它解决了我的问题。仍然不确定为什么 python.keycloak 包不起作用。因此将此问题标记为已完成。
您似乎同时使用了客户端密码和用户名密码...这是自愿的吗?
另一个不错的图书馆是mantelo。它提供与 python-keycloak 相同的身份验证机制,但仅包装 HTTP 调用(而不是重新实现它们)。这意味着您可以“完全/原始”访问管理 API,但使用 Python 风格的代码。
您的情况:
from mantelo import KeycloakAdmin
# We assume the server is running on localhost:9090
# and the admin user is "admin" with password "admin"
c = KeycloakAdmin.from_username_password(
server_url=endpoint, # e.g. "http://localhost:8080"
realm_name=realm, # e.g. "master"
client_id=client, # e.g. "admin-cli"
username=user,
password=pass,
)
# get number of users
c.users.count.get()
# get the users
c.users.get()
c.users.get()
的响应示例:
[{'id': '8d83ecda-766d-4382-8f3a-4c5ac1962961',
'username': 'constant',
'firstName': 'Jasper',
'lastName': 'Fforde',
'email': '[email protected]',
'emailVerified': True,
'createdTimestamp': 1710273159287,
'enabled': True,
'totp': False,
'disableableCredentialTypes': [],
'requiredActions': [],
'notBefore': 0,
'access': {'manageGroupMembership': True,
'view': True,
'mapRoles': True,
'impersonate': False,
'manage': True}}]