Создать ID сессии

Создаёт новую Сессию, с помощью которой можно аутентифицировать последующие запросы.

Этот запрос возвращает ID созданной сессии. ID сессии также включён в заголовке ответа Set-Cookie.

Запрос

HTTP Запрос

POST /node/api/users/session

Параметры пути

Параметры не требуются.

Параметры тела запроса

Вы можете создать новую сессию используя логин и пароль, токен аутентификации или внешний сервис аутентификации (например Keycloak).

Логин/Email и пароль

Параметр Тип Описание

login

String
обязательный

Логин или email пользователя.

password

String
обязательный

Пароль пользователя.

Токен аутентификации

Параметр Тип Описание

auth-token

String

Токен аутентификации.

Внешний сервис аутентификации

Параметр Тип Описание

auth-service

String

Имя сервиса аутентификации. Сейчас Центральный Пульт поддерживает только keycloak.

auth-service-params

Object

Параметры аутентификации

auth-service-params.token

Object

Токен аутентификации сервиса.

Тело запроса

Вы можете создать новую сессию используя логин и пароль, токен аутентификации или внешний сервис аутентификации (например Keycloak).

Login/Email and password

Есть у пользователя задан email, то он может использовать его вместо логина для создания Сессии:

  • Login

  • Email

{
    "login": "user.name",
    "password": "P665bPVi"
}
{
    "login": "user.email@example.com",
    "password": "P665bPVi"
}

Токен аутентификации

{
    "auth-token": <...>
}

Внешний сервис аутентификации

Keycloak
{
    "auth-service": "keycloak",
    "auth-service-params": {
        "token": "..."
    }
}

Ответ

Тело ответа содержит строку с ID созданной сессии:

"a5f946dc-4c21-4ccd-b78b-f0a5fce94f4d"
ID сессии в теле ответа окружён кавычками. Это может вызывать проблемы с некоторыми запросами и потребует удалить кавычки из строки перед её использованием.

Заголовок Set-Cookie:

sid=6de74cf1-b0cd-4a06-9dc2-5b215c7543ef; Path=/

Пример

Запрос

Пример создания Сессии с помощью логина и пароля пользователя:

  • Bash

  • JavaScript

  • NodeJS

  • Python

login=<...>
password=<...>
saymon_hostname=<...>
url=https://$saymon_hostname/node/api/users/session

curl -X POST $url \
    -H "Content-Type: application/json" \
    -d @- <<EOF
{
    "login": "$login",
    "password": "$password"
}
EOF
let login = <...>
let password = <...>
let saymonHostname = <...>
let path = "/node/api/users/session";

let headers = new Headers();
headers.append("Content-Type", "application/json");

let data = JSON.stringify({
    "login": login,
    "password": password
});

let requestOptions = {
    method: "POST",
    headers: headers,
    body: data
};

fetch(saymonHostname + path, requestOptions)
    .then(response => response.text())
    .then(result => console.log(result))
    .catch(error => console.log("error", error));
const http = require("http");

let login = <...>
let password = <...>
let saymonHostname = <...>
let path = "/node/api/users/session";

let options = {
    "method": "POST",
    "hostname": saymonHostname,
    "headers": {
      "Content-Type": "application/json"
    },
    "path": path
};

let req = http.request(options, function (res) {
    let chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);
    });

    res.on("end", function (chunk) {
        let body = Buffer.concat(chunks);
        console.log(body.toString());
    });

    res.on("error", function (error) {
        console.error(error);
    });
});

let data = JSON.stringify({
    login: login,
    password: password
});

req.write(data);
req.end();
import requests

login = <...>
password = <...>
saymon_hostname = <...>
url = "https://" + saymon_hostname + "/node/api/users/session"
body = {"login": login, "password": password}

response = requests.request("POST", url, json=body)
session_id = response.text
print(session_id)

После создания Сессии, её ID нужно передавать в заголовке Cookie для аутентификации последующих запросов. Пример ниже демонстрирует как это сделать с запросом Получить текущего пользователя:

  • Bash

  • JavaScript

  • NodeJS

  • Python

session_id=<...>
saymon_hostname=<...>
url=https://$saymon_hostname/node/api/users/current

curl -X GET $url -H "Cookie: sid=$session_id"
let sessionId = <...>
let saymonHostname = <...>
let path = "/node/api/users/current";

let headers = new Headers();
headers.append("Cookie", "sid=" + sessionId);

let requestOptions = {
    method: "GET",
    headers: headers
};

fetch(saymonHostname + path, requestOptions)
    .then(response => response.text())
    .then(result => console.log(result))
    .catch(error => console.log("error", error));
const http = require("http");

let sessionId = <...>
let saymonHostname = <...>
let path = "/node/api/users/current";

let options = {
    "method": "GET",
    "hostname": saymonHostname,
    "headers": {
        "Cookie": "sid=" + sessionId
    },
    "path": path
};

let req = http.request(options, function (res) {
    let chunks = [];

    res.on("data", function (chunk) {
        chunks.push(chunk);
    });

    res.on("end", function (chunk) {
        let body = Buffer.concat(chunks);
        console.log(body.toString());
    });

    res.on("error", function (error) {
        console.error(error);
    });
});

req.end();
import requests

session_id = <...>
saymon_hostname = <...>
url = "https://" + saymon_hostname + "/node/api/users/current"
headers = {"Cookie": "sid=" + session_id}

response = requests.request("GET", url, headers=headers)
print(response.text)

Ответ

"a5f946dc-4c21-4ccd-b78b-f0a5fce94f4d"