Skip to content

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

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

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

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

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

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

  1. Клиент отправляет запрос к api с методом oauth2-url, указывая параметр provider - имя провайдера.
  2. Клиент получает URL ссылку для перенаправления на страницу аутентификации стороннего сервиса.
  3. Клиент получает от сервера аутентификации параметр code.
  4. Клиент отправляет запрос к api с методом oauth2-auth, указывая набор параметров:
  5. provider - имя провайдера;
  6. code - параметр от провайдера;
  7. token-type - тип токена.
  8. Клиент получает токен доступа от api.
  9. Клиент может получить информацию по своему токену и проверить его валидность, сделав запрос с методом api-token и приложив токен в Header X-Session-Auth.

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

  • vk;
  • yandex.

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

  • bearer.

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

  1. Клиент отправляет запрос к api с методом oidc-url, указывая параметр provider - имя провайдера (возможные значения).
  2. Клиент получает URL ссылку для перенаправления на страницу аутентификации стороннего сервиса.
  3. Клиент получает от сервера аутентификации параметр code.
  4. Клиент отправляет запрос к api с методом oidc-auth, указывая набор параметров:
  5. provider - имя провайдера (возможные значения);
  6. code - параметр от провайдера;
  7. token-type - тип токена;
  8. Клиент получает токен доступа от api.
  9. Клиент может получить информацию по своему токену и проверить его валидность сделав запрос с методом api-token и приложив токен в Header X-Session-Auth.

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

  • google;
  • microsoft.

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

  • bearer.

3. 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"
        }
    }
}