AWS EC2 Ubuntu 18.04 Keycloak 5.0.0 Nginx 1.15.8
我正在尝试基于具有Keycloak集成(openid-connect)的Wildfly的应用程序(而不是我的开发),并且知道与我的任务相关的帖子,但是我认为这些问题并未涵盖我的问题。帖子。
就我而言,一切正常,一个应用程序和一个Nginx反向代理后面的keycloak服务器。我无法理解的是,根据this Keycloak文档,有必要在keycloak standalone.xml中进行以下更改(对于我而言):
Scaffold(
resizeToAvoidBottomInset: false,
...
);
如果我正确理解,则此设置假定应用程序将身份验证请求发送到http-listener,并将其重定向到proxy-https。还不清楚代理应该在哪里发送其proxy_pass。
但是无论如何,就我而言,应用程序通过以下方式发送身份验证请求:
<http-listener name="default" socket-binding="http" proxy-address-forwarding="true" redirect-socket="proxy-https"/>
<socket-binding name="proxy-https" port="443"/>
我刚刚将Keycloak stanalone.xml中的https端口更改为8943,并将端口8843分配给了位置为 <realm>MyRealm</realm>
<resource>MyRealm</resource>
<public-client>true</public-client>
<auth-server-url>https://<host name>:8843/auth/</auth-server-url>
<ssl-required>external</ssl-required>
的Nginx服务器,如以下片段所示:
/auth/
它可以工作,但是考虑到上面提到的Keycloak文章,我不确定是将Keycloak服务器放置在Nginx反向代理后面的正确方法。基本上,这不是问题,不是问题,而是为什么起作用。
如果一些Keycloak专家可以向我保证我的设置可行,那么我将不胜感激。
我的第二个问题: 如果用户决定打开,是否可以仅限制对应用程序领域的外部访问:
server {
listen 192.168.80.40:8843 ssl http2 default_server;
server_name <host name>;
location /auth/ {
proxy_http_version 1.1;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port 8843;
add_header Strict-Transport-Security "max-age=15552000";
proxy_set_header X-NginX-Proxy true;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass https://192.168.80.40:8943/auth/;
proxy_redirect off;
}
}
我想阻止任何外部访问主领域登录屏幕。
当我在Nginx位置使用https://<host name>:<port>/auth
时,它的确阻止了用户访问主领域登录屏幕,但是它仅显示了一些丑陋的应用程序领域登录屏幕,该屏幕实际上有效,但看起来并不专业。
谢谢。
更新:
到目前为止,我发现的第二个问题的唯一解决方案是:
/auth/realms/MyRealm/
}
与根位置类似:
location /auth/realms/master/ {
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_http_version 1.1;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port 8843;
add_header Strict-Transport-Security "max-age=15552000";
proxy_set_header X-NginX-Proxy true;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
add_header Pragma "no-cache";
proxy_pass https://192.168.80.40:8943/auth/realms/master/;
proxy_redirect off;
allow X.X.X.X;
deny all;
位置 location / {
*
*
*
proxy_pass https://192.168.80.40:8943$request_uri;
proxy_redirect off;
allow X.X.X.X;
deny all;
}
不变。
/auth/
仍会打开https://<host name>:<port>/auth
屏幕,但禁止访问"Welcome to Keycloak"
。至少,我现在有一个用于应用程序领域的常规登录屏幕,并且流氓Internet人士从该“欢迎”屏幕上走了不到。
我的第一个问题仍然需要帮助。