我正试图用nginx在反向代理后面设置一个keycloak实例,我几乎做到了。
我的(部分)码头-组成:
version: '3.4'
services:
[...]
keycloak:
image: jboss/keycloak
environment:
- DB_VENDOR=[vendor]
- DB_USER=[user]
- DB_PASSWORD=[password]
- DB_ADDR=[dbaddr]
- DB_DATABASE=[dbname]
- KEYCLOAK_USER=[adminuser]
- KEYCLOAK_PASSWORD=[adminpassword]
- KEYCLOAK_IMPORT=/tmp/my-realm.json
- KEYCLOAK_FRONTEND_URL=https://auth.mydomain.blah/auth
- PROXY_ADDRESS_FORWARDING=true
- REDIRECT_SOCKET=proxy-https
[...]我的nginx公司
server {
listen 443 ssl;
server_name auth.mydomain.blah;
ssl_certificate /etc/letsencrypt/live/auth.mydomain.blah/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/auth.mydomain.blah/privkey.pem;
location / {
proxy_pass http://keycloak:8080;
}
}它起作用了,我可以从https://auth.mydomain.blah/auth 访问密钥披风,但是当我看https://auth.mydomain.blah/auth/realms/campi/.well-known/openid-configuration时,我得到了以下信息:
{
"issuer": "https://auth.mydomain.blah/auth/realms/campi",
"authorization_endpoint": "https://auth.mydomain.blah/auth/realms/campi/protocol/openid-connect/auth",
"token_endpoint": "http://keycloak:8080/auth/realms/campi/protocol/openid-connect/token",
"introspection_endpoint": "http://keycloak:8080/auth/realms/campi/protocol/openid-connect/token/introspect",
"userinfo_endpoint": "http://keycloak:8080/auth/realms/campi/protocol/openid-connect/userinfo",
"end_session_endpoint": "https://auth.mydomain.blah/auth/realms/campi/protocol/openid-connect/logout",
"jwks_uri": "http://keycloak:8080/auth/realms/campi/protocol/openid-connect/certs",
"check_session_iframe": "https://auth.mydomain.blah/auth/realms/campi/protocol/openid-connect/login-status-iframe.html",
[...]为什么钥匙斗篷要混合内部和外部uris?我遗漏了什么?
发布于 2021-02-13 13:23:49
您的反向代理/nginx没有正确地转发主机头,因此Keycloak不知道请求使用了哪个主机/协议,并且使用了后端/内部主机名。您需要设置几行proxy_set_header:
server {
listen 443 ssl;
server_name auth.mydomain.blah;
ssl_certificate /etc/letsencrypt/live/auth.mydomain.blah/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/auth.mydomain.blah/privkey.pem;
location / {
proxy_pass http://keycloak:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-Port $server_port;
proxy_set_header X-Forwarded-Proto $scheme;
}
}发布于 2021-02-12 20:43:22
我们公司也有同样的“问题”。
在内部,可以通过keycloak-admin.instdomain.com访问它,但对于我们的正常用户来说,它们可以在外部访问keycloak.externaldomain.com。
如果我在内部加载.著名的/openid-配置url,它有内部地址,但是使用外部url加载它,它有这个地址。
它没有给我们造成任何问题,只是偶尔向看到差别的工程师解释一下。否则就没问题了。
它似乎密钥斗篷只使用任何领域,它被访问。
https://stackoverflow.com/questions/66176321
复制相似问题