Monday, 29 May 2017

HP ALM 12:53 - Avoiding login form for authentication

I want to authenticate against HP Alm but when running the code in a browser a popup appears telling me to manually log in. That acutally works, I can send request afterwards, all good.

But how do I avoid that? I want it to authenticate without that browser login form. Any ideas? Thank you!

Best regards, Daniel

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;


via daniel.lozynski

No comments:

Post a Comment