У нас есть приложение с весенней загрузкой и мы давно настроили 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.