Ошибка смешанного содержимого из-за перенаправления входа по умолчанию в Keycloak - PullRequest
0 голосов
/ 07 марта 2019

НУЖНА ИНФОРМАЦИЯ:

Я использую Keycloak (версия Docker) для проекта Spring.

(Клиентская сторона этого проекта - React и связь между клиентом исерверная часть предоставляется службами REST.)

Клиентская сторона защищена и использует схему «https».

Это моя конфигурация Spring:

  keycloak:
     auth-server-url: https://sso-ssoha.b9ad.pro-us-east-1.openshiftapps.com/auth
     realm: master
     resource: clientname
     public-client: true

Корень проблемы:

Когда я щелкаю ссылку у клиента, он обычно вызывает сервис Spring.Но перед этим он перенаправляет на страницу входа по умолчанию Keycloak с добавлением этого пути sso / login к текущему URL-адресу «https», но изменяя схему на «http».

Но, перенаправление с https на http создает такую ​​проблему:

Mixed Content: The page at 'https://www.helpful.army/contents/Problem' was loaded over HTTPS, but requested an insecure resource 'http://serviceha-helpfularmy.b9ad.pro-us-east-1.openshiftapps.com/sso/login'. This request has been blocked; the content must be served over HTTPS.

1 Ответ

0 голосов
/ 08 марта 2019

Я решил эту и другие подобные проблемы с помощью следующих шагов:

(1) Сторона внешнего интерфейса:

Знаете, www.helpful.army - это образовательный проект с интерфейсом, работающим на React, и он находится на сервере NGINX.Итак, я добавил конфигурацию сервера NGINX по умолчанию с обязательными заголовками:

location / {
        try_files $uri /index.html;
        proxy_set_header X-Forwarded-Proto $scheme;
        **add_header Access-Control-Allow-Origin *;**

    }

(2) Внутренняя сторона:

Я создал другой клиент наKeycloak только для бэкенда Spring-Boot и установлен как «только для носителя».

keycloak:
 auth-server-url: https://sso-ssoha.b9ad.pro-us-east-1.openshiftapps.com/auth
 realm: master
 resource: serviceha
 bearer-only: true
 ssl-required: "external"
 confidential-port: 0
 verify-token-audience: true

Я также добавляю эту конфигурацию для application.yml:

 server:
    port: 8443
    remote_ip_header: x-forwarded-for
    protocol_header: x-forwarded-proto
    use-forward-headers: true

(3) Я изменил все порты с интерфейса на сервер как 8443

...