Сессии (sessions)
Запросы
HTTP verb | Endpoint | Описание |
---|---|---|
|
|
|
|
|
|
|
|
|
|
|
Создание сессии (логин)
Производит аутентификацию пользователя в домене, создает сессию и устанавливает cookie (RSession
) либо возвращает токен (session_token
) в ответ на запрос.
В дальнейшем все запросы, содержащие cookie RSession
с идентификатором сессии, ассоциируются с этой сессией.
В случае указания session_type
, клиент (веб-приложение) получает в ответе токен (session_token
), должно его прочитать и запомнить, а затем для работы API-запросов в контексте этой индивидуальной сессии отправлять хедер Authorization: Bearer <session_id>
.
Применяет бан-фильтр IP-адресов для борьбы с перебором учетных записей.
Отклоняет запрос без обработки, если в течение 3 предыдущих минут 5 раз происходила неудачная попытка авторизоваться (неверная комбинация параметров domain
, login
, pwd
).
При поступлении запросов с несуществующим идентификатором сессии применяет бан-фильтр по тем же правилам.
Запрос
Спецификация | Описание |
---|---|
|
Домен для авторизации. |
|
Логин учетной записи пользователя в домене. |
|
Пароль учетной записи пользователя в домене. |
|
Тип создаваемой сессии. Возможные значения:
|
POST /rest/v1/iam/sessions HTTP/1.1
Content-Type: application/json; charset=utf-8
{
"domain": "docs.okteller.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: RSession=07f49a96-0178-a220-2e37-e0d55e0cd303
Content-Type: application/json; charset=utf-8
{
"session_type": "token_clone_cookie"
}
Получение данных по текущей сессии
В запросе на получение данных по текущей сессии должна быть идентифицирована одна и только одна текущая сессия, по которой будет выдана информация.
При этом в запросе одновременно могут присутствовать несколько конкурирующих заголовков: Authorization
и Cookie
.
Для разрешения конфликта установлен следующий порядок:
Если присутствует заголовок Authorization
, то авторизация проходит по его содержимому, а заколовок 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.okteller.ru",
"domain_is_master": false,
"domains": [
{
"domain": "okteller.ru",
"is_master": true
},
{
"domain": "test.okteller.ru",
"is_master": false
}
],
"login": "peter",
"name": "Peter Bukashin",
"name_login": "Peter Bukashin (peter)",
"roles": [
"admin"
],
"solution": "xunit",
"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 присутствует, либо только по куке.
Если токен присутствует, но не валилден, работы с кукой не происходит.