Python keyclope获取角色和组

2024-04-29 03:28:08 发布

您现在位置:Python中文网/ 问答频道 /正文

使用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'])

正在获取以下用户信息

^{pr2}$

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


Tags: key用户clienttoken信息角色secretopenid
3条回答

为我的领域创建了一个管理员用户。像这样继承这个类

from keycloak import KeycloakAdmin
from keycloak.exceptions import raise_error_from_response, KeycloakGetError

class CustomKeycloakAdmin(KeycloakAdmin):
    def get_user_group(self,user_name):
        USER_GROUP_URL = "admin/realms/{realm-name}/users/{user-id}/groups"
        params_path = {"user-id":self.get_user_id(user_name),"realm-name": self.realm_name}
        data_raw = self.connection.raw_get(USER_GROUP_URL.format(**params_path))
        return raise_error_from_response(data_raw, KeycloakGetError)

if __name__=="__main__":
    keycloak_admin = CustomKeycloakAdmin(server_url="http://localhost:8080/auth/",username='admin_user',password='admin_password',realm_name="my_realm",verify=True)
    user_group = keycloak_admin.get_user_group("user_name")
  1. 转到KeyLoop,选择您的客户端->映射器->创建。在
  2. 在映射器类型列表中,选择“组成员资格”。在
  3. 在令牌声明名称字段中,指定所需的userinfo属性名称,例如“Groups”。在
  4. 在“名称”字段中,为映射器名称指定所需的任何内容,然后单击“保存”。在
  5. 请尝试使用你的应用再次验证keyclope。用户组现在应该是 在userinfo JSON中可见。在

您需要在同一个库(python keydochapt)中使用“key斗篷admin”类:

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")

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

相关问题 更多 >