Сессии (sessions)
Запросы
HTTP verb | Endpoint | Описание |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
Создание сессии (логин)
Производит аутентификацию пользователя в домене, создает сессию и устанавливает cookie (EraSession
) либо возвращает токен (session_token
) в ответ на запрос.
В дальнейшем все запросы, содержащие cookie EraSession
с идентификатором сессии, ассоциируются с этой сессией.
В случае указания session_type
, клиент (веб-приложение) получает в ответе токен (session_token
), должно его прочитать и запомнить, а затем для работы API-запросов в контексте этой индивидуальной сессии отправлять хедер Authorization: Bearer <session_id>
.
Применяет бан-фильтр IP-адресов для борьбы с перебором учетных записей.
Отклоняет запрос без обработки, если в течение 3 предыдущих минут 5 раз происходила неудачная попытка авторизоваться (неверная комбинация параметров domain
, login
, pwd
).
При поступлении запросов с несуществующим идентификатором сессии применяет бан-фильтр по тем же правилам.
Запрос
Спецификация | Описание |
---|---|
|
Домен для авторизации. |
|
Логин учетной записи пользователя в домене. |
|
Пароль учетной записи пользователя в домене. |
|
Тип создаваемой сессии. Возможные значения:
|
|
Внешний токен. Если параметр задан, то вместо проверки пароля запускается служебный сценарий проверки внешнего токена, установленный в системе (параметр мастер-домена 'iam_token_svcscript_code'). Параметры 'domain', 'login', 'pwd' не требуются, они будут проигнорированы. Для подтверждения аутентификации сценарий должен вернуть в переменных со специальными именами имя существующего домена и логин существующего в домене пользователя. |
POST /rest/v1/iam/sessions HTTP/1.1
Content-Type: application/json; charset=utf-8
{
"domain": "docs.rootdomain.ru",
"login": "peter",
"pwd": "123"
}
POST /rest/v1/iam/sessions HTTP/1.1
Content-Type: application/json; charset=utf-8
{
"session_type": "token",
"domain": "kzn.tele.dom",
"login": "username",
"pwd": "userpass"
}
POST /rest/v1/iam/sessions HTTP/1.1
Cookie: EraSession=07f49a96-0178-a220-2e37-e0d55e0cd303
Content-Type: application/json; charset=utf-8
{
"session_type": "token_clone_cookie"
}
Получение данных по текущей сессии
Сессия идентифицируется сначала по токену (хедер Authorization) если он присутствует и валиден (время жизни не истекло), иначе по cookie.
Возвращает данные по текущей сессии:
Поле | Тип | Описание |
---|---|---|
|
|
имя текущего домена |
|
|
|
|
|
список доменов, в которые пользователь может переключиться без проведения дополнительной авторизации |
|
|
логин авторизованного пользователя |
|
|
имя авторизованного пользователя |
|
|
единая строка, содержащая имя и логин авторизованного пользователя |
|
|
список ролей авторизованного пользователя в текущем домене |
|
|
тип солюшена текущего домена |
|
|
тэги учетной записи авторизованного пользователя |
|
|
идентификатор авторизованного пользователя |
|
|
список веб-приложений, доступных авторизованному пользователю |
Поле domains
. Каждый домен указывается в виде объекта:
Поле | Тип | Описание |
---|---|---|
|
|
имя домена |
|
|
|
Поле webapps
. Каждое веб-приложение указывается в виде объекта:
Поле | Тип | Описание |
---|---|---|
|
|
название приложения |
|
|
описание приложения |
|
|
порядок вывода |
|
|
URL ресурса пиктограммы приложения |
|
|
название иконки в формате font-awesome |
|
|
список пользовательских ролей, которым доступно приложение |
|
|
URL точки запуска приложения |
Объекты веб-приложений могут содержать дополнительные поля, которые подставляются непосредственно из файлов-метаданных (webapps.json
в папке метаданных солюшена для системных приложений и в файле метаданных ролевого приложения).
Ответ
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"domain": "docs.rootdomain.ru",
"domain_is_master": false,
"domains": [
{
"domain": "rootdomain.ru",
"is_master": true
},
{
"domain": "test.rootdomain.ru",
"is_master": false
}
],
"login": "peter",
"name": "Peter Bukashin",
"name_login": "Peter Bukashin (peter)",
"roles": [
"admin"
],
"solution": "era",
"tags": [],
"user_id": "71374fef-42f1-4e49-2069-faab905d4be2",
"webapps": [
{
"name": "Объекты",
"order": 130,
"fa-icon": "fa-paw",
"icon": "/main_icons/objects.svg",
"roles":["admin"],
"url": "/objects"
},
{
"name": "Сценарии",
"order": 150,
"fa-icon": "fa-pencil-square-o",
"icon": "/main_icons/scripteditor.svg",
"roles":["scripteditor","admin"],
"url": "/scripteditor"
}
]
}
Изменение текущей сессии
Перепривязывает текущую сессию к другому домену, одному из доступных для прямого переключения без проведения авторизации. Работа с сессией происходит либо только по токену если хедер Authorization присутствует, либо только по куке. Если токен присутствует, но не валиден, работы с кукой не происходит.
Удаление текущей сессии (логаут)
Удаляет текущую сессию.
-
Если в запросе присутствует заголовок Authorization, то будет произведена попытка удаления указанной в нём сессии, привязанной к токену. При этом сессия, привязанная к cookie, не затрагивается.
-
Если заголовок Authorization отсутствует, то будет удалена сессия указанная в cookie.