Перейти к основному содержимому

12.4.2 Аутентификация

ГИ поддерживает возможность аутентификации и авторизации пользователей:

  • Из внешних провайдеров, поддерживающих OpenID Connect (OIDC). Стандарт OpenID позволяет пользователям использовать один набор учетных данных от внешних провайдеров для доступа к ГИ.
  • Из служб каталогов Active Directory. Метод аутентификации с помощью учетной записи сотрудника в Active Directory. Аутентификация происходит в соответствии с настройками и политиками, заданными в службах каталогов, что упрощает управление и обеспечивает единую точку входа для пользователей.

Аутентификация с помощью учетной записи в Active Directory позволяет управлять правами доступа не только для отдельных учетных записей пользователей, но и для групп.

  • Через протокол доступа к каталогам LDAP.
  • Через протокол авторизации OAuth2. Пользователи могут предоставить приложениям или сервисам разрешение на работу с ресурсами и данными в ГИ без необходимости передачи полных учетных данных.

OAuth2 аутентификация:

1. Клиент отправляет запрос к api с методом oauth2-url, указывая параметр provider — имя провайдера.

2. Клиент получает URL ссылку для перенаправления на страницу аутентификации стороннего сервиса.

3. Клиент получает от сервера аутентификации параметр code.

4. Клиент отправляет запрос к api с методом oauth2-auth, указывая набор параметров:

  • provider — имя провайдера;
  • code — параметр от провайдера;
  • token-type — тип токена.

5. Клиент получает токен доступа от api.

6. Клиент может получить информацию по своему токену и проверить его валидность, сделав запрос с методом api-token и приложив токен в Header X-Session-Auth.

Возможные значения provider:

  • vk;
  • yandex.

Значение token-type:

  • bearer.

OIDC аутентификация:

1. Клиент отправляет запрос к api с методом oidc-url, указывая параметр provider — имя провайдера (возможные значения).

2. Клиент получает URL ссылку для перенаправления на страницу аутентификации стороннего сервиса.

3. Клиент получает от сервера аутентификации параметр code.

4. Клиент отправляет запрос к api с методом oidc-auth, указывая набор параметров:

  • provider — имя провайдера (возможные значения);
  • code — параметр от провайдера;
  • token-type — тип токена.

5. Клиент получает токен доступа от api.

6. Клиент может получить информацию по своему токену и проверить его валидность сделав запрос с методом api-token и приложив токен в Header X-Session-Auth.

Возможные значения provider:

  • google;
  • microsoft.

Значение token-type:

  • bearer.

Active Directory аутентификация:

1. Клиент отправляет запрос к api с методом ad-auth, указывая параметры email — email пользователя и password — пароль пользователя.

2. Клиент получает токен доступа от api.

3. Клиент может получить информацию по своему токену и проверить его валидность, сделав запрос с методом api-token и приложив токен в Header X-Session-Auth.

Методы

12.4.2.1 oauth2-auth

Метод для обмена code на токен доступа для OAuth2 провайдеров.

Запрос:

{
"jsonrpc": "2.0",
"method": "oauth2-auth",
"params": {
"provider": "vk",
"code": "43b447853547b02f60",
"token_type": "Bearer"
},
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585"
}

Ответ:

{
"jsonrpc": "2.0",
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585",
"result": {
"code": 1,
"data": {
"X-Session-Auth": "vk1.a.IGKZ7XZJrcXx5lmZgs5_6_pWyWj6NUrID2bYla3fnthb..."
}
}
}

12.4.2.2 oidc-auth

Метод для обмена code на токен доступа для OIDC провайдеров.

Запрос:

{
"jsonrpc": "2.0",
"method": "oidc-auth",
"params": {
"provider": "google",
"code": "4/0AfJohXnsvjH0zCL2sHEq_WfQUPhhnS_7uvqcYapGQu0a...",
"token_type": "Bearer"
},
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585"
}

Ответ:

