Я пытаюсь реализовать клиентское приложение Node.js, аутентифицирующееся по Keycloak, и использующее внешний IDP, используя keycloak-nodejs-connector.Я следил за документацией, расположенной здесь для ее использования.
Однако после аутентификации клиентское приложение выдает ошибку: «Невозможно обменять код для предоставления в режиме только канала-носителя».Это сбивает с толку меня, потому что клиент не настроен для режима только канала-носителя, он настроен для конфиденциального режима.
Клиентское приложение успешно перенаправляет меня на внешний IDP, где я могу войти в систему. Если я смотрю в консоли администратора Keycloak, я также вижу активный сеанс для себя после входа в систему. Однако клиентприложение по-прежнему выдает ошибку.
Вот моя конфигурация клиента, извлеченная из консоли администратора Keycloak:
{
"realm": "master",
"auth-server-url": "http://localhost:8080/auth",
"ssl-required": "external",
"resource": "local",
"verify-token-audience": true,
"credentials": {
"secret": "redacted"
},
"use-resource-role-mappings": true,
"confidential-port": 0
}
Вот реализация в моем файле app.js для узла:
var Keycloak = require('keycloak-connect');
let keycloakMiddleware = new Keycloak({idpHint: 'SSO'});
app.use( keycloakMiddleware.middleware() );
app.get( '/', keycloakMiddleware.protect(), complaintHandler);
Iфайл keycloak.json находится в том же каталоге, что и app.js, и он собирает данные конфигурации клиента, указанные выше.