Для добавления/изменения авторизации нужно либо нажать кнопку "добавить авторизацию", либо изменить, нажав на шестеренке.
По состоянию на 02.09.2025 актуальной считать только авторизацию POST

Тип авторизации - Custom. Остальные типы авторизации - некоторые пресеты с различными полями, но они нам не подходят.

Поля - всё, что нужно будет на этапах работы авторизации, начиная от отправки запроса, заканчивая обработкой результата. Нам нужна пользовательская сессия для классического Агента (команда Login) 
Поля User и Pwd имеют галочку "редактируемые" - за счет этого они отображаются в т.ч. в настройке подключения. Типы данных везде string (в соответствии с нашей документацией). 
Самая сложная часть настройки. В соответствии с командой Login настраиваем для получения токена:
Login=

var BYTE_SIZE = 8,
WORD_SIZE_BYTES = 4,
HEX_SIZE = 16,
CHUNK_WORD_SIZE = HEX_SIZE * 5,
U_INT_32_SIZE = 32,
PAD_START_DEC_VAL = 128,
BLOCK_SIZE_BYTES = 64,
BYTE_MULT_32_1 = 16777216,
BYTE_MULT_32_2 = 65536,
BYTE_MULT_32_3 = 256,
MIN_PAD_BYTES = 1,
MSG_SIZE_BYTES = 8,
MIN_PRE_CALC_BYTES = MIN_PAD_BYTES + MSG_SIZE_BYTES,
ZERO_BITS_4_BYTES = '00000000',
ZERO_BITS_8_BYTES = ZERO_BITS_4_BYTES + ZERO_BITS_4_BYTES;
function toHex(uInt32) {
var hex = uInt32.toString(HEX_SIZE),
len = hex.length;
return len < BYTE_SIZE ? ZERO_BITS_4_BYTES.substr(len) + hex : hex;
}
function leftRotate(x, c) {
return (x << c) | (x >>> (U_INT_32_SIZE - c));
}
function getInputBuffer(input) {
var // calc # of chars + 0x80 [1000 0000] + 64bit length of msg in bits
inputBytes = input.length,
preProcessOffsetBytes =
(inputBytes + MIN_PRE_CALC_BYTES) % BLOCK_SIZE_BYTES,
preProcessZeroPadBytes = preProcessOffsetBytes
? BLOCK_SIZE_BYTES - preProcessOffsetBytes
: preProcessOffsetBytes,
preProcessBlockWidth =
inputBytes + MIN_PRE_CALC_BYTES + preProcessZeroPadBytes,
// prepare buffer
isbuffer = Buffer.isBuffer(input),
buffer = isbuffer
? Buffer.allocUnsafe(preProcessBlockWidth - inputBytes)
: new Array(preProcessBlockWidth),
// calc 8 byte size:
inputSizeInBits = inputBytes * BYTE_SIZE,
sizeBytes = inputSizeInBits.toString(HEX_SIZE),
hexSize = ZERO_BITS_8_BYTES.substr(sizeBytes.length) + sizeBytes,
// big-endian size:
arrHexSize = hexSize.split(''),
// index
x = 0,
y;
// add message
if (!isbuffer) {
for (x = 0; x < inputBytes; x++) {
buffer[x] = input.charCodeAt(x);
}
}
// add 1st pad byte:
buffer[x++] = PAD_START_DEC_VAL;
// add zero pad fill:
for (y = 0; y < preProcessZeroPadBytes; y++) {
buffer[x++] = 0;
}
// add size:
while (arrHexSize.length > 0) {
y = arrHexSize.shift() + arrHexSize.shift();
buffer[x++] = parseInt(y, HEX_SIZE);
}
// finalize buffer prep
if (isbuffer) {
buffer = Buffer.concat([input, buffer], preProcessBlockWidth);
}
return {
width: preProcessBlockWidth,
buffer: buffer,
};
}
function sha1(input, next) {
var inputBuffer = getInputBuffer(input),
buffer = inputBuffer.buffer,
width = inputBuffer.width,
h0 = 0x67452301,
h1 = 0xefcdab89,
h2 = 0x98badcfe,
h3 = 0x10325476,
h4 = 0xc3d2e1f0,
words,
a,
b,
c,
d,
e,
f,
k,
x,
y,
z,
output = '**not yet implemented**';
// Process the message buffer in successive 512-bit chunks:
for (x = 0; x < width; x += BLOCK_SIZE_BYTES) {
// break chunk into sixteen 32-bit word values words[z], 0 ≤ z ≤ 15
words = new Array(CHUNK_WORD_SIZE);
for (z = 0; z < HEX_SIZE; z++) {
y = x + z * WORD_SIZE_BYTES;
// calc big-endian word value from 4 bytes in buffer:
words[z] =
buffer[y] * BYTE_MULT_32_1 +
buffer[y + 1] * BYTE_MULT_32_2 +
buffer[y + 2] * BYTE_MULT_32_3 +
buffer[y + 3];
}
// Extend the sixteen 32-bit words into eighty 32-bit words, 16 ≤ z ≤ 79
for (z = HEX_SIZE; z < CHUNK_WORD_SIZE; z++) {
words[z] = leftRotate(
words[z - 3] ^ words[z - 8] ^ words[z - 14] ^ words[z - 16],
1,
);
}
// Initialize hash value for this chunk:
a = h0;
b = h1;
c = h2;
d = h3;
e = h4;
// Main loop:
for (y = 0; y < CHUNK_WORD_SIZE; y++) {
// The four round constants k are 2^30 times the square roots of 2, 3, 5 and 10.
if (y < 20) {
f = (b & c) | (~b & d);
k = 0x5a827999;
} else if (y < 40) {
f = b ^ c ^ d;
k = 0x6ed9eba1;
} else if (y < 60) {
f = (b & c) | (b & d) | (c & d);
k = 0x8f1bbcdc;
} else {
f = b ^ c ^ d;
k = 0xca62c1d6;
}
// calc and mix
z = leftRotate(a, 5) + f + e + k + words[y];
e = d;
d = c;
c = leftRotate(b, 30);
b = a;
a = z;
}
// Add this chunk's hash to result so far:
h0 = (h0 + a) >>> 0;
h1 = (h1 + b) >>> 0;
h2 = (h2 + c) >>> 0;
h3 = (h3 + d) >>> 0;
h4 = (h4 + e) >>> 0;
}
//Produce the final hash value (big-endian) as a 160-bit number:
output = [h0, h1, h2, h3, h4].map(toHex).join('');
// allow sync or async:
return 'function' === typeof next ? next(output) : output;
}
if (data.Pwd) {
data.Pwd = sha1(data.Pwd);
}
Это нужно для того, чтобы сделать sha1-хэширование пароля для передачи его в запрос.
На вкладке виджета Response настраиваем получение ответа:

Вкладка виджета Statuses для получения (только для получения!) не требуется.
Делается чуть ниже, в следующем виджете. В целом - делается аналогично, только за основу берется уже наша команда на обновление сессии.
Параметр в Request здесь один, JS-код не нужен, Response настраивается аналогично запросу на получение токена.
При необходимости можно протестировать настройку конфигурации на вкладке Testing, но по каким-то невыясненным причинам тест именно авторизации не проходит, хотя сама авторизация и тест правильно работают в дальнейших этапах настройки триггеров и действий.
Здесь должны быть настроены 2 способа:
Авторизацию достаточно иметь только одну. В зависимости от типа запроса (GET/POST) Albato само выберет способ добавления параметров.