認証・認可の導入
認証・認可の勉強がしたいと思い、KeyCloakを触ってみようと思いました。
最初はローカル上で構築していたけれど、実際に運用する場合はサーバー公開しないといけないから手軽にEC2上で構築してみました。
EC2はAmazon Linux2を選択
今回は無料利用枠で使えるAmazon Linux2を使います。
スペックはt2.microでデフォルトのままにしました。
dockerをインストール
インスタンス生成時に作ったキーペアを使ってSSHします。
# pemのパーミッションがでかいと怒られるので、400に設定
chmod 400 ~/.ssh/[作成したキーペア名].pem
ssh -i [作成したキーペア名].pem ec2-user@[EC2のパブリックIP]
下記コマンドでdockerをインストール
# インストール
sudo yum install -y docker
# 起動設定
sudo service docker start
sudo service docker enable
# ec2-userでdockerが起動できるようにする
sudo usermod -a -G docker ec2-user
# 動作確認
sudo docker info
docker-composeをインストール
sudo mkdir -p /usr/local/lib/docker/cli-plugins
sudo curl -SL https://github.com/docker/compose/releases/download/v2.4.1/docker-compose-linux-x86_64 -o /usr/local/lib/docker/cli-plugins/docker-compose
sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
docker compose version
公式のDockerイメージからKeyCloak起動
下記公式からDocker起動コマンドを確認する。
https://www.keycloak.org/getting-started/getting-started-docker
docker run -p 8080:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin quay.io/keycloak/keycloak:24.0.2 start-dev
そのままだとブラウザアクセスできない
どうもKeyCloakのデフォルト設定だとHTTPS必須になっているので、そのままではブラウザアクセスできませんでした。
アクセスすると次のようなエラーがでます。
http required
ローカルでたてていたときは、出なかったのでlocalhostのときは通る設定になっている模様。
今回はEC2上にたてたのでlocalhostではなく、パブリックIPになるのでその影響かと思います。
KeyCloakのHTTPS必須設定をオフにする
ということで、CLI経由でHTTPS必須設定にオフにしていきます。
実行したコマンドは以下
# dockerコンテナにログイン
docker exec -it [コンテナ名] /bin/bash
# コンテナ内で実行
bash-5.1$ find / -name kcadm.sh
/opt/keycloak/bin/kcadm.sh
find: ‘/proc/tty/driver’: Permission denied
bash-5.1$
bash-5.1$ cd /opt/keycloak/bin/
bash-5.1$
bash-5.1$ ./kcadm.sh config credentials --server http://localhost:8080 --realm master --user admin
Logging into http://localhost:8080 as user admin of realm master
Enter password: ***** # adminと入力
bash-5.1$ ./kcadm.sh update realms/master -s sslRequired=NONE
その後、再度ブラウザアクセスしてログイン画面が出てきたら完了です。