Alt*_*ğlu 10 spring openshift keycloak
所需信息:
我在 Spring 项目后面使用 Keycloak(Docker 版本)。
(该项目的客户端是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
Run Code Online (Sandbox Code Playgroud)
问题的根源:
当我点击客户端的链接时,它会正常调用 Spring 服务。但在此之前,它会重定向到 Keycloak 的默认登录页面,并将此路径sso/login添加到当前的“https”url,但将方案更改为“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.
Run Code Online (Sandbox Code Playgroud)
看来我们需要让 keycloak Web 服务器知道我们正在使用代理,https://serverfault.com/questions/1000567/keycloak-blank-page-behind-nginx-reverse-proxy,在设置 PROXY_ADDRESS_FORWARDING 变量后,它就可以工作。
我已经通过以下步骤解决了这个问题和类似的问题:
(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 *;**
}
Run Code Online (Sandbox Code Playgroud)
(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
Run Code Online (Sandbox Code Playgroud)
我还为 application.yml 添加了此配置:
server:
port: 8443
remote_ip_header: x-forwarded-for
protocol_header: x-forwarded-proto
use-forward-headers: true
Run Code Online (Sandbox Code Playgroud)
(3)我已将所有端口从接口更改为后端为8443
| 归档时间: |
|
| 查看次数: |
17101 次 |
| 最近记录: |