【インフラ_28日目】keycloak_1冊目
こんにちは投資ロウトです。
背景
・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の拡張仕様
Discussion