KeycloakのFAPI 1.0対応で実現する高度なAPIセキュリティ 4

リファレンス実装の使い方

リファレンス実装の使い方

次に、上記の方法で実装したリファレンス実装の使い方を説明します。

設定方法

リファレンス実装を使うためには、クライアントアプリケーションとリソースサーバの設定をする必要があります。クライアントアプリケーションの設定は設定ファイルfapi-sample/client/src/main/resources/application.yamlで行います。クライアントアプリケーションの設定ファイルの設定項目を表2にまとめます。

表2:クライアントアプリケーションの設定ファイルの設定項目

設定項目 説明
server:  
port クライアントアプリケーションのポート番号を設定します
server: ssl:  
key-store クライアントアプリケーションのクライアント証明書が格納されているキーストアのパスを設定します
key-store-password キーストアのパスワードを設定します
trust-store クライアントアプリケーションが信頼している証明書が格納されているトラストストアのパスを設定します
trust-store-password トラストストアのパスワードを設定します
fapi: config:  
issuer Keycloakの識別子を設定します
client-id クライアントアプリケーションのクライアントIDを設定します
client-auth-method クライアント認証方法を設定します。クライアント認証にprivate_key_jwt を使用する場合は、private_key_jwtを設定し、tls_client_auth を使用する場合は、tls_client_authを設定します
resource-servers リソースサーバのURLを設定します
scopes scopeパラメータに含める値を設定します
jws-alg 署名アルゴリズムを設定します
jwe-alg JWEでJWSを暗号化した共有鍵を暗号化する暗号アルゴリズムを設定します

一方、リソースサーバの設定は設定ファイルfapi-sample/server/src/main/resources/application.yamlで行います。リソースサーバの設定ファイルの設定項目を表3にまとめます。

表3:リソースサーバの設定ファイルの設定項目

設定項目 説明
server:  
port リソースサーバのポート番号を設定します
server: ssl:  
key-store リソースサーバの証明書が格納されているキーストアのパスを設定します
key-store-password キーストアのパスワードを設定します
trust-store リソースサーバが信頼している証明書が格納されているトラストストアのパスを設定します
trust-store-password トラストストアのパスワードを設定します
client-auth クライアント認証のタイプを設定します。リソースサーバはOAuth MTLSでクライアントアプリケーションからクライアント証明書を受け取る必要があるため、クライアント認証を義務付けるneedを設定します
fapi: resource-server: config:  
issuer Keycloakの識別子を設定します
allowed-scope リソースへのアクセスに必要なスコープを設定します
filtered-path APIリクエスト検証で保護すべきリソースサーバのパスを設定します。パスに依らず、すべてのAPIリクエストを検証する場合、nullを設定します
client-id リソースサーバのクライアントIDを設定します

リファレンス実装を使用する際は、必要に応じてそれぞれの設定ファイルを編集してください。

クライアントアプリケーションの使い方

第3回ですでに動作確認をしているため、ここではクライアントアプリケーションの使い方について説明します。まずクライアントアプリケーションを使うために、クライアントアプリケーションを起動させます。起動方法は第3回をご参照ください。そして、ブラウザでhttps://localhost:8082にアクセスします。すると、ブラウザにはクライアントアプリケーションのホーム画面が表示されます(図2)。

図2:クライアントアプリケーションのホーム画面

図2:クライアントアプリケーションのホーム画面

ホーム画面には4つのボタンがあります。それぞれのボタンの用途について表4にまとめます。

表4:クライアントアプリケーションに表示されるボタンの用途

ボタン 用途 クライアントアプリケーションが行う処理
Get Token トークンを取得する - リクエストオブジェクトの作成
- 認可リクエスト
- 認可レスポンス検証
※分離署名であるIDトークンの検証などを含む
- トークンリクエスト
- トークンレスポンス検証
Refresh Token トークンリフレッシュをする。 - リフレッシュリクエスト
- トークンレスポンス検証
Revoke Token トークンを無効化する - リボケーションリクエスト
Call API ServerとPathに設定されたURL にAPIリクエストをする - APIリクエスト
※APIリクエストはリソースサーバに送られ、リソースサーバはOAuth MTLS検証などを行う

Conformance testの紹介

OpenID財団はFAPI 1.0に関するクライアントアプリケーションのConformance testを提供しています。このConformance test をパスすることで、FAPI 1.0に準拠していることを証明でき、さらにOpenID財団に申請すると、Certificationを取得でき、Certificationを取得したクライアントアプリケーションはOpenID Certificationページに掲載されます。今回、リファレンス実装のクライアントアプリケーションでConformance testを実施してみました(図3)。

図3:Conformance testの結果

図3:Conformance testの結果

Conformance testをパスしていることがわかります。これより、リファレンス実装のクライアントアプリケーションがFAPI 1.0に準拠していることを証明できました。

おわりに

本連載では、KeycloakのFAPI 1.0対応で実現する高度なAPIセキュリティと題し、FAPI 1.0の概要からKeycloakのFAPI対応、クライアントポリシーを用いたKeycloakの設定方法、Keycloakと連携するFAPIに準拠したリファレンス実装、さらにFAPI 1.0に準拠したクライアントアプリケーションとリソースサーバの作り方を紹介しました。現在FAPI-SIGでは、FAPI 2.0のサポートに向けた活動を推進中です。このように進化を続けるKeycloakを、この機会に使ってみてはいかがでしょうか。

この記事のキーワード

この記事をシェアしてください

人気記事トップ10

人気記事ランキングをもっと見る