невозможно настроить NGINX приложения vaadin, развернутого в Wildfly, с использованием аутентификации Keycloak - PullRequest
0 голосов
/ 05 октября 2018

Я ищу дни, как настроить nginx для работы с моим приложением, но это почти невозможно.

что я хотел бы сделать

запустить мое приложение, используя nginx (v = 1.14) в качестве обратного прокси.Мое приложение - это веб-приложение, написанное на vaadin (v = 7.6.0) и развернутое с использованием Wildfly (v = 10).Мы используем keycloak для аутентификации (v = 4.5.0).

Проблема

, когда я перехожу на URL своего приложения, меня перенаправляют на keycloak дляаутентификация.Затем я могу пройти аутентификацию и зайти на мою веб-страницу, но затем я получил это сообщение об ошибке в виде баннера:

https://xxx/webuploader/VAADIN/vaadinPush.js?=v=7.6.0 не удалось загрузить.Push не будет работать

Действительно, я не нахожу vaadinPush.js в источнике веб-страницы (хотя я могу найти vaadinBootstrap.js).Но если я скопирую URL и аутентифицируюсь, я получу javascript от vaadin.

то, что я считаю причиной Я думаю, что что-то не так хорошо настроено между keycloak и nginx, что приводит к проблемепроверки подлинности, когда приложение пытается получить vaadinPush.js.

. Другая возможность заключается в том, что vaadinPush.js даже не запрашивается (его нет в консоли (например, 403/404/500 ...)

конфигурация

nginx.conf

#user  nobody;
worker_processes  1;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

map $http_upgrade $connection_upgrade {
    default upgrade;
    '' close;
}

server {
    server_name uploader.xxx.be; 

    listen 443; # HTTPS listening port

        # SSL Certificates for Uploader.hospital.com
        ssl_certificate           ../conf/XXX.crt;
        ssl_certificate_key      ../conf/XXX.key;

        ssl on;
        ssl_session_cache  builtin:1000  shared:SSL:10m;
        ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
        ssl_prefer_server_ciphers on;       

        location / {



            proxy_pass  http://*hostname*:*port*/webuploader/; 


            proxy_set_header Host $host;
            proxy_set_header   X-Real-IP $remote_addr;
            proxy_set_header   X-Scheme $scheme; 
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;


            proxy_set_header        X-Forwarded-Proto $scheme;
            proxy_set_header        X-Forwarded-Host $host;
            proxy_set_header        X-Forwarded-Server $http_host;
            proxy_set_header        X-Forwarded-Port 443; # must match listen port

            proxy_cookie_path /webuploader/ /;
            proxy_set_header Cookie $http_cookie;
        }

        location /webuploader/ {


            proxy_pass  http://*hostname*:*port*/webuploader/;  

            add_header 'Access-Control-Allow-Origin' '*';
            add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
            add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
            add_header 'X-Frame-Options' 'sameorigin';

            proxy_set_header Host $host;
            proxy_set_header   X-Real-IP $remote_addr;
            proxy_set_header   X-Scheme $scheme;
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;

            proxy_set_header        X-Forwarded-Proto $scheme;
            proxy_set_header        X-Forwarded-Host $host;
            proxy_set_header        X-Forwarded-Server $http_host;
            proxy_set_header        X-Forwarded-Port 443;

        }


        location /webuploader/webuploader/ {


            proxy_pass  http://*hostname*:*port*/webuploader/; 

            add_header 'Access-Control-Allow-Origin' '*';
            add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
            add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
            add_header 'X-Frame-Options' 'sameorigin';

            proxy_set_header Host $host;
            proxy_set_header   X-Real-IP $remote_addr;
            proxy_set_header   X-Scheme $scheme;
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;

            proxy_set_header        X-Forwarded-Proto $scheme;
            proxy_set_header        X-Forwarded-Host $host;
            proxy_set_header        X-Forwarded-Server $http_host;
            proxy_set_header        X-Forwarded-Port 443;



        }

         location /webuploader/PUSH {
             proxy_pass http://*hostname*:*port*/webuploader/PUSH;
             proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $connection_upgrade;
            proxy_buffering off;
            proxy_ignore_client_abort off;
            proxy_read_timeout 84600s;
            proxy_send_timeout 84600s;
            break;
         }

    }

    server {
          # Configuration for Keycloak

        server_name auth.XXX.be; #Keycloak External URL 

        listen 443; # HTTPS listening port

        # SSL Certificates for auth.hospital.com
        ssl_certificate           ../conf/XXX.crt;
        ssl_certificate_key      ../conf/XXX.key;

        ssl on;
        ssl_session_cache  builtin:1000  shared:SSL:10m;
        ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
        ssl_prefer_server_ciphers on;           

        location / {
            proxy_pass  http://10.32.1.157:8081/; #Keycloak internal URL 

            add_header 'Access-Control-Allow-Origin' '*';
            add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
            add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
            add_header 'X-Frame-Options' 'sameorigin';

            proxy_set_header Host $host;
            proxy_set_header   X-Real-IP $remote_addr;
            proxy_set_header   X-Scheme $scheme;
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;

            proxy_set_header        X-Forwarded-Proto $scheme;
            proxy_set_header        X-Forwarded-Host $host;
            proxy_set_header        X-Forwarded-Server $http_host;
            proxy_set_header        X-Forwarded-Port 443; # must match listen port

            proxy_cookie_path / /;
            proxy_set_header Cookie $http_cookie;
    }

         location /webuploader/PUSH {
             proxy_pass http://*hostname*:*port*/webuploader/PUSH;
             proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $connection_upgrade;
            proxy_buffering off;
            proxy_ignore_client_abort off;
            proxy_read_timeout 84600s;
            proxy_send_timeout 84600s;
            break;
         }
    }
}

standalone.xml Keycloak

<http-listener name="default" socket-binding="http" enable-http2="true" proxy-address-forwarding="true" redirect-socket="https" />

standalone.xml от Wildfly

<realm name="XXX">
            <auth-server-url>https://auth.XXX.be/auth/</auth-server-url>
            <ssl-required>external</ssl-required>
</realm>


<http-listener name="default" socket-binding="http" enable-http2="true" proxy-address-forwarding="true" redirect-socket="https" />

настройка моего приложения в Keycloak

KeycloakКонфигурация

заранее большое спасибо всем вам :)

...