日立製作所 中村雄一
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以降では、管理コンソールに下図のような設定項目が追加されました。
例えば「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-11255~KEYCLOAK-11262 | リクエストオブジェクトのエラー処理 | 未 | 未 |
KEYCLOAK-11263 | MTLSのエラー処理 | 未 | 未 |
#今後の課題
Keycloakも大きなレベルではFAPIのPart1とPart2の機能は備えており、あとはconformance testのパスという状態です。一方で、新しい仕様であるCIBAフローへの対応については、まだ進んでおらず、貢献が待たれます。