😸

【インフラ_28日目】keycloak_1冊目

2024/10/22に公開

こんにちは投資ロウトです。

背景

・keycloakを実装しなければならない課題に直面しています。

API認可

・認可エンドポイント

http://localhost:8080/auth/realms/{レルム名}/protocol/openid-connect/auth

・トークンエンドポイント

http://localhost:8080/auth/realms/{レルム名}/protocol/openid-connect/token

・トークン無効化エンドポイント

http://localhost:8080/auth/realms/{レルム名}/protocol/openid-connect/revoke

認可フロー

(keycloakの認可サーバー)
①レルムの追加
②ユーザーの追加
④クライアント作成・設定

(クライアント)
③エンドポイントを指定
⑤クライアントID・クライアントシークレット共有

認可コードフロー

(ブラウザ→keycloak)
①認可リクエスト→認可エンドポイント

(keycloak→ブラウザ)
②③ユーザー認証, 同意画面

(keycloak→ブラウザ→クライアント)
④認可レスポンス→リダイレクトURL /gettoken

(クライアント→keycloak)
⑤トークンリクエスト

(keycloak)
⑥クライアントの認証と認可コード・リダイレクトURIの確認

(keycloak→クライアント)
⑦トークンレスポンス

トークンのリフレッシュ

・アクセストークンの有効期間は通常短く設定するのが推奨。

・リフレッシュトークンが有効な間は、アクセストークンが無効になっても再取得できる。

Keycloakのカスタマイズについて(順番前後)

・画面やデザインはテーマでカスタマイズできる
※カスタマイズ可能なテーマは以下の5つ
[ログイン画面, アカウント管理コンソール, 管理コンソール, 電子メール, ウェルカムページ]

・SPI・・・特定のJavaのインタフェースを実装するクラスを検出、ロードするための仕組み

・作業内容
①キャッシュの無効化・・・デフォルトの設定ではテーマのキャッシュが有効になっているため、テーマリソースの編集後にKeycloakを再起動しないと編集内容が反映されない。
※本番では有効化するのを忘れないこと。

②新しいテーマ用のディレクトリの作成
「KEYCLOAK_HOME/themes」ディレクトリに、base, keycloak, keycloak.v2が含まれており、新しいテーマを入れるには、「KEYCLOAK_HOME/themes/custom/login」ディレクトリを作成すると、customという名前でログイン画面が認識されるとのこと。

③theme.propertiesの編集

ファイルの中身を全て削除して以下を記載するとのこと。

parent=keycloak
styles=css/login.css
locales=en,ja

④テーマの適用

Realm Settingの画面からThemesタブを選んで、Login Themeのプルダウンからcustomを選択して、saveボタンを押せばいいとのことです。

・テーマのデプロイ
→配置には2種類あるとのこと。
①「KEYCLOAK_HOME/themes」配下に配置する方法
②「KEYCLOAK_HOME/standalone/deployments」配下にjarを置く方法

その他

PKCE・・・認可コード横取り攻撃を対策するための、OAuth2.0の拡張仕様

https://qiita.com/ist-n-m/items/992c67b803ff460818ec

Discussion