首页 > 解决方案 > 如何通过 keycloak 服务帐户登录?

问题描述

我不知道如何准备 POST 命令以使用服务帐户访问 keycloak。

我正在使用 nodejs 访问干净的 keycloak 4.8.1 服务器并尝试了一些 POST 配置,但无法通过服务帐户成功登录。

我很难尝试通过服务帐户简单地登录到客户。我尝试了一些配置,但从未成功登录。我尝试的最后一个代码是这样的:

function serviceAccountAuthenticate (client) {
  return function login (realmName, secret) {
    const clientSecret = `procempa-admin:${secret}`;
    const basicToken = `Basic: ${btoa(clientSecret)}`;
    return new Promise((resolve, reject) => {
      const req = {
        form: {'grant_type': 'client_credentials'},
        authorization: basicToken,
        'Content-Type': 'application/x-www-form-urlencoded',
      };
      const url = `${client.baseUrl}/realms/${realmName}/protocol/openid-connect/token`;
      request.post(url, req, (err, resp, body) => {
        if (err) {
          return reject(err);
        }

        // Check that the status cod
        if (resp.statusCode !== 200) {
          return reject(body);
        }

        return resolve(body);
      });
    });
  };
}

结果是这样的悲伤:

{ form: { grant_type: 'client_credentials' },
  authorization: 'Basic: cHJvY2VtcGEtYWRtaW46YzZmZmUxNzUtNDgyZS00NjMxLWE5YjEtMTBjNWIyNjZlYzZi',
  'Content-Type': 'application/x-www-form-urlencoded' }
Error {"error":"unauthorized_client","error_description":"INVALID_CREDENTIALS: Invalid client credentials"}

标签: node.jskeycloakservice-accounts

解决方案


推荐阅读