{
"jsonrpc": "2.0",
"id": "cbf4478c-84b5-45ac-97cd-0390d7190586",
"result": {
"code": 1,
"data": {
"X-Session-Auth": "ya29.a0AfB_byAXdy7orzRCCwVRoRsZhFeuNuFkEHnqiWX..."
}
}
}

12.4.2.3 ad-auth

Метод аутентификации с помощью учетной записи сотрудника в Active Directory. Поле password фильтруется и удаляется из тела запроса перед сохранением его в БД.

Запрос:

{
"jsonrpc": "2.0",
"method": "ad-auth",
"params": {
"email": "test@test.ru",
"password": "test"
},
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585"
}

Ответ:

{
"jsonrpc": "2.0",
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585",
"result": {
"code": 1,
"data": {
"X-Session-Auth": "GKZ7XZJrcXx5lmZgs5_6_pWyWj6NUrID2bYla3fnthb..."
}
}
}

12.4.2.4 auth

Метод локальной аутентификации для созданных внутри ГИ пользователей.

Провайдер — federation.

Запрос:

{
"jsonrpc": "2.0",
"method": "auth",
"params": {
"username": "federation-admin-test",
"password": "N1CUnkL67oeYw9mhR6jJ"
},
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585"
}

Ответ:

{
"jsonrpc": "2.0",
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585",
"result": {
"code": 1,
"data": {
"X-Session-Auth": "IGKZ7XZJrcXx5lmZgs5_6_pWyWj6NUrID2bYla3fnthb..."
}
}
}

12.4.2.5 auth-providers

Метод для получения информации по провайдерам.

Провайдеры разделены на группы:

  • result -> data -> active_directory — содержит провайдер ad (OPTIONAL);
  • result -> data -> local — cодержит провайдер federation;
  • result -> data -> oidc — содержит провайдер google (OPTIONAL) и microsoft (OPTIONAL);
  • result -> data -> oauth2 — cодержит провайдер vk (OPTIONAL) и yandex (OPTIONAL).

Флаг enabled указывает, что провайдер включен (true) или отключен (false). Если провайдер отключен — все его токены и учетные записи перестают действовать на время отключения или до истечения времени действия токена.

Запрос:

{
"jsonrpc": "2.0",
"method": "auth-providers",
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585"
}

Ответ:

{
"jsonrpc": "2.0",
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585",
"result": {
"code": 1,
"data": {
"active_directory": {
"ad": {
"client_id": null,
"default_scope": "default",
"enabled": true,
"issuer_url": null,
"name": "ad",
"openid": false,
"token_url": null,
"url": "ldap://ext.itglobal.com/",
"user_info_url": null
}
},
"local": {
"federation": {
"client_id": null,
"default_scope": "default",
"enabled": true,
"issuer_url": null,
"name": "federation",
"openid": false,
"token_url": null,
"url": "https://vstack.com/",
"user_info_url": null
}
},
"oauth2": {},
"oidc": {}
}
}
}

12.4.2.6 api-token

Метод для получения актуальной информации о токене.

Запрос:

{
"jsonrpc": "2.0",
"method": "api-token",
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585"
}

Ответ для токенов, созданных OAuth2 провайдерами:

{
"jsonrpc": "2.0",
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585",
"result": {
"code": 1,
"data": {
"expires_in": 1709481754,
"open_id": false,
"provider": "vk",
"scope": "default",
"user_id": "181857024",
"token_type": "Bearer"
}
}
}

Ответ для для токенов, созданных OIDC провайдерами:

{
"jsonrpc": "2.0",
"id": "cbf4478c-84b5-45ac-97cd-0390d7190585",
"result": {
"code": 1,
"data": {
"expires_in": 1709481754,
"id_token": "eyJhbGciOiJSUzI1NiIsImtpZCI6ImM2MjYzZDA5NzQ1YjUw...",
"open_id": true,
"provider": "google",
"scope": "default",
"user_id": "100019380916450527878",
"token_type": "Bearer"
}
}
}