17
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

KeycloakのFAPI(Financial-grade API)対応について(2019/12 update)

Last updated at Posted at 2019-12-05

日立製作所 中村雄一

OpenID Foundationで策定が進むプロファイルである「Financial-grade API(FAPI)」へのKeycloakの対応のための開発を筆者のチームで進めています。昨年(2018年末時点)の状況については、以前の記事をご覧ください。
 本記事では、KeycloakのFAPI対応状況のこの1年のupdateを記します。

KeycloakのFAPI対応状況(機能面)

 昨年に引き続き、日立の@tnorimatさんが中心となって対応のための開発が行われています。主に機能面のアップデートを表に記します。

非対応項目のJIRA 概要 Pull Request 対応バージョン
KEYCLOAK-9756 リクエストオブジェクトのPS256/386/512署名アルゴリズム対応 5974 6.0.0
KEYCLOAK-10747 PKCE設定項目追加 6135 6.0.0
KEYCLOAK-6748 IDトークン暗号化 7.0.0

多くの人に関係すると思われるのが、PKCE(RFC7636)の設定項目の追加です。Keycloak6.0.0以前では、認可コードを取得する際、PKCE関連のパラメタが無くとも認可コードが払い出されていました。つまり、PKCE関連のパラメタをクライアント側が付け忘れることを防止することができませんでした。
Keycloak 7.0.0以降では、管理コンソールに下図のような設定項目が追加されました。

PKCE_Enabling.png

例えば「S256」を選択すると、認可エンドポイントへのクライアントからのリクエストにcode_challenge_method=S256およびcode_challengeが含まれていないと、リクエストがエラーで帰ってきます。これにより、クライアント側で確実にPKCEを使わせることができるようになりました。

#Conformance Testパスに向けた状況

この1年の間に、OpenID FoundationよりFAPIについてもConformance Testがリリースされました。Keycloakとしても、Conformance testにパスすることが望まれます。OSSセキュリティ技術の会を通じて関係する日本企業の協力を得て@tnorimatが中心となりConformance testパスのための課題をJIRAに登録しました。
結果を下記表にまとめました。エラー処理などの細かな課題が中心となっています。13個あり、うち3件は既にKeycloak8.0.0で対応済です。

非対応項目のJIRA 概要 Pull Request 対応バージョン
KEYCLOAK-11251 JWTでのクライアント認証において署名アルゴリズムES256またはPS256サポート 6414 8.0.0
KEYCLOAK-11252,KEYCLOAK-11253 well-knownにてサーバメタデータ返却の漏れ 6351,6354 8.0.0
KEYCLOAK-11254 Hybridフローの一部をクライアントに強制
KEYCLOAK-11255KEYCLOAK-11262 リクエストオブジェクトのエラー処理
KEYCLOAK-11263 MTLSのエラー処理

#今後の課題
 Keycloakも大きなレベルではFAPIのPart1とPart2の機能は備えており、あとはconformance testのパスという状態です。一方で、新しい仕様であるCIBAフローへの対応については、まだ進んでおらず、貢献が待たれます。

17
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?