Keyclaokの起動
ブラウザ-https->docker-compose(nginx-http->keycloak)とつながるように用意しました
自己証明書作成(もしくは証明書を入手)
$ mkdir -p certs
$ openssl req -newkey rsa:2048 -nodes -keyout certs/key.pem -x509 -days 365 -out certs/cert.pem
nginx.confを作成
events {}
http {
server {
listen 443 ssl;
ssl_certificate /etc/nginx/certs/cert.pem;
ssl_certificate_key /etc/nginx/certs/key.pem;
location / {
proxy_pass http://keycloak:8080;
}
}
}
docker-compose.ymlを用意しました。
services:
keycloak:
image: quay.io/keycloak/keycloak:latest
volumes:
- "./keycloak_data:/opt/keycloak/data"
command: start-dev --hostname=localhost --http-enabled=true --hostname=https://mydomain.example.com
environment:
KEYCLOAK_ADMIN: admin
KEYCLOAK_ADMIN_PASSWORD: admin
ports:
- "8080:8080"
nginx:
image: nginx:alpine
ports:
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
- ./certs:/etc/nginx/certs:ro
keycloak_dataディレクトリを777で作成し、
起動は$ docker compose upで行いました。
KeyclaokをOpenID Providerとして用意する
Clientを作成しました。このClient IDをRelaying Party(RP)側で使います。

Standard flowが認可フロー(Authentication flow)の意味です。

Client SecretもRelaying Party(RP)側で使うため調べます。

OpenID ProvierのKeycloakがリダイレクトする先のURLを設定します。(ここに記載したURLにしかリダイレクトできません。)

AWS Cognito user poolをRelaying Party(RP)としてフェデレーションさせる
外部プロバイダーとして登録
AWS Cognito user poolの外部プロバイダーを追加します。
OpenID Provider(Keycloak)側で調べておいたクライアントIDとクライアントシークレットを入力します。
発行者URLは、https://(Keycoakサーバ)/realms/(realm名) になります。





