узел oidc-провайдера (для keycloak) - PullRequest
0 голосов
/ 09 мая 2019

Я пытаюсь использовать приложение oidc-провайдера для базового узла в качестве провайдера OIDC для моего сервера keycloak.

Keycloak правильно ссылается на страницу входа в мое приложение. После ввода имени пользователя и пароля меня снова переводят обратно в брелок.

Однако, Keycloak чем говорит "Неожиданная ошибка при аутентификации с поставщиком удостоверений".


РЕДАКТИРОВАТЬ: я отрегулировал уровень журнала keycloak, и теперь я вижу следующую ошибку:

Не удалось сделать провайдер идентификации oauth обратным вызовом: org.keycloak.broker.provider.IdentityBrokerException: Нет access_token с сервера.


Мое приложение выглядит так:

const express = require('express');
const Provider = require('oidc-provider');

const app = express();

const clients = [
  {
    client_id: 'my_keycloak_client',
    client_secret: "<someKey>",
    grant_types: ['authorization_code'],
    response_types: ['code'],
    redirect_uris: ['http://localhost:8080/auth/realms/master/broker/oidc/endpoint'],
    token_endpoint_auth_method: 'none'
  }
];

const oidc = new Provider('http://localhost:3001', {
    async findById(ctx, id) {
      return {
          accountId: id,
          async claims() { return { sub: id }; },
      };
    }
});

oidc.initialize({
  clients: clients,
  keystore: {
    keys: [
        {
          kty:"RSA",
          kid: "zid-auth key",
          use: "sig",
          p:"<someKey>",
          q:"<someKey>",
          d:"<someKey>",
          e:"AQAB",
          qi:"<someKey>",
          dp:"<someKey>",
          dq:"<someKey>",
          n:"<someKey>"
      }
    ]
  }
}).then(function () {
    app.use('/', oidc.callback);
    app.listen(3001);
});

1 Ответ

1 голос
/ 09 мая 2019

Вы должны настроить token_endpoint_auth_method на правильное значение метода, которое фактически использует keycloak. oidc-provider не сможет выполнить аутентификацию клиента, если для клиента будет предоставлен секрет с методом, установленным на none.

...