Я знаю, что этот вопрос уже решен, но я недостаточно уверен в своем умении nginx, чтобы решить эту проблему:
Мое приложение и keycloak находятся на доменах https.Когда я пытаюсь войти в систему из своего приложения, перенаправление находится не в https:
https://keycloack.mydomain.com/auth/realms/skilltrock/protocol/openid-connect/auth?scope=openid+email&redirect_uri=http%3A%2F%2Fskilltrock.mydomain.com%2Foidc_callback&response_type=code&client_id=flask_api&access_type=offline&openid.realm=skilltrock&state=eyJjc3JmX3Rva2VuIjogImNBNXBjcHdMOWtOcHcxMUZCLWV3LXlnQW5wSjlLVmFkIiwgImRlc3RpbmF0aW9uIjogImV5SmhiR2NpT2lKSVV6VXhNaUo5LkltaDBkSEE2THk5emEybHNiSFJ5YjJOckxuZGhibTVoYm05emRYVnlkWE11WTI5dEwzQnlhWFpoZEdVaS5Tek9aVHNvRmxQVW0tcFBoXzlPaGotc3lRWW9BUWxKLUFzZU1tVXU4dGk3ekNUdWQySjNMUUlGbkRBekhXM2tqRFF1NDgtMS1PTHpJNThqSGFST2RRUSJ9
Перенаправление происходит в http вместо https.У меня Nginx в качестве обратного прокси-сервера, и я знаю, что проблема в том, что здесь есть проблема, связанная с этим.Но я не понимаю, как автор решил проблему (мне не очень хорошо с Nginx)
keycloak перенаправляет URL-адреса на http вместо https
Вотмоя конфигурация nginx для скилла поддоменов (который является внешним интерфейсом):
server {
server_name skilltrock.mydomain.com;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
location / {
proxy_pass http://0.0.0.0:8080;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# enable this if and only if you use HTTPS
proxy_set_header X-Forwarded-Proto https;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/mydomain.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
А другой для ключа субдомена
server {
server_name keycloack.mydomain.com;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
location / {
proxy_pass http://0.0.0.0:9000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Port 443;
proxy_buffer_size 64k;
proxy_buffers 8 64k;
proxy_busy_buffers_size 64k;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/mydomain.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/mydomain.com/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
Моя проблема в том, что я не знаю,неверная конфигурация для ключа субдомена или для навыка субдомена.
Мое веб-приложение работает локально, даже если оно указывает на мой URL-адрес https-ключа.Так что я предполагаю, что это плохая конфета Nginx моего интерфейса.
Заранее спасибо
edit
На данный момент я исправил свою проблему, добавив http://skilltrock.mydomaine.com (обратите внимание на часть http) в ValidПеренаправить URI со страницы клиента администратора ключей.Затем Nginx перенаправляет http в часть https.Но я не уверен, что это хорошая идея - позволить такому же ключу перенаправлять.Это угроза безопасности?