2017-05-29 6 views
0

HP Almに対して認証したいのですが、ブラウザでコードを実行すると、手動でログインするようにポップアップが表示されます。良い。HP ALM 12:53 - 認証のためのログインフォームの回避

しかし、どうしたらいいですか?私はそれがブラウザのログインフォームなしで認証されることを望みます。何か案は?ありがとうございました!

敬具、 ダニエル

import utf8 from 'utf8'; 
 
import base64 from 'base-64'; 
 

 
class AlmApi { 
 
    static getAllDefectsFromAlm() { 
 
     performSignIn(); 
 
     headers.append('Accept', 'application/json'); 
 
     return fetch(request, { 
 
      method: 'GET', 
 
      mode: 'no-cors', 
 
      credentials: 'include', 
 
      headers: headers 
 
     }) 
 
     .then(response => response.json()) 
 
     .catch(error => console.log('Getting data failed: ' + error.message)); 
 
    } 
 
} 
 

 
let alm_host = '<URL><PORT>/qcbin'; 
 
let sign_in = alm_host + '/api/authentication/sign-in'; 
 
let sign_out = alm_host + '/api/authentication/sign-out'; 
 
let request = alm_host + '/rest/domains/<DOMAIN>/projects/<PROJECT>?<QUERY>'; 
 

 
let username = 'USERNAME'; 
 
let password = 'PASSWORD'; 
 
let login_credentials = username + ':' + password; 
 
let bytes = utf8.encode(login_credentials); 
 

 
let headers = new Headers(); 
 

 
function performSignIn() { 
 

 
    headers.append('Content-Type', 'application/json'); 
 
    headers.append('Accept', 'application/json'); 
 
    headers.append('Authorization', 'Basic' + base64.encode(bytes)); 
 
    fetch(sign_in, { 
 
     credentials: 'include', 
 
     method: 'POST', 
 
     headers: headers, 
 
     mode: 'no-cors' 
 
    }) 
 
    .then(response => response.json()) 
 
    .catch(error => console.log('Authorization failed : ' + error.message)); 
 
} 
 

 
function performSignOut() { 
 
    headers.append('Accept', 'application/json'); 
 
    fetch(sign_in, { 
 
     method: 'POST', 
 
     headers: headers 
 
    }) 
 
    .catch(error => console.log('Logout failed: ' + error.message)); 
 
} 
 

 

 
export default AlmApi;

+0

'getAllDefectsFromAlm'で' GET'リクエストと 'mode: 'no-cors''を使用すると、ブラウザはあなたのコードをレスポンスへのアクセスからブロックします。したがって、あなたの '.then(response => response.json())'はうまくいきません。 'performSignIn'のあなたの' POST'リクエストと同じです。 '.then(response => response.json())'もそこで失敗します。 'POST'リクエスト自体は成功しますが、あなたのブラウザはあなたのコードがレスポンスにアクセスすることを許可しません。 – sideshowbarker

+0

実際には、 'performSignIn'' POST'リクエストに 'mode: 'no-cors''を設定することによるもう1つの効果は、あなたのブラウザがCORS-safelistリクエストヘッダーではないリクエストヘッダーをリクエストに追加させないことですhttps://fetch.spec.whatwg.org/#cors-safelisted-request-header。 POSTリクエストはあなたが追加しようとしている 'Authorization'リクエストヘッダなしで、またあなたが追加しようとしている' Content-Type:application/json'なしで送られます。ですから、私は、 'POST'リクエストが承認に失敗し、承認を必要としなくても正しいコンテンツタイプで送信されないと思います。 – sideshowbarker

+0

さて、ノーコアのコメントは501でコメントしましたが、私はもうポップアップを得ません... –

答えて

0

私はいつもあなたのバージョンの特に、HPからのREST APIマニュアルを参照してくださいになります。

http://alm-help.saas.hp.com/en/12.50/api_refs/REST/#sign_in.htm

で特にヘッダーを確認してください。上記のようにいくつかのパラメータは必要ありません。その後

として再度ログインしてみてください、あなたがポップアップインタフェースが来るなしのアクセスを得ることができる必要があります;)

私はQC 11.52バージョンに戻って同じ長い時間を過ごしました;)POSTであっ認証アクション/認証ポイント/認証の下に

したがって、正しいulrと使用するパラメータ/ヘッダーがあるかどうか確認してください。

希望これは少し助けてください。良い一日を!

関連する問題