ubuntu/LinuxMintでkeycloakを利用してDocker環境でSSOを試しました
1.概要
SAML(認証)とOauth(認可)はどちらも難しい。今回、SAMLにチャレンジしました。ネットで調べて、keycloakを利用することでlocal環境でSSO(シングルサインオン)が実現できるので試してみました。keycloakサイトにdockerを利用した簡単なSAML環境構築事例があり、仕組みを経験できます。これを実際に試してみたので、その内容を記述します。
2.詳細
keycloakサイトのGetStartedからGetting startedのDockerを選択します。Docker環境で試すことができるので、Dockerを導入して確認をします。以前、この資料を利用して、Ubuntu 20.04で確認をしました。今回はLinuxMint 22.3を利用します。
利用する機器は以下のとおりです。
HW: i3-7100, Memory 16GB, SSD 256GB
SW: LinuxMint 22.3
参考資料(Get started with Keycloak on Docker)に沿って作業します。
(1) Before you start
Docker環境を導入します。
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu noble stable"
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/docker.gpg
$ sudo apt update
$ sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
$ sudo gpasswd -a $USER docker
$ docker --version
$ docker compose version
(2) Start Keycloak
コンテナ起動は1行だけです。
$ docker run -p 127.0.0.1:8080:8080 -e KC_BOOTSTRAP_ADMIN_USERNAME=admin -e KC_BOOTSTRAP_ADMIN_PASSWORD=admin quay.io/keycloak/keycloak:26.6.4 start-dev
Listening on: http://0.0.0.0:8080
が表示されると起動完了です。
これ以降はブラウザ(Firefox)で複数タブを利用します。その内容を記載ます。
参考資料内にURLのリンクがあります。
(a) Sign in to Keycloak
http://localhost:8080/realms/master/protocol/openid-connect/auth
(b) Account Console
http://localhost:8080/realms/myrealm/protocol/openid-connect/auth
(c) Test Application
https://www.keycloak.org/app/
(3) Log in to the Admin Console
「(a) Sign in to Keycloak」からログインします。
Username=admin, Password=admin です
(4) Create a realm
「(a) Sign in to Keycloak」にログイン後、表示されたmaster realmで作業します。
左側上方のMagage realmsをクリックします
青色のCreate realmボタンをクリックします
Realm nameにmyrealmを入力後、青色のCreateをクリックします
登録されました
(5) Create a user
「(a) Sign in to Keycloak」で作業します。
左側中断のUsersをクリックします。
青色のCreate new userをクリックします
Username=myuser
Emailは入力しません
First name=foo
Last name=bar
を入力して、青色のCreateをクリックします
上方のCredentialsタブを選択します
青色のSet passwordをクリックします
Password=mypassword
Password confirmation=mypassword
TemporaryをOffに設定して、
Saveをクリックします。
更に、赤色のSave passowrdをクリックします
登録されました
(6) Log in to the Account Console
「(b) Account Console」からログインします
Username=myuser, Password=mypassword です
Email欄がエラーになるので、myuser@localhostを入力して、submitします
ログインできました
(7) Secure the first application
「(a) Sign in to Keycloak」から作業します
左側上方のClientsをクリックします
青色のCleate clientをクリックします
Client ID=myclientを入力して、Next
次の画面もNext
Valid redirect URIs = https://www.keycloak.org/app/*
Web origins = https://www.keycloak.org
を入力後、save
「(c) Test Application」を開きます
Keycloak URL = http://localhost:8080
Realm = myrealm
Client = myclient
を確認後、Saveをクリックします
これで試験ができる環境ができました
(8) 試験1
「(b) Account Console」でログインすると、「(c) Test Application」もログインできる検証
「(b) Account Console」と「(c) Test Application」のSign outを確認します
「(b) Account Console」で myuser/mypasswordでログイン
「(c) Test Application」でSign inボタンを押すとすぐにログインできます
(9) 試験2
「(c) Test Application」でログインすると、「(b) Account Console」もログインできる検証
「(b) Account Console」と「(c) Test Application」のSign outを確認します
「(c) Test Application」でSign inボタンを押して、myuser/mypasswordでログイン
「(b) Account Console」はログインされています
3.所見
この説明資料に従って確認をすると、SSOを実際に体験できます。簡単に動作確認でき、keycloakを理解するにはとても良い資料です。しかし、実務上の設定の場合、セキュリティ面を考慮する必要があり、とても難しく簡単ではありません。
参考
[外部サイト参照]
コメント
コメントを投稿