edge:: Enables communication through HTTP between the proxy and Keycloak.
This mode is suitable for deployments with a highly secure internal network where the reverse proxy keeps a secure connection (HTTP over TLS) with clients while communicating with Keycloak using HTTP.
reencrypt:: Requires communication through HTTPS between the proxy and Keycloak.
This mode is suitable for deployments where internal communication between the reverse proxy and Keycloak should also be protected.
Different keys and certificates are used on the reverse proxy as well as on Keycloak.
passthrough:: Enables communication through HTTP or HTTPS between the proxy and Keycloak.
This mode is suitable for deployments where the reverse proxy is not terminating TLS.
The proxy instead is forwarding requests to the Keycloak server so that secure connections between the server and clients are based on the keys and certificates used by the Keycloak server.
Some Keycloak features rely on the assumption that the remote address of the HTTP request connecting to Keycloak is the real IP address of the clients machine.
When you have a reverse proxy or loadbalancer in front of Keycloak, this might not be the case, so please make sure your reverse proxy is configured correctly by performing these actions:
Take extra precautions to ensure that the X-Forwarded-For header is set by your reverse proxy.
If this header is incorrectly configured, rogue clients can set this header and trick Keycloak into thinking the client is connected from a different IP address than the actual address.
This precaution can more be critical if you do any deny or allow listing of IP addresses.
When the proxy is configured as a TLS termination proxy the client certificate information can be forwarded to the server through specific HTTP request headers and then used to authenticate
clients. You are able to configure how the server is going to retrieve client certificate information depending on the proxy you are using.
The server supports some of the most commons TLS termination proxies such as:
|===
|Proxy|Provider
|Apache HTTP Server
|apache
|HAProxy
|haproxy
|NGINX
|nginx
|===
To configure how client certificates are retrieved from the requests you need to: