2
1
0

ConfluenceのユーザーマクロからのJIRA REST API実行をして課題詳細を取得したいと思いajaxでGETしています。

テスト環境で実施できていたものが本番環境ではエラーとなってしまいます。

認証がうまくいっていないようですが、回避策はありますか?

jQuery.ajax({
    type: "GET",
    url: "http://<JIRA_URL>/jira/rest/api/latest/issue/ISSUE-99",
    dataType: "json",
    async: false,
    success: function( json ) {
//処理
},
    error: function( json ) {
        alert('エラー:'+JSON.stringify(json));
    }
}); 

結果

エラー:{"readyState":4,"responseText":"{\"errorMessages\":[\"指定した課題を表示する権限が
ありませ ん。\",\"ログインが必要です\"],\"errors\": 
{}}","status":401,"statusText":"Unauthorized"}

 

urlが「/rest/api/2/search」だと

    url: "http://<JIRA_URL>/jira/rest/api/2/search?jql=project = HOG AND resolution = Unresolved",

結果

エラー:{"readyState":4,"responseText":"{\"errorMessages\":[\"値 'HOG' はフィールド 'project' に存在しません。\",\"フィールド 'resolution' が存在しないか、匿名ユーザーでこのフィールドは閲覧できません。\"],\"errors\":{}}","status":400,"statusText":"Bad Request"}

 

なお、環境差異はJIRAとConfluenceのサービス稼働が、「テスト環境」=同一ホスト内 「本番環境」=別ホストとなります。これが問題なのでしょうが…

アプリケーションリンクを張っているので、以下を見て「<Confluence URL>/plugins/servlet/applinks/proxy」もやってみたのですが、エラーでした

How to use jQuery in Confluence to run a JIRA REST query without hard-coding username/password in plain-text?

 

    Commentコメントを追加...

    2 回答

    1.  
      2
      1
      0

      その後試したところでは、やはり同一オリジンである必要がありそうですね。

      上手く出来ているテス環境でも、Apache噛まさずtomcatに直RESTだと失敗しますね。

       

             FROM                                               TO           結果

      http://hoge.example.com/confluence  → http://fuga.example.com/jira    失敗

      http://hoge.example.com/confluence   http://hoge.example.com:8080/jira    失敗

       http://hoge.example.com/confluence   http://hoge.example.com/jira    成功


      ひとまずリバースプロキシを使って解決できました。

       

        Commentコメントを追加...
      1.  
        2
        1
        0

        「テスト環境」=同一ホスト内 「本番環境」=別ホストとなります。これが問題なのでしょうが…

        関係しそうですが、同一ドメインですよね...

        CrowdとかでSSOしていますか?

        cookieに認証済みトークンが設定されている必要があるかと思います。

         

        1. RYOITO

          同一ドメインにしてあって、CrowdでSSOしています。 ※Authentication token storageはMemory cache設定

        2. Kengo Ohsaki

          たぶん関係ないですが..

          https://confluence.atlassian.com/display/CROWD/Session+Configuration

          'Require Consistent Client IP Address が無効にしてみる

           https://confluence.atlassian.com/display/CROWD/Configuring+Trusted+Proxy+Servers

          proxy設定をしてみる?

          https://confluence.atlassian.com/display/CROWD/Domain

          tokenのドメイン?でもcontextですので、関係なさそうですが...

        3. Kengo Ohsaki

          試しに社内のSSO環境でやってみましたが、認証なくうまくいきましたね.... Chromeの開発ツールのHARとか細かく確認しないと状況がわかりませんね...

        4. RYOITO

          検証ありがとうございます。 そうですね…アプリケーションリンクの設定など色々試してダメなら問合せしてみます。

        Commentコメントを追加...