Аутентификация и авторизация

Обновлена 3 апреля 2024 г. в 09:41

Аутентификация и авторизацияBeta

Для использования большинства методов, которые предоставляет Python-библиотека Cloud ML Platform, необходимо выполнить авторизацию при помощи токена доступа.

Токены доступа (refresh-токены) имеют одну из следующих ролей, которые определяют их область действия:

Пользователь. Токен с этой ролью позволяет использовать большинство методов, доступных в библиотеке.
Администратор. Токен с этой ролью позволяет использовать все методы, доступные в библиотеке. Например, имея токен доступа с этой ролью, можно управлять другими токенами.

В зависимости от того, какие методы библиотеки планируется использовать, может потребоваться токен доступа с определенной ролью. В справочнике методов библиотеки указывается, какая роль должна быть у токена, чтобы вызвать конкретный метод.

В зависимости от прав доступа, токен можно получить разными способами:

через личный кабинет VK Cloud (обычно токен доступа с ролью Администратор);
через библиотеку Cloud ML Platform.

Если у пользователя есть доступ к личному кабинету VK Cloud, он самостоятельно может создать токен доступа и выбрать одну из двух ролей. Такой токен имеет неограниченное время действия.

Перейдите в личный кабинет VK Cloud.

Выберите проект, в котором нужно создать токен.

Перейдите в раздел ML Platform → Токены.

Нажмите кнопку Создать токен доступа.

В открывшемся окне укажите параметры токена:

Название: может быть любым.
Роль: выбранная роль (Пользователь или Администратор).

Нажмите кнопку Создать.

В открывшемся окне скопируйте значение токена и сохраните его на своем устройстве. После закрытия окна восстановить значение токена будет невозможно. Если оно утеряно, создайте новый токен.

Нажмите кнопку Готово.

Если у пользователя нет доступа к личному кабинету VK Cloud, токен доступа можно создать через библиотеку с помощью регистрационного токена:

Владелец токена доступа с ролью Администратор через библиотеку создает регистрационный токен (register-токен) для пользователя. Он одноразовый и имеет ограниченное время жизни (TTL). В регистрационном токене задаются все параметры токена доступа: название, роль, время жизни.

Пользователь с помощью регистрационного токена через библиотеку создает токен доступа (refresh-токен) для авторизации при вызове методов библиотеки. Все параметры токена доступа были заданы администратором в регистрационном токене, изменить их нельзя.

Регистрационный токен создается только через библиотеку Cloud ML Platform.

Установите библиотеку, если это еще не сделано.

Создайте токен доступа с ролью Администратор, если это еще не сделано.

Выполните скрипт Python:

from mlplatform_client import MLPlatformfrom mlplatform_client.serializers.auth import MLPTokenType ADMIN_REFRESH_TOKEN = "<значение токена доступа с ролью Администратор>" mlp = MLPlatform(ADMIN_REFRESH_TOKEN)register_token = mlp.create_register_token(    client_name="<имя токена доступа>",    access_ttl="<время жизни регистрационного токена>",    refresh_ttl="<время жизни токена доступа>",    token_type=<роль токена доступа>)print(register_token)

Здесь:

client_name: имя токена доступа, который будет создан с помощью этого регистрационного токена.

access_ttl: время жизни регистрационного токена, например, 2h45m30s. Регистрационный токен с истекшим сроком жизни не получится использовать для создания токена доступа.

refresh_ttl: время жизни токена доступа, например, 2h. Если не указывать этот параметр, то токен доступа будет действовать бессрочно.

token_type: роль токена доступа:

значение MLPTokenType.USER соответствует роли Пользователь;
значение MLPTokenType.ADMIN соответствует роли Администратор.

После выполнения этого скрипта будет выведено значение созданного регистрационного токена доступа.

Предоставьте этот регистрационный токен другому пользователю, чтобы он мог использовать этот токен для создания токена доступа с заданными параметрами.

Установите библиотеку, если это еще не сделано.

Убедитесь, что у вас есть регистрационный токен. Если его нет, то попросите владельца токена доступа с ролью Администратор создать регистрационный токен.

Выполните скрипт Python:

from mlplatform_client import MLPlatformREGISTER_TOKEN = "<значение регистрационного токена>"mlp = MLPlatform()refresh_token = mlp.create_refresh_token(REGISTER_TOKEN)print(refresh_token)

После выполнения этого скрипта будет выведено значение созданного токена доступа.

Параметры токена доступа (имя, роль и время жизни) определяются регистрационным токеном.

Скопируйте значение токена и сохраните его на своем устройстве.

Создайте токен доступа через личный кабинет или через библиотеку Cloud ML Platform.

В зависимости от того, какие методы планируется использовать, может потребоваться токен доступа с определенной ролью. В справочнике методов библиотеки указывается, какая роль должна быть у токена, чтобы вызвать конкретный метод.

Создайте объект класса MLPlatform и передайте в конструктор значение полученного токена.

Пример:

from mlplatform_client import MLPlatformREFRESH_TOKEN = "<значение токена доступа>"mlp = MLPlatform(REFRESH_TOKEN)

Теперь вы можете вызывать нужные вам методы, пользуясь этим объектом. Указанный при создании объекта токен будет использован для авторизации при вызове метода.

Если авторизация была неуспешна, будет выведено похожее сообщение об ошибке:

Если роль токена недостаточна для вызова метода:

mlplatform_client.core.exceptions.ForbiddenException: <Response [403]>. Info: {"status":403,"warnorCode":"ForbiddenException","warnorParams":{"field":"KtoTam token does not contain the following scopes: ['ml-platform:Manage']"}}

Если у токена истекло время жизни:

mlplatform_client.core.exceptions.ForbiddenException: <Response [403]>. Info: {"status":403,"warnorCode":"ForbiddenException","warnorParams":{"field":"Forbidden"}}

Можно получить только список токенов доступа. Список созданных регистрационных токенов не ведется.

Библиотека Cloud ML Platform

Перейдите в личный кабинет VK Cloud.
Выберите проект, в котором находятся токены.
Перейдите в раздел ML Platform → Токены.

Библиотека Cloud ML Platform

Перейдите в личный кабинет VK Cloud.
Выберите проект, где находится нужный токен.
Перейдите в раздел ML Platform → Токены.
Раскройте меню нужного токена и выберите пункт Удалить.
Нажмите кнопку Подтвердить.