💬

#02 EC2 & KeyCloak構築メモ(202303)

2024/10/02に公開

1. はじめに

QuarkusベースのKeycloakをEC2上で構築した時のメモです。
Keycloakを、開発者モードで起動し、 ローカルの環境からログインできるまでを記載します。

セットアップ対象のバージョン

  • Windows11
  • WSL2
  • cdk 2.69.0
  • ubuntu 20.04.1
  • keycloak 21.0.2

2. WSLセットアップ

EC2にCDKで構築するためには、CDKコマンドを実行できる環境が必要です。
下記の記事を参照し、CDK
他記事: Rust & AWS Lambda & API構築メモ(202303) を参照してください。

3. CDKを使ってEC2環境をデプロイする

EC2のCDK環境を準備する

次のコマンドを、wsl2上から実施する

$ mkdir ec2-cdk && cd ec2-cdk
$ cdk init app --language typescript
$ vi lib/ec2-cdk-stack.ts
---

$vi lib/ec2-cdk-stack.ts
---
#!/usr/bin/env node
import 'source-map-support/register';
import * as cdk from 'aws-cdk-lib';
import { Ec2CdkStack } from '../lib/ec2-cdk-stack';

const app = new cdk.App();
new Ec2CdkStack(app, 'EC2CDkStack', {
    env: {account: '************', region: 'ap-northeast-1'},
});  

$ cdk synth
$ cdk deploy
  Do you wish to deploy these changes (y/n)? y

※作成されるリソースに、"NAME:EC2CDkStack"のタグが追加される

Ubuntuセットアップ

EC2インスタンスから ※EC2インスタンス一覧から"EC2 Instance Connecdt"を使ってEC2に接続する

$ uname -srmvpio //Version確認
  Linux 5.15.0-1033-aws #37~20.04.1-Ubuntu SMP -- x86_64 x86_64
$ sudo apt-get update //パッケージリストを最新化する
$ sudo apt-get upgrade //インストールされているパッケージを最新化する
$ sudo apt-get dist-upgrade //不要になったパッケージを削除する
$ sudo apt-get install zip
$ sudo apt-get install cifs-utils //mount: wrong fs type, bad option, bad superblock on 対応
$ java --version
$ sudo get install openjdk-17-jre-headless // version17を選択

WSL2からssh接続する

次のコマンドを、wsl2上から実施する

$ ssh-keygen  #キーペアファイルを作成
---
Generating public/private rsa key pair.
Enter file in which to save the key (<user_directory>/.ssh/id_rsa): //鍵の保存先 
Enter passphrase (empty for no passphrase): //パスフレーズを入力
Enter same passphrase again: //再度パスフレーズを入力
Your identification has been saved in id_rsa.
Your public key has been saved in id_rsa.pub.

WSL2で作成した"id_rsa.pub"の内容を最下部に追記する
$ vi /home/ec2-user/.ssh/authorized_keys
---
ssh-rsa *********

// WSL2からSSHでEC2インスタンスに接続する
$ aws ec2 describe-instances //ec2情報取得(publicIP...)
$ aws sg-07de6f101dc3eefad
$ ssh ubuntu@ec2-99-123-456-789.ap-northeast-1.compute.amazonaws.com

// security-group ルール追加方法(例:8080 IPアドレス追加)
$ aws ec2 authorize-security-group-ingress --group-id sg-07de6f101dc3eefad --protocol tcp --port 8080 --cidr ***.***.***.***/32

Keycloakセットアップ

次のコマンドを、EC2上から実施する

$ sudo yum update -y
$ sudo yum install -y wget java-1.8.0-openjdk
$ java -version
$ mkdir /home/ec2-user/keycloak && cd /home/ec2-user/keycloak
$ curl -LO https://github.com/keycloak/keycloak/releases/download/21.0.2/keycloak-21.0.2.zip
$ unzip keycloak-21.0.2.zip
$ cd keycloak-21.0.2
$ KEYCLOAK_ADMIN=admin KEYCLOAK_ADMIN_PASSWORD=password bin/kc.sh start-dev & //Keycloak起動
$ bin/kcadm.sh config credentials --server http://localhost:8080 --realm master --user admin --password  //管理CLIを使ってログイン
$ bin/kcadm.sh update realms/master -s enabled=true -s sslRequired=none // Keycloak のSSL 暗号化で保護を外したい場合

ブラウザーから:8080にアクセスするとKeycloakの管理画面にアクセスできます

Keycloak画面

Keycloak Usages

1. API一覧の取得

  1. Realm Settingを開きます。
  2. "User-managed access"を、有効にします。
  3. "OpenID Endpoint Configuration"をクリックして、API一覧を取得します。

[参考]
https://atmarkit.itmedia.co.jp/ait/articles/1912/06/news008.html

Discussion