Open6

初めてのKeycloak

krnskrns

Rocky Linuxにインストール

  • openjdkのバージョン17以上をインストール
  • 公式サイトからZipをダウンロードして展開
krnskrns

初期設定
Keycloakのドキュメントを参考にすすめる。
conf/keycloak.confをいじって設定する。

  • TLS化
    自宅CA(FreeIPA)で署名した証明書を指定した。
  • データベース(Mariadb)を指定
    使い慣れているMariadbを選択した。他のDBでもOK。jdbcという形式を知った。
krnskrns

ProxmoxにSSOログインをできるようにする

  1. Keycloakでレルムを作成
    WebUIからcreate realmを選ぶ。

  2. クライアントを作成
    Client type: OpenID Connect
    Client ID: 好きなクライアントID
    Root URL: https://proxmoxのFQDN
    Valid redirect URLs: https://proxmoxのFQDN/*

  3. ユーザを作成
    UsersからAdd userを押してユーザを作成する。Credentialsでパスワードを設定しておく。

  4. usernameのmapperを追加(めっちゃ大事)
    Clients->作成したClient ID-> Client scopes->作成したClient ID-dedicated->Mappers->Add mapper->From predefined mappers->username

  5. 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のチェックを外す。

krnskrns

wordpressでSSO
この記事を参考に設定した。がこの記事の手順通りではなぜかできなかったのでWordrpressのプラグインのところのメタデータをダウンロードしkeycloakにアップロードして公式の手順通りにやったら行けた。

krnskrns

memosでSSO
memosをdockerで立ててnginxでリバプロして自宅CAで署名した証明書を使いTLS化した。この状態でmemosのwikiに書いてある手順でSSOの設定を行った。が500エラーになった。理由は証明書の問題だった。memosのイメージを改造したら解決した。

Dockerfile
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"]
krnskrns

ZabbixでSSO
参考にした記事通りに行ったがうまく行かなくて二日間ぐらい悩んでた。変更箇所は3つ。最後の変更箇所はセキュリティ的に危なそうなのでもっとSAMLの理解度が上がったときに直す。

  • SP name ID format: urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified
  • keycloak側のzabbixuserの値をzabbixに登録してあるユーザの名前に
  • keycloak側のClient->(Zabbixクライアント)->Key->Signing keys configをオフ