0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Keycloak server to be placed behind the HTTPS-enabled ALB

Posted at

0. はじめに

KeycloakをApplication Load Balancerの背後に配置して使おうとしたときにはまったのでメモ。

1. 前提

InternetとALBの間はHTTPS化します。
ALBとKeycloakの間はHTTPです。
ですので,適切なドメインをRoute 53のホストゾーンで管理していることが前提です。

このとき,セキュリティグループは以下の通り。

  • ALBのセキュリティグループ:
    • インバウンド 443
  • EC2のセキュリティグループ:
    • インバウンド 8080
    • ソース ALBのセキュリティグループ

リスナーは,
- Protocol:Port HTTPS:443

ターゲットグループは,
- Protocol:Port HTTP:8080

としておきます。これで,外部からは443で来たリクエストが,Keycloakには8080で渡されることになります。

2. docker-compose.yml

docker-compose.yml
services:
  keycloak:
    image: quay.io/keycloak/keycloak:16.1.1
    environment:
      DB_VENDOR: POSTGRES
      DB_ADDR: postgres
      DB_DATABASE: keycloak
      DB_USER: keycloak
      DB_PASSWORD: password
      KEYCLOAK_USER: test
      KEYCLOAK_PASSWORD: test
      KC_HOSTNAME: www.example.com
      PROXY_ADDRESS_FORWARDING: "true"
    ports:
      - "8080:8080"
      - "8443:8443"
    depends_on:
      - postgres
    restart: always

  postgres:
    image: postgres:15.7
    environment:
      POSTGRES_DB: keycloak
      POSTGRES_USER: keycloak
      POSTGRES_PASSWORD: password
    ports:
      - "5432:5432"
    restart: always

KC_HOSTNAMEはALBに設定する証明書と対応したドメイン名です。PROXY_ADDRESS_FORWARDINGは"true"を設定しておきましょう。この設定がないと,Keycloakが追加のリソースを取得できなくなります。その場合,ホームページは表示されるのですが,Administrator consoleを押すと真っ白な画面になってしまいます。

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?