У меня есть этот env:
- nginx в качестве балансировщика нагрузки серверов cas *
- сервер cas (только один для упрощения тестов)
- keycloak
Я обнаружил странную проблему с обратным каналом выхода из Keycloak. Эта функция должна работать следующим образом:
- Пользователь пытается войти в keycloak через cas
- cas показывает форму имени пользователя / пароля
- cas перенаправляет пользователя на страницу учетной записи keycloak
- пользователь нажимает кнопку выхода в keycloak
- keycloak отправляет запрос POST к cas (сервер на сервер)
- keycloak выходит из системы и cas делает выход
- пользователь пытается войдите в keycloak через cas снова
- cas показывает форму имени пользователя / пароля
Работает, если nginx не использует SSL.
CAS не спрашивает имя пользователя / пароль снова, если nginx использует SSL, т.е. пользователь не может войти в систему с другими учетными данными через CAS. Он должен подождать 3 минуты или закрыть браузер для входа в систему с другими учетными данными.
Это как-то связано с nginx кешем? Можно ли изменить это поведение?
Это конфиг моего nginx.
events { }
http {
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwared-For $proxy_add_x_forwarded_for;
proxy_no_cache 1;
proxy_cache_bypass 1;
add_header Last-Modified $date_gmt;
add_header Cache-Control 'no-cache, must-revalidate, proxy-revalidate, max-age=0';
if_modified_since off;
expires -1;
etag off;
upstream backend {
server 192.168.1.108:8443;
}
ssl_certificate C:/nginx-1.17.8/conf/server2.crt;
ssl_certificate_key C:/nginx-1.17.8/conf/server2.key;
server {
listen 80;
location / {
proxy_pass http://backend;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
}
}
server {
listen 443 ssl;
location / {
proxy_pass http://backend;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
}
}
}