Atlassian Companion アプリで特定の特殊文字を含むファイルの編集に失敗する

お困りですか?

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

コミュニティに質問

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

要約

ユーザーが Companion アプリを使い、特殊文字を含むファイルを編集できない。画面に "予期せぬ応答 ステータス コード 401" エラーが表示される場合もあります。

環境

  • Confluence Server または Data Center (任意のバージョン)
  • リバース プロキシ
    • Apache
    • Apache で AJP プロトコルを利用
    • NGINX

診断

  1. リバース プロキシをバイパスするとファイルを編集できる。
  2. atlassian.confluence.log に次のエラーが返される。
2020-08-06 11:56:34,513 WARN [http-nio-8098-exec-25] [jwt.internal.sal.DefaultAuthenticationResultHandler] createAndSendFailure Failure during JWT authentication
-- url: /confluence/download/attachments/1966122/test%20(11).txt | traceId: 6c24626ada0a25e6
com.atlassian.jwt.exception.JwtInvalidClaimException: Expecting claim 'qsh' to have value 'f3c8cf84498c36b0e1b82a372f6d918b8ff6f1d9466e7a3c33c9a7ee3cc9b3f2' but instead it has the value '15a0eca3badc559bfe79955f7bc3201a4538ad171f8e85f9bbc8eedc4da78f96'


原因

プロキシが処理する URI はデフォルトで正規化に従います。これは、正規化が不要である、特殊文字を含むファイルで問題になります。リバース プロキシに次の変更を行い、常に元の URI を利用するようにします。

ソリューション


AJP プロトコルを使用する Apache リバース プロキシ

httpd.conf.local ファイルに次の JkOption が存在する可能性があります。

JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories


Confluence 5.10.x では +ForwardURICompat パラメーターを +ForwardURICompatUnparsed に変更する必要があります。例:

JkOptions +ForwardKeySize +ForwardURICompatUnparsed -ForwardDirectories


Apache リバース プロキシ

Apache のリバース プロキシについては、次のものが存在することを確認します。

ProxyPass /confluence http://localhost:8090/confluence nocanon


NGINX

Nginx の場合、nginx.conf ファイルを編集して proxy_pass ディレクティブに $request_uri; を追加します (ロケーションとコンテキスト パスが同一である場合)。例:

location /<context-path> {

    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Server $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 

proxy_pass http://<base-url>/<context-path>$request_uri;
}

これが動作しないかエラーを返す場合 (上記の変更を行うと 502 エラーが返されるお客様がいらっしゃいます) は次の構成を利用してください。

location /<context-path> {

    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Server $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
 
if ($request_uri ~* "/<context-path>(/.*)") { 
	proxy_pass http://<base-url>/<context-path>$1; break; 
}

proxy_pass http://<base-url>/<context-path>;
}

いずれの場合であっても、変更を反映するためにプロキシを再起動する必要があります。



最終更新日 2020 年 11 月 23 日

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

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