Получение неверного параметра: redirect_uri пытается выполнить аутентификацию NODE.JS с помощью KeyCloak

Я использую Node.JS (экспресс) и NPM с именем keycloak-connect для подключения. на сервер keycloak.
Когда я реализую механизм по умолчанию, как описано, для защиты маршрута:

app.get( '/about', keycloak.protect(), function(req,resp) {
    resp.send( 'Page: ' + req.params.page + '<br><a href="/logout">logout</a>');
} );

Я получаю ссылку на keycloak, но со следующей ошибкой: "Недопустимый параметр: redirect_uri"

Моя строка запроса: (xx для демонстрации)
https://xx.xx.xx.xx:8443/auth/realms/master/protocol/openid-connect/auth?client_id=account&state=aa11b27a-8a0b-4a3b-89dc-cb8a303dbde8&redirect_uri=http%3A%2F%2Flocalhost%3A3002%2Fabout%3Fauth_callback%3D1&response_type=code

Мой keycloak.json: (xx для демонстрации)

{
  "realm": "master",
  "realm-public-key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwS00kUaH6OoERNSkFUwxEBxx2SsqmHu9oVQiPs6nlP9fNQm0cK2lpNPphbLzooZL6kivaC4VzXg20F3zY7jRDc4U/XHgXjZVZUXxJ0NeCI5ESDo00EV9xh9XL3xvXslmG0YLWpywtQSYc+XcGDkz87edokbHQIIlQc2sgoVKIKpajZyrI5wnyMhL8JSk+Mdo2T9DeNnZxPkauiKBwWFJReBO51gsoZ49cbD39FRa8pLi8W0TtXoESIf/eGUSdc3revVFR7cjzHUzxF0p0WrLsTA1aBCLkt8yhnq88NqcKsW5mkxRmhLdw20ODTdsmRtm68rjtusMwifo/dZLJ9v5eQIDAQAB",
  "auth-server-url": "https://xx.xx.xx.xx:8443/auth",
  "ssl-required": "external",
  "resource": "account",
  "credentials": {
    "secret": "9140d4e6-ed05-4899-a3c0-a9cf94ab407d"
  },
  "use-resource-role-mappings": true
}

конфигурация маскировки ключей:

введите описание изображения здесь

введите описание изображения здесь


person Gal Margalit    schedule 09.05.2016    source источник


Ответы (2)


Я предполагаю, что вы добавили порт к своим клиентским URL-адресам на вкладке настроек клиента.

e.g.

root url: https://demo.server.biz:443/cxf

просто удали порт

root url: https://demo.server.biz/cxf

то же самое касается Valid Redirect URIs и Web Origins

1 обновление

введите здесь описание изображения

2 Обновите свой URL-адрес

введите здесь описание изображения

person Christian    schedule 09.05.2016
comment
У меня не было портов, только значения по умолчанию, я обновлю свой вопрос, чтобы он содержал скриншот из keycloak. Я также пытаюсь добавить localhost в эти поля. - person Gal Margalit; 10.05.2016
comment
Является ли localhost URL-адресом, который вы пытались защитить? Если нет, добавьте URL-адрес, который вы пытаетесь защитить. Я также расширил свой ответ скриншотом. - person Christian; 10.05.2016
comment
В этом случае вам нужно либо добавить /about, либо вам нужен подстановочный знак (*). Смотрите прикрепленный скриншот. - person Christian; 10.05.2016
comment
спасибо, я тоже пробовал подстановочный знак раньше, и я получаю тот же результат - person Gal Margalit; 10.05.2016
comment
Мне просто любопытно, вы применили конфигурацию, как я сделал во втором примере? Вы используете cxf или resteasy? - person Christian; 10.05.2016
comment
Я попробую второй пример. Во всяком случае, теперь я уверен, что предостережение связано с шифрованием ключей, а не с Node.JS, что на данный момент является для меня приемлемым ответом, поэтому большое спасибо за вашу помощь! - person Gal Margalit; 10.05.2016
comment
Решите мою проблему. Большое спасибо! - person Celso Agra; 26.10.2016

Я не знаю, будете ли вы продолжать сомневаться, но мне пришлось настроить сервер узла с вызовами https следующим образом:

var fs = require('fs');
var https = require('https');
.....
const HOST = 'your_site.com';
const PORT = process.env.PORT || 3001;

const key = fs.readFileSync('./certs/private.pem');
const cert = fs.readFileSync('./certs/public.pem');
const https_options = {
    key: key,
    cert: cert
};
var serverKeycloak = https.createServer(https_options, appKeyCloak);
serverKeycloak.listen(PORT, HOST);
...

затем адаптер автоматически отправляет на keycloak https

person Felipe Jacobs Osorio    schedule 27.06.2020