4
3

More than 1 year has passed since last update.

Keycloakをロードバランサの内側に立てる

Posted at

Dockerで検証用のKeycloakがサクッと立てられたのだけれど、これを実際に検証環境で稼働させるためには外部からhttpsでアクセスできるようホストやSSL環境の構成が必要。
SSLはロードバランサーに利用しているBIG-IPで処理しており、iRuleで振り分けを行っている。
Keycloakをロードバランサーの内側で稼働させるには、2つのことが必要なようだ。

HTTPヘッダ X-Forwarded-Proto の挿入

一つはロードバランサーの内側がhttpになるのだが、httpsでの接続が中継されたものであることをHTTPヘッダで伝えること。
iRuleに追加するのは以下のような感じ。

   # add header ssl request
   if { [PROFILE::exists clientssl] == 1 } {
      HTTP::header insert "X-Forwarded-Proto" "https"
   }

http-listenerにproxy-address-forwardingを指定

ロードバランサーの内側ではhttpでの接続になるので、そのままだとレスポンスにhttpでリソースのUrlを返してしまったりする。proxy-address-forwardingを設定することで、中継されているリクエストであることを把握しhttpsでレスポンスするようになる。

standalone.xmlを見てみると、

<http-listener name="default" socket-binding="http" redirect-socket="https" proxy-address-forwarding="${env.PROXY_ADDRESS_FORWARDING:false}" enable-http2="true"/>

proxy-address-forwardingは環境変数を見るようになっていたので、起動オプションに追加で行けそうだ。
docker-composeに書くと、こんな感じ。

version: "3"
services:
  keycloak:
    container_name: keycloak
    image: jboss/keycloak
    environment:
      - KEYCLOAK_USER=admin
      - KEYCLOAK_PASSWORD=admin
      - PROXY_ADDRESS_FORWARDING=true
    ports:
      - "80:8080"
    restart: always

参考URL

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3