12.4.2 Аутентификация
ГИ поддерживает возможность аутентификации и авторизации пользователей:
- Из внешних провайдеров, поддерживающих OpenID Connect (OIDC). Стандарт OpenID позволяет пользователям использовать один набор учетных данных от внешних провайдеров для доступа к ГИ.
- Из служб каталогов Active Directory. Метод аутентификации с помощью учетной записи сотрудника в Active Directory. Аутентификация происходит в соответствии с настройками и политиками, заданными в службах каталогов, что упрощает управление и обеспечивает единую точку входа для пользователей.
Аутентификация с помощью учетной записи в Active Directory позволяет управлять правами доступа не только для отдельных учетных записей пользователей, но и для групп.
- Через протокол доступа к каталогам LDAP.
- Через протокол авторизации OAuth2. Пользователи могут предоставить приложениям или сервисам разрешение на работу с ресурсами и данными в ГИ без необходимости передачи полных учетных данных.
1. OAuth2 аутентификация:¶
- Клиент отправляет запрос к api с методом oauth2-url, указывая параметр provider - имя провайдера.
- Клиент получает URL ссылку для перенаправления на страницу аутентификации стороннего сервиса.
- Клиент получает от сервера аутентификации параметр code.
- Клиент отправляет запрос к api с методом oauth2-auth, указывая набор параметров:
- provider - имя провайдера;
- code - параметр от провайдера;
- token-type - тип токена.
- Клиент получает токен доступа от api.
- Клиент может получить информацию по своему токену и проверить его валидность, сделав запрос с методом api-token и приложив токен в Header X-Session-Auth.
Возможные значения provider:
- vk;
- yandex.
Значение token-type:
- bearer.
2. OIDC аутентификация:¶
- Клиент отправляет запрос к api с методом oidc-url, указывая параметр provider - имя провайдера (возможные значения).
- Клиент получает URL ссылку для перенаправления на страницу аутентификации стороннего сервиса.
- Клиент получает от сервера аутентификации параметр code.
- Клиент отправляет запрос к api с методом oidc-auth, указывая набор параметров:
- provider - имя провайдера (возможные значения);
- code - параметр от провайдера;
- token-type - тип токена;
- Клиент получает токен доступа от api.
- Клиент может получить информацию по своему токену и проверить его валидность сделав запрос с методом api-token и приложив токен в Header X-Session-Auth.
Возможные значения provider:
- google;
- microsoft.
Значение token-type:
- bearer.
3. Active Directory аутентификация:¶
- Клиент отправляет запрос к api с методом ad-auth, указывая параметры email - email пользователя и password - пароль пользователя.
- Клиент получает токен доступа от api.
- Клиент может получить информацию по своему токену и проверить его валидность, сделав запрос с методом 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",
"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¶
Метод для получения актуальной информации о токене.
Запрос:
Ответ для токенов, созданных 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"
}
}
}