Azure SSO での再認証を行っているときに、セッションのタイムアウト後に "Received invalid SAML response: The Response has an InResponseTo attribute: ONELOGIN_##AbC##dE##fg while no InResponseTo was expected" が表示される

お困りですか?

アトラシアン コミュニティをご利用ください。

コミュニティに質問

プラットフォームについて: Server および Data Center のみ。この記事は、Server および Data Center プラットフォームのアトラシアン製品にのみ適用されます。

Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.

*Fisheye および Crucible は除く

要約

Intermittent "InResponseTo" SAML errors encountered when session goes idle and needs to re-authenticate through Azure SSO.
If users let their session go idle, when the browser starts navigating again the session needs to be re-auth'd but this can randomly result in a "InResponseTo" SAML error where the InResponseTo attribute was sent but it wasn't expected. This can also happen if a race condition is made by being not authenticated and then opening multiple browser tabs which load a Confluence page each all at the same time. 

環境

Azure SSO ソリューション を使用するためにシングル サインオン (SSO 2.0) が構成されている (login.microsoftonline.com)

問題の再現

次のイベント シーケンスにより、InResponseTo was not expected エラーが発生します。

  1. 何らかの理由によってログアウト済みである (意図的なログアウトまたはタイムアウト)
  2. Confluence ページへのリンクをクリックする
  3. これによって SSO ログインが初期化され、セッションに認証リクエスト ID が追加される
  4. セッションに何かが発生する (失効、新しいセッション ID を強制する同時リクエストによる上書き、Cookie の削除)
  5. これにより、SSO ログインは完了しているが、認証リクエスト ID を持つセッション ID は保持していない状態になります。つまり、レスポンスは認証側で把握していないリクエストに向けて送信されたものになります。

これをオンデマンドで再現する方法として、Confluence ページへのリンクを 7 ~ 10 個含むブックマーク フォルダを作成し、Confluence にログインして login.microsoftonline.com をキャッシュし、その後 Confluence からログアウトして、フォルダ内のすべてのブックマークをまとめて開く (右クリック、すべてを開く) ことにより、同時リクエストを意図的に行うことができます。これを繰り返し行うと、成功することや失敗することがあります。  

診断

setenv.sh ファイルに次の行を追加して Confluence を再起動します。

CATALINA_OPTS="-Datlassian.darkfeature.atlassian.authentication.include.stacktrace.in.error.messages=true ${CATALINA_OPTS}"

これによって UI で受け取るエラー メッセージのスタック トレースを確認できます。次のようなものであるかどうかを確認します。上述のシステム プロパティを追加したくない場合、atlassian-confluence.log で "InResponseTo" を検索することもできます。

com.atlassian.plugins.authentication.impl.web.saml.provider.InvalidSamlResponse: Received invalid SAML response: The Response has an InResponseTo attribute: ONELOGIN_1a4d31b4-5cb6-494a-85b1-f7eed57991dc while no InResponseTo was expected
	at com.atlassian.plugins.authentication.impl.web.saml.provider.impl.OneloginJavaSamlProvider.lambda$extractSamlResponse$1(OneloginJavaSamlProvider.java:89)
	at com.atlassian.plugin.util.ContextClassLoaderSwitchingUtil.runInContext(ContextClassLoaderSwitchingUtil.java:48)
	at com.atlassian.plugins.authentication.impl.web.saml.provider.impl.OneloginJavaSamlProvider.extractSamlResponse(OneloginJavaSamlProvider.java:80)
	at com.atlassian.plugins.authentication.impl.web.saml.SamlConsumerServlet.doPost(SamlConsumerServlet.java:87)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
	at com.atlassian.plugin.servlet.DelegatingPluginServlet.service(DelegatingPluginServlet.java:37)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
	at com.atlassian.plugin.servlet.ServletModuleContainerServlet.service(ServletModuleContainerServlet.java:46)
	at com.atlassian.confluence.servlet.ServletModuleContainerServlet.service(ServletModuleContainerServlet.java:47)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
...truncated...

問題の再現中に HAR を取得する

  1. Google Chrome を使用して Confluence にアクセスします。
  2. Chrome のデベロッパー ツールバーを開きます (Chrome ウィンドウの空白部分で右クリックして [要素を検証] を選択するか、 ツールを開くための別の方法についてこちらのページを確認します)。
  3. [ネットワーク] タブに移動します (こちらで例を確認できます)。[ネットワーク] タブにテキストが表示されている場合、デベロッパー ツール ウィンドウの右上で、赤い丸のアイコンの横にある削除アイコンをクリックし、すべての既存のテキストを削除します、
  4. 問題を再現します。
  5. ネットワーク ウィンドウに HTTP リクエストが記録されます。この情報を HAR ファイルに保存します (手順)。

原因

HAR を分析すると、SAML リクエストは Cookie で JSESSIONID #1 が使用されている状態で送信されるが、SAML レスポンスが戻ってくるときには JSESSIONID が値 #2 を使用するようになっていることがわかります。エラーに "no InResponseTo was expected" が表示されるのはこのためであり、JSESSIONID #1 を期待しているところに JSESSIONID #2 が返ってきたためです。

HAR をさらに分析すると、Azure SSO IdP への再認証のたびに、JSESSIONID の頻繁な切り替えが行われていることがわかります。 

ソリューション

SSO プラグインをアップグレードします。

このプラグインは複数の製品 (Jira、Confluence、Bitbucket など) で使われているため、ご利用のアトラシアン製品でサポートされるプラグイン バージョンに応じて、SSO for Atlassian Server and Data Center プラグインのバージョン 3.2.5/4.0.8/4.1.5 以降をインストールするか、それらにアップグレードします。

別の原因とソリューション

This can also be due the value of the SameSite attribute in the cookie, please see SSO triggers error "Received invalid SAML response" when attempting to log into Confluence Data Center using Google Chrome for more information.


最終更新日: 2023 年 10 月 18 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.