因此,我使用 Keycloak 3.2.1 并将 google 添加为社交登录提供程序。到目前为止,身份验证工作正常。现在我尝试尝试(基于角色的)授权。
所以我登录(使用 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 适配器的 Object 是空的。现在,我在管理控制台中看到了该用户,并且可以手动向他添加客户端角色。然后它们按预期显示在 .resourceAccess 中作为关键产品应用程序的数组。不过,我想在第一次登录时自动执行此操作。
比如:“用户使用 social-login-provider 登录产品应用程序。登录时,我会自动将角色附加到他和他的令牌,并在 js-adapter 的 resourceAccess 中返回它们”。
因此,对于作为身份提供者的谷歌,我激活了“第一个代理登录”-在管理 ui 中流动,但我看不到任何选项可以说“将客户端角色 x,y,... 添加到从身份提供者映射的每个用户首次登录”。有可能以某种方式做到这一点吗?遗憾的是,在文档或 tuts 和 vids 中还没有找到任何东西。