Python Keycloak 获取用户的角色和组

sud*_*shu 1 python keycloak

使用Key Cloak创建组并为组分配角色。然后创建用户并将用户分配到特定组。

为了在我的应用程序中访问所有这些,我使用Python-Keycloak

github doc 中所述,使用以下代码访问用户信息。

from keycloak import KeycloakOpenID

keycloak_openid = KeycloakOpenID(server_url="http://localhost:8080/auth/",
                    client_id="account",
                    realm_name="demo",
                    client_secret_key="my_secret_key")

config_well_know = keycloak_openid.well_know()

token = keycloak_openid.token("username", "password")
userinfo = keycloak_openid.userinfo(token['access_token'])
Run Code Online (Sandbox Code Playgroud)

获取以下用户信息

{
    'family_name': 'Lastname', 
    'preferred_username': 'user_name', 
    'sub': 'some_key', 
    'given_name': 'Fistname', 
    'name': 'Firstname Lastname', 
    'email': 'email@example.com'
}
Run Code Online (Sandbox Code Playgroud)

如何访问用户的组和角色信息。

Vas*_*pov 8

  1. 转到 Keycloak,选择您的客户端 -> Mapper -> Create。
  2. 在映射器类型列表中选择“组成员身份”。
  3. 在令牌声明名称字段中指定所需的用户信息属性名称,例如“组”。
  4. 在“名称”字段中指定您想要的映射器名称,然后单击“保存”。
  5. 再次尝试使用您的应用程序向 Keycloak 进行身份验证。用户组现在应该在 userinfo JSON 中可见。

  • 这应该是选定的答案。其中最干净的。 (2认同)

小智 5

您需要在同一个库(python-keycloak)中使用“KeycloakAdmin”类:

from keycloak import KeycloakAdmin

admin = KeycloakAdmin(server_url='https://server-url',
                      username='username',
                      password='password',
                      realm_name='realm',
                      verify=True)

user_groups = admin.get_user_groups(user_id="user-id")
Run Code Online (Sandbox Code Playgroud)

要使用 KeycloakAdmin,您需要一个有权访问“admin-cli”的用户。