组未进入 keycloak 23.0.0 中的 jwt 令牌

问题描述 投票:0回答:2

我使用的是Keycloak 23.0.0版本。我正在尝试配置默认客户端范围以在 JWT 令牌中启用用户组。我正在使用直接授权流程来生成访问令牌。我已经查看了 Stack Overflow 和 Keycloak 社区,但我的问题仍未解决。我已附上我的客户范围和组成员映射器的屏幕截图。任何快速帮助将不胜感激。 我还仔细检查了我的用户组和用户,所有配置似乎都很好。

这是我当前的 jwt 令牌

 alg: "RS256",
 typ: "JWT",
 kid: "vL8kIqWQFfX6oj-gN64xZibBqQuV3JzXqKkwGp5KU3Y"
}.
{
 exp: 1692262142,
 iat: 1692258542,
 jti: "32620dd7-3dc9-464f-af49-153ba3d389d0",
 iss: "https://example.com/realms/domain_acl",
 aud: "account",
 sub: "46e82311-a784-4c2f-b1ef-057ca127f18b",
 typ: "Bearer",
 azp: "api-client",
 session_state: "e9fbc2b8-b548-423a-8f5a-8469c0a92eb5",
 acr: "1",
 realm_access: {
  roles: [
  "******",
  "*******"
  ]
 },
 resource_access: {
  account: {
   roles: [
    "manage-account",
    "manage-account-links",
    "view-profile"
   ]
  }
 },
 scope: "profile email",
 sid: "e9fbc2b8-b548-423a-8f5a-8469c0a92eb5",
 email_verified: false,
 name: "domain ACl",
 preferred_username: "dev",
 given_name: "domain ACl",
 email: "[email protected]"
}.
[signature]
jwt keycloak usergroups
2个回答
1
投票

概述

我在Keycloak V22.0.1中测试过

步骤1

在您的领域创建群组

步骤2

加入群组成为用户

步骤3

你做错地方了

Client scopes

您应该选择

profile
并使用
Group Membership

进行映射

步骤4

获取用户访问令牌并解码后显示

JWT

另存为

get-token.js
文件名。

const axios = require('axios')
const decode = require('jwt-decode')

const getUserToken = async (user_name, password) => {
    try {
        const resp = await axios.post(
            url = 'http://localhost:8080/realms/domain_acl/protocol/openid-connect/token',
            data = new URLSearchParams({
                'client_id': 'admin-cli',
                'username': user_name,
                'password': password,
                'grant_type': 'password'
            })
        )
        return resp.data.access_token
    } catch (err) {
        // Handle Error Here
        console.error(err);
    }
}

(async () => {
    const user_token = await getUserToken('user1', '1234')
    console.log('user_token JWT: ' + JSON.stringify(decode(user_token), null, 4))
})()

安装依赖项

npm install axios jwt-decode

运行它

node get-token.js

结果


0
投票

干得好,我也遇到同样的问题,谢谢!

© www.soinside.com 2019 - 2024. All rights reserved.