There is nothing in the script console after getting the 401 response code.
Attaching the the authentication script and session property images so that it will be easy for you to answer.
function authenticate(helper, paramsValues, credentials) {
println("Authenticating via JavaScript script...");
importClass(org.parosproxy.paros.network.HttpRequestHeader);
importClass(org.parosproxy.paros.network.HttpHeader);
importClass(org.apache.commons.httpclient.URI);
var authHelper = new OAuthAuthenticator(helper, paramsValues, credentials);
return authHelper.login();
}
function getRequiredParamsNames(){
return [ "APP_URL", "client_id", "client_secret", "scope" ,"audience", "realm", "grant_type", "Username", "Password"];
}
function getOptionalParamsNames(){
return [];
}
function getCredentialsParamsNames(){
return [];
}
function OAuthAuthenticator(helper, paramsValues, credentials) {
this.helper = helper;
this.loginApiUrl = paramsValues.get('API_URL');
this.userName = paramsValues.get('Username');
this.password = paramsValues.get('Password');
this.clientId = paramsValues.get('client_id');
this.clientSecret = paramsValues.get('client_secret');
this.scope = paramsValues.get('scope');
this.audience = paramsValues.get('audience');
this.realm = paramsValues.get('realm');
this.grantType = paramsValues.get('grant_type');
return this;
}
OAuthAuthenticator.prototype = {
login: function () {
var loginToken,
requestBody = 'username=' + this.userName + '&password=' + this.password + '&client_id=' + this.clientId+ '&client_secret=' + this.clientSecret+ '&scope=' + this.scope+ '&audience=' + this.audience+ '&realm=' + this.realm+ '&grant_type=' + this.grantType,
response = this.doRequest(
this.loginApiUrl,
HttpRequestHeader.POST,
requestBody
),
parsedResponse = JSON.parse(response.getResponseBody().toString());
if (parsedResponse.error == 'Unauthorized') {
println('Authentication failure to ' + this.loginApiUrl + ' with : Username = ' + this.userName + ' Password = ' + this.password);
}
else {
println('Authentication succes. Token = ' + parsedResponse.token);
org.zaproxy.zap.extension.script.ScriptVars.setGlobalVar("logintoken",parsedResponse.token)
}
return response;
},
doRequest: function (url, requestMethod, requestBody) {
var msg,
requestUri = new URI(url, false);
requestHeader = new HttpRequestHeader(requestMethod, requestUri, HttpHeader.HTTP10);
msg = this.helper.prepareMessage();
msg.setRequestHeader(requestHeader);
msg.setRequestBody(requestBody);
this.helper.sendAndReceive(msg);
return msg;
}
};