在第一次登录时将IDC中的客户特定角色自动添加到IDP中,并使用keycloak作为身份代理
问题描述:
因此,我使用Keycloak 3.2.1并将Google添加为社交登录提供程序。身份验证到目前为止效果很好现在我尝试尝试(基于角色的)授权。在第一次登录时将IDC中的客户特定角色自动添加到IDP中,并使用keycloak作为身份代理
所以我登录(使用js-adapter)并查看了令牌,但没有映射(如名称或角色)。 jwt.io只是告诉我:
{
"jti": "8a3584e9-678d-4d5c-b1a1-f5a795d49ecb",
"exp": 1507886130,
"nbf": 0,
"iat": 1507885830,
"iss": "http://localhost:8080/auth/realms/social-auth",
"aud": "product-app",
"sub": "7bd7197c-f9af-4b54-b052-993e52467be1",
"typ": "Bearer",
"azp": "product-app",
"nonce": "87cd2e86-4f26-4371-9c08-9401dad85e45",
"auth_time": 1507885830,
"session_state": "0102a459-48f8-4b03-9004-7e1efb125f65",
"acr": "1",
"allowed-origins": [
"http://localhost:8088"
],
"resource_access": {}
}
和keycloak.resourceAccess
js适配器的对象是空的。现在,我在管理控制台中看到用户,并且可以手动将客户角色添加到他。然后,按照预期,它们将作为关键产品应用的数组显示在.resourceAccess中。不过,我想在首次登录时自动执行此操作。
Like:“用户使用social-login-provider登录product-app。登录时,我会自动将角色附加到他和他的令牌,并将它们返回到js-adapter的resourceAccess中。
因此,对于谷歌作为身份提供者我激活了“第一个经纪人登录” - 在管理员用户界面流,但我没有看到任何选择像“添加clientroles x,y,...到每个用户映射首次登录时从身份提供商处获得“。以某种方式可以做到这一点吗?遗憾的是,在文档或者tuts和vids中没有发现任何东西。
答
在Keycloak的管理控制台下的菜单项“角色”中,您会看到一个“默认角色”选项卡。您可以在其中选择要自动分配给新用户的全局角色和/或客户端特定角色。