初めてのKeycloak
Rocky Linuxにインストール
- openjdkのバージョン17以上をインストール
- 公式サイトからZipをダウンロードして展開
初期設定
Keycloakのドキュメントを参考にすすめる。
conf/keycloak.confをいじって設定する。
- TLS化
自宅CA(FreeIPA)で署名した証明書を指定した。 - データベース(Mariadb)を指定
使い慣れているMariadbを選択した。他のDBでもOK。jdbcという形式を知った。
ProxmoxにSSOログインをできるようにする
-
Keycloakでレルムを作成
WebUIからcreate realmを選ぶ。 -
クライアントを作成
Client type: OpenID Connect
Client ID: 好きなクライアントID
Root URL: https://proxmoxのFQDN
Valid redirect URLs: https://proxmoxのFQDN/* -
ユーザを作成
UsersからAdd userを押してユーザを作成する。Credentialsでパスワードを設定しておく。 -
usernameのmapperを追加(めっちゃ大事)
Clients->作成したClient ID-> Client scopes->作成したClient ID-dedicated->Mappers->Add mapper->From predefined mappers->username -
Proxmoxでレルムを追加
Datacenter->Realms->Add->OpenID Connect Server
issuer URL: https://keycloakのFQDN/realms/レルム名
Realm: レルム名
Client ID: クライアントID
Autocreate Users: チェックをいれる(後で外す)
Username Claim: username
こうすることで作成したユーザ名@レルム名でログインすることができる。権限を適切に設定したあと5.のAuthcreate Usersのチェックを外す。
memosでSSO
memosをdockerで立ててnginxでリバプロして自宅CAで署名した証明書を使いTLS化した。この状態でmemosのwikiに書いてある手順でSSOの設定を行った。が500エラーになった。理由は証明書の問題だった。memosのイメージを改造したら解決した。
FROM ghcr.io/usememos/memos
COPY ca.crt /usr/local/share/ca-certificates/self-signed.cert
RUN apk add --no-cache ca-certificates && update-ca-certificates
ENTRYPOINT ["./memos"]