有什么方法可以使用node创建在keycloak中分配了角色的用户?

时间:2020-11-09 12:42:41

标签: javascript node.js keycloak keycloak-rest-api

我正在尝试将所有用户上载到keycloak用户列表的代码,并且效果很好。我使用了一个excel文件来读取然后将每一行推送到keycloak字段中,但是我正在考虑同时向每个用户添加角色。当我尝试这段代码时,它说角色字段在用户中不存在,并给我错误

这是我的代码

从Excel读取并存储在数组中

let path = 'http://localhost:8080/auth/admin/realms/msportal';
let _userTobeCreated = ReadFromExcel('./uploads/employees-roles.xlsx');

function ReadFromExcel(filename) {
    let userTobeCreated = []

    xlsxFile(filename).then((rows) => {
        rows.forEach(row => {
            let userObject = {
                username: row[0],
                lastName: row[1],
                firstName: row[2],
                email: row[3],
                roles: row[4].split(',')

            }
            userTobeCreated.push(userObject);

        });
    })
    return userTobeCreated;

}

创建功能

function CreateKCBulkUser(user) {
  let urlCreateUser = `${path}/users`;
  return axios({

    method: 'post',
    url: urlCreateUser,
    data: JSON.stringify(user),
    headers: {
      'content-type': 'application/json',
      'Authorization': `Bearer ${kc_accessToken}`
    }

  })
    .then(function (response) {
      console.log("User created!!");
      _userlists = response.data;

    })
    .catch(function (error) {
      console.log(error);
    });
}

呼叫功能

   _usersToBeCreated.forEach((v)=>{
        CreateKCBulkUser(v);
      })

excel文件

enter image description here

1 个答案:

答案 0 :(得分:0)

角色不是user实体的一部分。首先,您必须创建role实体,然后才需要创建role-mapping。参见API doc

顺便说一句:role的定义很模糊,因为Keycloak具有真实的角色/客户角色+我将使用keycloak-nodejs-admin-client而不是普通的axios请求。