OAuth のエラー oauth_problem=signature_invalid

お困りですか?

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

コミュニティに質問

プラットフォームについて: 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 は除く

問題

アプリケーション リンクの作成時や、アプリケーション リンクを使用する機能の利用時に、アプリケーション同士での認証に失敗する。

アプリケーション ログに次のエラーが記録される。

oauth_problem=signature_invalid

診断

環境

  • 2 つのアプリケーションがアプリケーション リンクを使って接続されている
  • 認証方式として OAuth が使われている

原因

リンクのアプリケーション URL がリモート アプリケーションが報告している URL に一致しません。これには次のような原因が考えられます。

  • リモート アプリケーションのベース URL が、リンクで定義されているアプリケーション URL とは異なるものに設定されている
  • リバース プロキシまたはポート フォワーディングが構成されていて、Host ヘッダーが誤ったホスト名またはポートを報告している
  • CDN またはファイアウォールによってリクエストから GET パラメーターが取り除かれている
  • リバース プロキシとして NGINX を利用していて proxy_cache ディレクティブを使っている場合 
  • <confluence-install>/conf/server.xmluseBodyEncodingForURI Tomcat パラメーターが true に設定されている

このシナリオの場合、影響を受けるアプリケーションではほかの問題も表示されることが多いです。

ソリューション

ベース URL

  • 各アプリケーションでベース URL が適切であることを確認します。

アプリケーション URL

  • リバース プロキシをバイパスしている場合を除き、アプリケーション URL はもう片方のアプリケーションのベース URL に一致する必要があります。

  • アプリケーション URL がベース URL に一致せず、リバース プロキシのバイパスも行っていない場合は、アプリケーション リンクを削除して再作成します。

リバース プロキシ

  • リバース プロキシまたはポートフォワーディングを使用している場合、アプリケーションがリバース プロキシを使用するために適切に構成されていることを確認します。

GET パラメーターの削除

  • CDN またはファイアウォールのルールによってリクエストからパラメーターが削除されていないことを確認します。リクエスト パラメーターは変更されるべきではありません。

proxy_cache ディレクティブを利用している NGINX のリバース プロキシ

NGINX のキャッシュはデフォルトで HEAD リクエストを GET リクエストに書き換えますが、これはアトラシアン アプリケーション間のアプリケーション リンクの通信に干渉します。

  • 回避策 1: Nginx 構成で proxy_cache ディレクティブを使わない
  • 回避策 2: proxy_cache ディレクティブが必須である場合は次の情報を NGINX 構成に追加し、OAuth 通信を破壊することなくキャッシュを引き続き有効化できるようにします。

    proxy_cache_convert_head   off;
    proxy_cache_key            $scheme$request_method$proxy_host$request_uri;

Tomcat

  1. <Confluence のインストール ディレクトリ>/conf/server.xml で次の部分を探します。

    <Connector port="8090" connectionTimeout="20000" redirectPort="8443"
     maxThreads="48" minSpareThreads="10"
     enableLookups="false" acceptCount="10" debug="0" URIEncoding="UTF-8"
     protocol="org.apache.coyote.http11.Http11NioProtocol" 
     useBodyEncodingForURI="true"/>
  2. server.xml に useBodyEncodingForURI が存在する場合、そのパラメーターを削除するか false に設定します。

    <Connector port="8090" connectionTimeout="20000" redirectPort="8443"
     maxThreads="48" minSpareThreads="10"
     enableLookups="false" acceptCount="10" debug="0" URIEncoding="UTF-8"
     protocol="org.apache.coyote.http11.Http11NioProtocol" 
     useBodyEncodingForURI="false"/>

説明 アプリケーション リンクの作成時や、アプリケーション リンクを使用する機能の利用時に、アプリケーション同士での認証に失敗する。
製品Jira、Confluence、Bamboo、Bitbucket、Fisheye
プラットフォームServer
最終更新日 2022 年 6 月 14 日

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

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