過去問ドリル

LinuCレベル3 セキュリティスペシャリスト 認証・認可 問7

認証・認可/Keycloak による認証認可

Keycloakに、ブラウザ上で動作するSPA(シングルページアプリケーション)をOpenID Connectのクライアントとして登録する。構成として適切なものはどれか。

当サイトのオリジナル問題(LinuCレベル3 セキュリティスペシャリストの出題範囲「認証・認可」に対応。実際の試験問題ではありません)

正解:A

解説

ブラウザで動作するSPAは、ソースコードが利用者の手元に配布されるため、クライアントシークレットを秘密として保持できません。そのためKeycloakでは Client authentication をオフにした公開クライアント(public client)として登録し、認可コードフローにPKCE(Proof Key for Code Exchange)を組み合わせて、認可コードの横取りを防ぎます。Client authentication をオンにした機密クライアント(confidential client)は、シークレットを安全に保管できるサーバーサイドのアプリケーション向けです。また master レルムはKeycloak自体の管理用で、アプリケーションと利用者は用途ごとに別のレルムを作成して管理するのが推奨されています。

選択肢ごとの解説

  • A正しい。シークレットを保持できないSPAは公開クライアントとして登録し、認可コードフローとPKCEを組み合わせるのが適切です。
  • B誤り。JavaScriptに埋め込んだシークレットは誰でも読み取れるため秘密になりません。機密クライアントはサーバーサイドのアプリケーション向けです。
  • C誤り。Direct access grants はアプリがパスワードを直接扱う方式で、SSOやMFAの利点を損なうため、SPAの認証に使うべきではありません。
  • D誤り。master レルムはKeycloak自体の管理用です。アプリケーションと利用者は、用途ごとに作成した別のレルムで管理します。
LinuCレベル3 セキュリティスペシャリストの問題を演習モードで解く