Метод: делегировать

Этот вызов возвращает новый JSON Web Token (JWT) для аутентификации, который позволяет сущности получать доступ к указанному ресурсу от имени пользователя, аутентифицированного в исходном JWT. Он используется для делегирования ограниченного доступа к функции wrap или unwrap другой сущности, когда этой сущности необходимо действовать от имени пользователя.

HTTP-запрос

POST https://<base_url>/delegate

Замените <base_url> на URL-адрес службы списков контроля доступа по ключу (KACLS).

Параметры пути

Никто.

Текст запроса

Тело запроса содержит JSON-представление запроса:

JSON-представление
{
  "authentication": string,
  "authorization": string,
  "reason": string
}
Поля
authentication

string

JWT-токен, выданный третьей стороной, подтверждающий личность пользователя. Подробности см. в разделе аутентификации.

authorization

string

JWT с утверждениями delegated_to и resource_name , подтверждающими, что сущность, указанная в утверждении delegated_to имеет право доступа resource_name от имени пользователя. Для получения дополнительной информации см. раздел «Токены авторизации» .

reason

string (UTF-8)

JSON-строка, передающая дополнительную информацию об операции. Предоставленный JSON-файл должен быть очищен перед отображением. Максимальный размер: 1 КБ.

Необходимые этапы обработки

KACLS должен выполнить как минимум следующие шаги:

  • Проверьте как токены авторизации, так и токены аутентификации. Для получения дополнительной информации см. разделы «Токены авторизации» и «Токены аутентификации» .
  • Убедитесь, что токены авторизации и аутентификации принадлежат одному и тому же пользователю. Дополнительную информацию см. в разделе «Шифрование и расшифровка данных» .
  • Убедитесь, что поле kacls_url в токене авторизации соответствует текущему URL-адресу KACLS. Это позволяет обнаруживать потенциальные серверы, используемые для атак типа «человек посередине», настроенные инсайдерами или недобросовестными администраторами домена.
  • Если в токене авторизации присутствует утверждение kacls_owner_domain , убедитесь, что его значение совпадает с доменом Google Workspace владельца KACLS. Это поможет предотвратить несанкционированную регистрацию ваших KACLS в Google.
  • Запишите в журнал операцию, включая пользователя, инициировавшего её, delegated_to , resource_name ) и причину, указанную в запросе.
  • Сгенерировать, подписать и вернуть JWT-токен, содержащий утверждения delegated_to и resource_name из авторизационного токена.

KACLS имеет право проводить дополнительные проверки безопасности, в том числе на основе заявок JWT.

Ответный текст

В случае успеха этот метод возвращает JWT-токен аутентификации, содержащий утверждения delegated_to и resource_name . Этот токен впоследствии можно использовать для аутентификации при вызове методов Wrap и Unwrap. В случае ошибки должен быть возвращен структурированный ответ с сообщением об ошибке .

JSON-представление
{
  "delegated_authentication": string
}
Поля
delegated_authentication

string

JWT-токен для делегированной аутентификации, действительный для доступа к resource_name пользователем, указанным в исходном JWT-токене аутентификации. Для получения дополнительной информации см. токен аутентификации KACLS для delegate .

Пример

Запрос

POST https://mykacls.example.com/v1/delegate
{
  "authentication": "eyJhbGciOi...",
  "authorization": "eyJhbGciOi...delegated_to\":\"other_entity_id\",\"resource_name\":\"meeting_id\"...}",
  "reason": "{client:'meet' op:'delegate_access'}"
}

Ответ

{
  "delegated_authentication": "eyJhbGciOi...delegated_to_from_authz_token...resource_name_from_authz_token...}"
}