【なんでも研究日誌】Validation Error of XML Signature - SAML Response

 KeyCloakをバージョンアップして、SAMLを使用してシングルサインオンを行おうとしたら、「Validation Error of XML Signature」と表示されました。この原因について調査及び研究し、その成果をまとめています。

The SSO login attempt failed.

Validation Error of XML Signature - SAML Response

原因

以前使っていた、KeyCloakのバージョン8とバージョン21のSAMLのXMLを比較したところ、バージョン8についてはKeyValueの値が含まれているのに対して、バージョン21には含まれていないことが分かりました。どうやらこのKeyValueの値が含まれていない事によりエラーになっていたようです。

KeyCloakのバージョン8とバージョン21のSAMLのXMLの比較

バージョン8とバージョン21のSAMLのXMLの比較
バージョン8とバージョン21のSAMLのXMLの比較

 色々と調べてみて確証はありませんが、KeyCloakではRSAのKeyValue情報はSAMLのXMLに基本的には含めないように仕様を変更したのではないかと思われます。含めるようにする設定もあるのかもしれませんが、このコンテンツではその方法については調査していません。

参考サイト

【GitHub】SAML Signature metadata loses certificate info #17549

2023年3月10日の投稿です。

◆Describe the bugの機械翻訳

SAML IdP で signSpMetadata オプションが有効になっている場合、SAML SP メタデータ・エンド ポイントは、鍵の材料が X.509 証明書として渡された場合でも、公開鍵を常に RSAKeyValue 要素として公開する。これは、発行者のような重要な情報が失われ、メタデータの署名を検証する際に信頼の連鎖を確立する能力に支障をきたすことを意味する。

 

注目すべきは、この動作にも一貫性がないことだ: wantAssertionsEncryptedを有効にすると、SPSSODescriptor要素内でX509Dataとして、つまり証明書を保持したまま、同じ鍵マテリアルが提示される。

 

この問題はKeycloak 18で確認され、現在のKeycloak 21でも再現されましたが、Keycloak 12でメタデータ署名機能が追加されて以降も存在するようです(コミット10077b1)。

DeepL.com(無料版)で翻訳しました。

 

【GitHub】Retain cert in SAML SP metadata signature info #17551

2023年3月29日の投稿です。

ソースのコメントに下記のように記述されています。

//No need to expose pubkey separately if cert is available

(証明書が利用可能な場合、公開鍵を個別に公開する必要はありません)

下記の研究日誌の内容のことを指しているのではないかと思います(推測)。

参考

 

rmartincさんが「ありがとう@dkobras! 私も最初は保守的になることを考えていました。 しかし、たどるコードパスに応じて動作がかなり不安定であることを確認した後(KeyInfoにKeyValueのみが追加される場合もあれば、KeyValueとX509Dataの両方が追加される場合もあります)、常に同じ適切なことを行う方が良いと思いました。」と言っています。

 

【GitHub】SAML signature KeyValue is missing, can it be added? #20750

KeyCloakのGitHubに寄せられている質問で、KeyValueが欠けているけど、どうやって追加するのが質問しています。ただ、その質問には回答はされていません。T.T

2023年6月3日の質問です。

 

【エンジニアによる投資】[Ubuntu20.04] KeyCloakでSAML SSOテスト

KeyCloakのバージョン17を使用している様子で、そのXMLにはKeyValueの値が含まれているように見えます。2022年2月24日の寄稿です。

 

【Qiita】Keycloakを使ってSAMLを理解する#1

【Qiita】Keycloakを使ってSAMLを理解する#2

 このブログは、KeyCloak8.0.1ということで、KeyValueが含まれている。2020年1月に投稿されているので、そのあたりではKeyCloak8は普通にダウンロードできたという事だろうと推測する。

 

KeyCloak21.0.0のRelease Notes

ver21のリリースノートの記載。

◆機械翻訳

このリリースより前は、SAML SP メタデータには、署名と暗号化の両方に使用する同じキーが含まれていました。 このバージョンの Keycloak 以降、SP メタデータでの暗号化使用に、暗号化を目的としたレルム キーのみが含まれています。 各暗号化キー記述子に対して、それが使用されることになるアルゴリズムも指定します。 次の表は、サポートされている XML-Enc アルゴリズムと Keycloak レルム キーへのマッピングを示しています。 詳細については、アップグレード ガイドを参照してください。

DeepL.com(無料版)で翻訳しました。