Keycloak 正在使用带有 nginx 配置的反向代理,以便在 ssl(https) 中可用。现在我已经在 ubuntu 中部署了 .net 核心应用程序。此应用程序位于 http 中,并使用 keycloak 作为 openid 连接进行身份验证。
但是,当应用程序使用 nginx 托管在 https 中时,keycloak 会显示无效的重定向 url 而不是登录页面。Keycloak 登录 url 页面包含带有 http 而不是 https 的 redirect_uri 参数。请帮助解决在反向代理的 nginx 配置文件中完成的配置
server {
listen 443 ssl;
server_name abc.ctech.com;
ssl_certificate /etc/nginx/external/wildcard_ctech_com.pem;
ssl_certificate_key /etc/nginx/external/private.rsa;
location / {
proxy_http_version 1.1;
proxy_set_header Host abc.ctech.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Port 443;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://172.30.5.28:8001;
}
}
#Keycloak Service
server {
listen 443 ssl;
server_name keycloak.ctech.com;
ssl_certificate /etc/nginx/external/wildcard_ctech_com.pem;
ssl_certificate_key /etc/nginx/external/private.rsa;
location = / {
return 301 https://keycloak.ctech.com/auth;
}
location /auth {
proxy_pass http://172.30.5.28:8080/auth;
proxy_http_version 1.1;
proxy_set_header Host keycloak.ctech.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Port 443;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Run Code Online (Sandbox Code Playgroud)
我已经在 docker swarm 模式下与集群 keycloak 斗争了很长时间。 Ubunter 的答案与文档中的相同,但这样做仍然没有解决我的问题。
为了使其与当前的jboss/keycloak:latestdocker 映像一起工作,我必须做:9.0.3的就是使用环境变量KEYCLOAK_FRONTEND_URL。
在添加之前,它仍然不断向主/auth/js/keycloak.js?version=czy98JavaScript 发出 http URL:
...
<!-- Libraries not managed by yarn -->
<script src="/auth/resources/czy98/admin/keycloak/lib/angular/ui-bootstrap-tpls-0.11.0.js"></script>
<script src="/auth/resources/czy98/admin/keycloak/lib/angular/treeview/angular.treeview.js"></script>
<script src="/auth/resources/czy98/admin/keycloak/lib/fileupload/angular-file-upload.min.js"></script>
<script src="/auth/resources/czy98/admin/keycloak/lib/filesaver/FileSaver.js"></script>
<script src="/auth/resources/czy98/admin/keycloak/lib/ui-ace/min/ace.js"></script>
<script src="/auth/resources/czy98/admin/keycloak/lib/ui-ace/ui-ace.min.js"></script>
<script src="http://my.server.name.here/auth/js/keycloak.js?version=czy98" type="text/javascript"
></script>
<script src="/auth/resources/czy98/admin/keycloak/js/app.js" type="text/javascript"></script>
<script src="/auth/resources/czy98/admin/keycloak/js/controllers/realm.js" type="text/javascript"></scr
ipt>
<script src="/auth/resources/czy98/admin/keycloak/js/controllers/clients.js" type="text/javascript"></s
cript>
<script src="/auth/resources/czy98/admin/keycloak/js/controllers/users.js" type="text/javascript"></scr
ipt>
<script src="/auth/resources/czy98/admin/keycloak/js/controllers/groups.js" type="text/javascript"></sc
ript>
<script src="/auth/resources/czy98/admin/keycloak/js/controllers/roles.js" type="text/javascript"></scr
ipt>
<script src="/auth/resources/czy98/admin/keycloak/js/loaders.js" type="text/javascript"></script>
<script src="/auth/resources/czy98/admin/keycloak/js/services.js" type="text/javascript"></script>
...
Run Code Online (Sandbox Code Playgroud)
它还在内联 javascript 中生成 http:
<script type="text/javascript">
var authServerUrl = 'http://my.server.name.here/auth';
var authUrl = 'http://my.server.name.here/auth';
var consoleBaseUrl = '/auth/admin/master/console/';
var resourceUrl = '/auth/resources/czy98/admin/keycloak';
var masterRealm = 'master';
var resourceVersion = 'czy98';
</script>
Run Code Online (Sandbox Code Playgroud)
尽管X-Forwarded-Proto: https和其他要求的事情standalone-ha.xml
我相信您还必须添加一个监听端口 80 (http) 的服务器块,该块将永久 (301) 重定向返回到同一服务器的端口 443 (https) 版本。
类似以下内容...(这两个地方都适用)
server {
listen 80;
server_name example.com;
return 301 https://$server_name$request_uri;
}
Run Code Online (Sandbox Code Playgroud)
因此,您需要在这两个位置添加永久重定向,将(当然)example.com替换为您的实际服务器名称。
请告诉我们,谢谢。
| 归档时间: |
|
| 查看次数: |
7209 次 |
| 最近记录: |