Как получить https ссылки после перенаправления с KeyCloak - PullRequest
1 голос
/ 29 мая 2019

У нас есть приложение с весенней загрузкой и мы давно настроили keycloak.Все работало как должно, пока мы не увидели, что некоторые ссылки после перенаправления находятся в http, а не https:

Это то, что я уже пытался решить проблему:

1)

Добавлены следующие свойства:

server.use-forward-headers=true
server.tomcat.internal-proxies=.*
server.tomcat.remote-ip-header=x-forwarded-for
server.tomcat.protocol-header=x-forwarded-proto

Когда я добавил их, поведение как-то изменилось, и клавиатурный шок «сгенерировал» URI с портом 0, добавленным к (внешней) ссылке.Это вызвало ошибку 403.

Чтобы исправить эту проблему, мне пришлось добавить следующую строку в конфигурацию keycloak:

2)

"confidential-port": 443

, которая успешно удалила порт0 по моей ссылке и перенаправил меня, но я все еще получил ошибку 403.

Вот что я вижу в журналах:

ERROR [bootstrap,,,] 1 --- [nio-8080-exec-9] o.k.adapters.OAuthRequestAuthenticator   : Adapter requires SSL. Request: http://example.be/REST/location/sso/login?state=df826bc4-86c1-4af5-b5fb-51f03107c18b&session_state=9ba8e48a-9d81-407f-9cf4-d50308793818&code=ea14f45f-775a-4a28-b94b-8856b7880890.9ba8e48a-9d81-407f-9cf4-d50308793818.915a1b76-9f38-48fe-bed6-7404bd5caf21 

Я тоже много раз пытался, но ничего не давало мнеРезультаты.

Обратите внимание, что в журналах мы видим http, а не https.В моем браузере я захожу на https на панели навигации.

РЕДАКТИРОВАТЬ:

Я отладил в коде и обнаружил следующее:

if (!isRequestSecure() && deployment.getSslRequired().isRequired(facade.getRequest().getRemoteAddr())) {
        log.error("Adapter requires SSL. Request: " + facade.getRequest().getURI());
        return challenge(403, OIDCAuthenticationError.Reason.SSL_REQUIRED, null);
    }

Это где ошибкапроисходит от.! isRequestSecure возвращает true, потому что в моем SimpleHttpFacade для защиты установлено значение false.

...