В этом документе объясняется, как реализовать авторизацию OAuth 2.0 для доступа к API данных YouTube через приложения, работающие на таких устройствах, как телевизоры, игровые приставки и принтеры. В частности, этот процесс предназначен для устройств, которые либо не имеют доступа к браузеру, либо обладают ограниченными возможностями ввода.
OAuth 2.0 позволяет пользователям обмениваться определенными данными с приложением, сохраняя при этом конфиденциальность своих имен пользователей, паролей и другой информации. Например, приложение для телевизора может использовать OAuth 2.0 для получения разрешения на выбор файла, хранящегося на Google Drive.
Поскольку приложения, использующие этот подход, распространяются на отдельные устройства, предполагается, что приложения не могут хранить секреты. Они могут получать доступ к API Google, пока пользователь находится в приложении или когда приложение работает в фоновом режиме.
Альтернативы
Если вы разрабатываете приложение для таких платформ, как Android, iOS, macOS, Linux или Windows (включая универсальную платформу Windows), которое имеет доступ к браузеру и полным возможностям ввода, используйте протокол OAuth 2.0 для мобильных и настольных приложений . (Этот протокол следует использовать даже в том случае, если ваше приложение представляет собой инструмент командной строки без графического интерфейса.)
Если вы хотите входить в систему только с помощью учетных записей Google и использовать токен JWT ID для получения основной информации профиля пользователя, см. раздел «Вход в систему на телевизорах и устройствах ввода с ограниченными возможностями» .
Предварительные требования
Включите API для вашего проекта
Любое приложение, использующее API Google, должно включить эти API в своих настройках. API Console.
Чтобы включить API для вашего проекта:
- Open the API Library в Google API Console.
- If prompted, select a project, or create a new one.
- Воспользуйтесь страницей «Библиотека» , чтобы найти и включить YouTube Data API. Найдите и включите также другие API, которые будет использовать ваше приложение.
Создать учетные данные авторизации
Любое приложение, использующее OAuth 2.0 для доступа к API Google, должно иметь учетные данные авторизации, идентифицирующие приложение для сервера OAuth 2.0 Google. Следующие шаги описывают, как создать учетные данные для вашего проекта. Затем ваши приложения смогут использовать эти учетные данные для доступа к API, которые вы включили для этого проекта.
- Go to the Clients page.
- Нажмите «Создать клиента» .
- Выберите тип приложения «Телевизоры и устройства с ограниченным набором входных сигналов» .
- Назовите свой OAuth 2.0-клиент и нажмите «Создать» .
Определите области доступа
Области доступа (scopes) позволяют вашему приложению запрашивать доступ только к тем ресурсам, которые ему необходимы, а также дают пользователям возможность контролировать объем предоставляемого ими доступа. Таким образом, может существовать обратная зависимость между количеством запрашиваемых областей доступа и вероятностью получения согласия пользователя.
Прежде чем приступать к внедрению авторизации OAuth 2.0, мы рекомендуем определить области доступа, к которым вашему приложению потребуются разрешения.
API данных YouTube версии 3 использует следующие области действия:
| Объем | Описание |
|---|---|
https://www. googleapis. com/ auth/ youtube | Управляйте своим аккаунтом YouTube |
https://www. googleapis. com/ auth/ youtube. channel-memberships. creator | Посмотрите список текущих активных участников канала, их текущий уровень и дату, когда они стали участниками. |
https://www. googleapis. com/ auth/ youtube. force-ssl | Просмотр, редактирование и окончательное удаление ваших видео, оценок, комментариев и субтитров на YouTube. |
https://www. googleapis. com/ auth/ youtube. readonly | Просмотр вашего аккаунта YouTube |
https://www. googleapis. com/ auth/ youtube. upload | Управляйте своими видео на YouTube |
https://www. googleapis. com/ auth/ youtubepartner | Просмотр и управление вашими активами и связанным с ними контентом на YouTube |
https://www. googleapis. com/ auth/ youtubepartner-channel-audit | Просмотр конфиденциальной информации вашего канала YouTube, актуальной во время процесса аудита с партнером YouTube |
Список разрешенных областей действия для установленных приложений или устройств см. в соответствующем разделе.
Получение токенов доступа OAuth 2.0
Даже если ваше приложение работает на устройстве с ограниченными возможностями ввода, пользователям необходим отдельный доступ к устройству с более широкими возможностями ввода для завершения процесса авторизации. Процесс включает следующие шаги:
- Ваше приложение отправляет запрос на сервер авторизации Google, в котором указываются области доступа, к которым приложение будет запрашивать разрешение.
- Сервер отправляет в ответ несколько фрагментов информации, используемых на последующих этапах, таких как код устройства и код пользователя.
- Вы отображаете информацию, которую пользователь может ввести на отдельном устройстве для авторизации вашего приложения.
- Ваше приложение начинает опрашивать сервер авторизации Google, чтобы определить, авторизовал ли пользователь ваше приложение.
- Пользователь переключается на устройство с расширенными возможностями ввода, запускает веб-браузер, переходит по URL-адресу, отображаемому на шаге 3, и вводит код, который также отображается на шаге 3. Затем пользователь может предоставить (или отказать) в доступе к вашему приложению.
- Следующий ответ на ваш запрос опроса содержит токены, необходимые вашему приложению для авторизации запросов от имени пользователя. (Если пользователь отказал в доступе к вашему приложению, ответ не будет содержать токены.)
На изображении ниже проиллюстрирован этот процесс:

В следующих разделах эти шаги описаны подробно. Учитывая широкий спектр возможностей и сред выполнения, которыми могут обладать устройства, в примерах, приведенных в этом документе, используется утилита командной строки curl . Эти примеры легко адаптировать для различных языков программирования и сред выполнения.
Шаг 1: Запросите коды устройства и пользователя.
На этом этапе ваше устройство отправляет HTTP POST-запрос на сервер авторизации Google по адресу https://oauth2.googleapis.com/device/code , который идентифицирует ваше приложение, а также области доступа, к которым ваше приложение хочет получить доступ от имени пользователя. Вам следует получить этот URL-адрес из документа Discovery , используя значение метаданных device_authorization_endpoint . Включите следующие параметры HTTP-запроса:
| Параметры | |||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
client_id | Необходимый Идентификатор клиента вашего приложения. Это значение можно найти в Cloud ConsoleClients page. | ||||||||||||||||
scope | Необходимый Разделённый пробелами список областей действия, определяющих ресурсы, к которым ваше приложение может получить доступ от имени пользователя. Эти значения используются для отображения пользователю экрана согласия, который показывает Google. См. список разрешенных областей действия для установленных приложений или устройств. Области доступа (scopes) позволяют вашему приложению запрашивать доступ только к тем ресурсам, которые ему необходимы, а также дают пользователям возможность контролировать объем предоставляемого ими доступа. Таким образом, существует обратная зависимость между количеством запрашиваемых областей доступа и вероятностью получения согласия пользователя. API данных YouTube версии 3 использует следующие области действия:
В документе «Области действия API OAuth 2.0» представлен полный список областей действия, которые можно использовать для доступа к API Google. | ||||||||||||||||
Примеры
Следующий фрагмент кода демонстрирует пример запроса:
POST /device/code HTTP/1.1 Host: oauth2.googleapis.com Content-Type: application/x-www-form-urlencoded client_id=client_id&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyoutube.readonly
В этом примере показана команда curl для отправки того же запроса:
curl -d "client_id=client_id&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyoutube.readonly" \
https://oauth2.googleapis.com/device/code
Шаг 2: Обработка ответа сервера авторизации
Сервер авторизации вернет один из следующих ответов:
Ответ об успехе
Если запрос действителен, в ответ вы получите JSON-объект, содержащий следующие свойства:
| Характеристики | |
|---|---|
device_code | Значение, которое Google однозначно присваивает для идентификации устройства, на котором запущено приложение, запрашивающее авторизацию. Пользователь будет авторизовывать это устройство с другого устройства с более широкими возможностями ввода. Например, пользователь может использовать ноутбук или мобильный телефон для авторизации приложения, работающего на телевизоре. В этом случае device_code идентифицирует телевизор.Этот код позволяет устройству, на котором запущено приложение, безопасно определить, предоставил ли пользователь доступ или отклонил его. |
expires_in | Продолжительность времени в секундах, в течение которого device_code и user_code остаются действительными. Если в течение этого времени пользователь не завершит процесс авторизации, и ваше устройство не запросит информацию о решении пользователя, возможно, потребуется перезапустить этот процесс с шага 1. |
interval | Продолжительность времени в секундах, в течение которого ваше устройство должно ожидать между запросами на опрос. Например, если значение равно 5 , ваше устройство должно отправлять запрос на опрос на сервер авторизации Google каждые пять секунд. Подробнее см. шаг 3 . |
user_code | Значение с учетом регистра, которое идентифицирует для Google области действия, к которым приложение запрашивает доступ. Ваш пользовательский интерфейс предложит пользователю ввести это значение на отдельном устройстве с более широкими возможностями ввода. Затем Google использует это значение для отображения правильного набора областей действия при запросе у пользователя разрешения на предоставление доступа к вашему приложению. |
verification_url | URL-адрес, по которому пользователь должен перейти на другом устройстве, чтобы ввести user_code и предоставить или отклонить доступ к вашему приложению. Ваш пользовательский интерфейс также будет отображать это значение. |
Следующий фрагмент кода демонстрирует пример ответа:
{ "device_code": "4/4-GMMhmHCXhWEzkobqIHGG_EnNYYsAkukHspeYUk9E8", "user_code": "GQVQ-JKEC", "verification_url": "https://www.google.com/device", "expires_in": 1800, "interval": 5 }
Квота превысила количество ответов.
Если количество запросов кода устройства превысило квоту, связанную с вашим идентификатором клиента, вы получите ответ 403, содержащий следующую ошибку:
{ "error_code": "rate_limit_exceeded" }
В этом случае используйте стратегию отсрочки, чтобы снизить количество запросов.
Шаг 3: Отобразите пользовательский код
Отобразите пользователю значения verification_url и user_code , полученные на шаге 2. Оба значения могут содержать любые печатные символы из набора символов US-ASCII. Отображаемое пользователю содержимое должно указывать ему на необходимость перейти по verification_url на отдельном устройстве и ввести user_code .
При разработке пользовательского интерфейса (UI) руководствуйтесь следующими правилами:
-
user_code-
user_codeдолжен отображаться в поле, способном вместить 15 символов размером с букву «W». Другими словами, если вы можете правильно отобразить кодWWWWWWWWWWWWWWW, ваш пользовательский интерфейс корректен, и мы рекомендуем использовать это строковое значение при тестировании отображенияuser_codeв вашем интерфейсе. - Параметр
user_codeчувствителен к регистру и не должен изменяться каким-либо образом, например, путем изменения регистра или добавления других символов форматирования.
-
-
verification_url- Пространство, в котором отображается
verification_urlдолжно быть достаточно широким, чтобы вместить строку URL длиной до 40 символов. - Не следует изменять
verification_urlкаким-либо образом, за исключением возможности удаления схемы для отображения. Если вы планируете удалить схему (например,https://) из URL-адреса по причинам отображения, убедитесь, что ваше приложение может обрабатывать какhttpтак иhttpsварианты.
- Пространство, в котором отображается
Шаг 4: Опрос сервера авторизации Google.
Поскольку пользователь будет использовать отдельное устройство для перехода по адресу verification_url и предоставления (или отказа) в доступе, устройство, отправляющее запрос, не получает автоматического уведомления о том, когда пользователь отвечает на запрос доступа. По этой причине устройству, отправляющему запрос, необходимо опрашивать сервер авторизации Google, чтобы определить, когда пользователь ответил на запрос.
Запрашивающее устройство должно продолжать отправлять запросы на опрос до тех пор, пока не получит ответ, указывающий на то, что пользователь ответил на запрос доступа, или пока не истечет срок действия device_code и user_code , полученных на шаге 2. interval , возвращаемый на шаге 2, определяет время ожидания в секундах между запросами.
URL-адрес конечной точки для опроса — https://oauth2.googleapis.com/token . Запрос на опрос содержит следующие параметры:
| Параметры | |
|---|---|
client_id | Идентификатор клиента вашего приложения. Это значение можно найти в Cloud ConsoleClients page. |
client_secret | Секретный ключ клиента для указанного client_id . Это значение можно найти в Cloud ConsoleClients page. |
device_code | Код device_code возвращенный сервером авторизации на шаге 2 . |
grant_type | Установите это значение равным urn:ietf:params:oauth:grant-type:device_code . |
Примеры
Следующий фрагмент кода демонстрирует пример запроса:
POST /token HTTP/1.1 Host: oauth2.googleapis.com Content-Type: application/x-www-form-urlencoded client_id=client_id& client_secret=client_secret& device_code=device_code& grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Adevice_code
В этом примере показана команда curl для отправки того же запроса:
curl -d "client_id=client_id&client_secret=client_secret& \
device_code=device_code& \
grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Adevice_code" \
-H "Content-Type: application/x-www-form-urlencoded" \
https://oauth2.googleapis.com/tokenШаг 5: Пользователь отвечает на запрос о доступе
На следующем изображении показана страница, похожая на ту, которую видят пользователи, перейдя по адресу verification_url , указанному вами на шаге 3 :

После ввода user_code и, если пользователь еще не авторизован, авторизации в Google, он увидит экран подтверждения согласия, подобный показанному ниже:

Шаг 6: Обработка ответов на запросы опроса.
Сервер авторизации Google отвечает на каждый запрос опроса одним из следующих сообщений:
Доступ предоставлен.
Если пользователь предоставил доступ к устройству (нажав кнопку Allow на экране согласия), то ответ содержит токен доступа и токен обновления. Эти токены позволяют вашему устройству получать доступ к API Google от имени пользователя. (Свойство scope в ответе определяет, к каким API устройство может получить доступ.)
В этом случае ответ API содержит следующие поля:
| Поля | |
|---|---|
access_token | Токен, который ваше приложение отправляет для авторизации запроса к API Google. |
expires_in | Оставшийся срок действия токена доступа в секундах. |
refresh_token | Токен, который можно использовать для получения нового токена доступа. Токены обновления действительны до тех пор, пока пользователь не отзовет доступ или пока срок действия токена обновления не истечет. Обратите внимание, что токены обновления всегда возвращаются для устройств. |
refresh_token_expires_in | Оставшийся срок действия токена обновления в секундах. Это значение устанавливается только в том случае, если пользователь предоставляет доступ по времени . |
scope | Области доступа, предоставляемые access_token выражены в виде списка строк, разделенных пробелами и чувствительных к регистру. |
token_type | Тип возвращаемого токена. В настоящее время значение этого поля всегда равно Bearer . |
Следующий фрагмент кода демонстрирует пример ответа:
{ "access_token": "1/fFAGRNJru1FTz70BzhT3Zg", "expires_in": 3920, "scope": "openid https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email", "token_type": "Bearer", "refresh_token": "1/xEoDL4iW3cxlI7yDbSRFYNG01kVKM2C-259HOF2aQbI" }
Срок действия токенов доступа ограничен. Если вашему приложению требуется доступ к API в течение длительного периода времени, оно может использовать токен обновления для получения нового токена доступа. Если вашему приложению необходим такой тип доступа, то следует сохранить токен обновления для последующего использования.
Доступ запрещен
Если пользователь откажет в предоставлении доступа к устройству, сервер ответит кодом состояния HTTP 403 ( Forbidden ). Ответ содержит следующую ошибку:
{ "error": "access_denied", "error_description": "Forbidden" }
Авторизация ожидается
Если пользователь еще не завершил процесс авторизации, сервер возвращает HTTP-ответ с кодом состояния 428 ( Precondition Required ). Ответ содержит следующую ошибку:
{ "error": "authorization_pending", "error_description": "Precondition Required" }
Слишком частое проведение опросов
Если устройство слишком часто отправляет запросы на опрос, сервер возвращает код состояния HTTP 403 ( Forbidden ). Ответ содержит следующую ошибку:
{ "error": "slow_down", "error_description": "Forbidden" }
Другие ошибки
Сервер авторизации также возвращает ошибки, если в запросе на опрос отсутствуют какие-либо обязательные параметры или указано неверное значение параметра. Эти запросы обычно имеют код состояния HTTP 400 ( Bad Request ) или 401 ( Unauthorized ). К таким ошибкам относятся:
| Ошибка | Код состояния HTTP | Описание |
|---|---|---|
admin_policy_enforced | 400 | Учетная запись Google не может авторизовать одну или несколько запрошенных областей доступа из-за правил администратора Google Workspace. Дополнительную информацию о том, как администратор может ограничить доступ к областям доступа до тех пор, пока доступ не будет явно предоставлен вашему идентификатору клиента OAuth, см. в справочной статье администратора Google Workspace «Управление доступом сторонних и внутренних приложений к данным Google Workspace» . |
invalid_client | 401 | Клиент OAuth не найден. Например, эта ошибка возникает, если значение параметра Тип клиента OAuth указан неверно. Убедитесь, что для идентификатора клиента тип приложения установлен на «Телевизоры и устройства с ограниченным вводом» . |
invalid_grant | 400 | Значение параметра code недопустимо, уже занято или не может быть проанализировано. |
unsupported_grant_type | 400 | Значение параметра grant_type недопустимо. |
org_internal | 403 | Идентификатор клиента OAuth в запросе является частью проекта, ограничивающего доступ к учетным записям Google в конкретной организации Google Cloud . Подтвердите конфигурацию типа пользователя для вашего приложения OAuth. |
Вызов API Google
После получения токена доступа ваше приложение может использовать его для вызова API Google от имени учетной записи пользователя, если предоставлены необходимые для API права доступа. Для этого включите токен доступа в запрос к API, указав либо параметр запроса access_token , либо значение Bearer в заголовке HTTP Authorization . По возможности предпочтительнее использовать заголовок HTTP, поскольку строки запроса обычно видны в логах сервера. В большинстве случаев вы можете использовать клиентскую библиотеку для настройки вызовов к API Google (например, при вызове API данных YouTube ).
Обратите внимание, что API данных YouTube поддерживает сервисные учетные записи только для владельцев контента YouTube, которые владеют и управляют несколькими каналами YouTube, например, звукозаписывающие компании и киностудии.
Вы можете протестировать все API Google и ознакомиться с их областями действия на платформе OAuth 2.0 Playground .
Примеры HTTP GET-запросов
Вызов конечной точки youtube.channels (API данных YouTube) с использованием HTTP-заголовка Authorization: Bearer может выглядеть следующим образом. Обратите внимание, что вам необходимо указать собственный токен доступа:
GET /youtube/v3/channels?part=snippet&mine=true HTTP/1.1 Host: www.googleapis.com Authorization: Bearer access_token
Вот вызов того же API для аутентифицированного пользователя с использованием параметра строки запроса access_token :
GET https://www.googleapis.com/youtube/v3/channels?access_token=access_token&part=snippet&mine=true
примеры curl
Вы можете протестировать эти команды с помощью приложения командной строки curl . Вот пример, использующий опцию заголовка HTTP (предпочтительный вариант):
curl -H "Authorization: Bearer access_token" https://www.googleapis.com/youtube/v3/channels?part=snippet&mine=true
Или, в качестве альтернативы, можно использовать параметр строки запроса:
curl https://www.googleapis.com/youtube/v3/channels?access_token=access_token&part=snippet&mine=true
Обновление токена доступа
Токены доступа периодически истекают и становятся недействительными учетными данными для соответствующего запроса API. Вы можете обновить токен доступа без запроса разрешения у пользователя (в том числе, когда пользователь отсутствует), если вы запросили автономный доступ к областям действия, связанным с токеном.
Для обновления токена доступа ваше приложение отправляет HTTPS POST запрос на сервер авторизации Google ( https://oauth2.googleapis.com/token ), который включает следующие параметры:
| Поля | |
|---|---|
client_id | Идентификатор клиента, полученный из API Console. |
client_secret | Необязательный Секрет клиента получен из API Console. |
grant_type | В соответствии со спецификацией OAuth 2.0 , значение этого поля должно быть установлено на refresh_token . |
refresh_token | Токен обновления, полученный в результате обмена кодами авторизации. |
Следующий фрагмент кода демонстрирует пример запроса:
POST /token HTTP/1.1 Host: oauth2.googleapis.com Content-Type: application/x-www-form-urlencoded client_id=your_client_id& refresh_token=refresh_token& grant_type=refresh_token
Пока пользователь не отозвал предоставленный приложению доступ, сервер токенов возвращает объект JSON, содержащий новый токен доступа. В следующем фрагменте кода показан пример ответа:
{ "access_token": "1/fFAGRNJru1FTz70BzhT3Zg", "expires_in": 3920, "scope": "https://www.googleapis.com/auth/drive.metadata.readonly", "token_type": "Bearer" }
Обратите внимание, что существуют ограничения на количество выдаваемых токенов обновления: одно ограничение на каждую комбинацию клиент/пользователь и еще одно на каждого пользователя для всех клиентов. Рекомендуется хранить токены обновления в долговременном хранилище и использовать их до тех пор, пока они остаются действительными. Если ваше приложение запрашивает слишком много токенов обновления, оно может столкнуться с этими ограничениями, в этом случае старые токены обновления перестанут работать.
аннулирование токена
В некоторых случаях пользователь может захотеть отозвать предоставленный приложению доступ. Отозвать доступ можно, перейдя в «Настройки учетной записи» . Дополнительную информацию см. в разделе «Удаление доступа к сайту или приложению» документа поддержки «Сторонние сайты и приложения, имеющие доступ к вашей учетной записи» .
Приложение также может программно отозвать предоставленный ему доступ. Программный отзыв важен в случаях, когда пользователь отписывается от рассылки, удаляет приложение или существенно изменяются ресурсы API, необходимые приложению. Другими словами, часть процесса удаления может включать в себя запрос к API для обеспечения удаления ранее предоставленных приложению разрешений.
Для программного отзыва токена ваше приложение отправляет запрос на https://oauth2.googleapis.com/revoke и передает токен в качестве параметра:
curl -d -X -POST --header "Content-type:application/x-www-form-urlencoded" \
https://oauth2.googleapis.com/revoke?token={token}Токен может быть токеном доступа или токеном обновления. Если токен является токеном доступа и имеет соответствующий токен обновления, токен обновления также будет аннулирован.
Если запрос на отзыв успешно обработан, то HTTP-статус ответа равен 200 В случае ошибки возвращается HTTP-статус 400 вместе с кодом ошибки.
Допустимые области действия
Поддержка протокола OAuth 2.0 для устройств доступна только для следующих областей действия:
OpenID Connect , вход через Google
-
email -
openid -
profile
API для управления дисками
-
https://www.googleapis.com/auth/drive.appdata -
https://www.googleapis.com/auth/drive.file
API YouTube
-
https://www.googleapis.com/auth/youtube -
https://www.googleapis.com/auth/youtube.readonly
Доступ по времени
Доступ по времени позволяет пользователю предоставить вашему приложению доступ к своим данным на ограниченный период времени для выполнения определенного действия. Доступ по времени доступен в некоторых продуктах Google в процессе получения согласия, предоставляя пользователям возможность предоставить доступ на ограниченный период времени. Примером может служить API переносимости данных , который позволяет однократно передавать данные.
Когда пользователь предоставляет вашему приложению доступ на основе времени, токен обновления истекает по истечении указанного периода. Обратите внимание, что токены обновления могут быть аннулированы раньше при определенных обстоятельствах; подробности см. в этих случаях . Поле refresh_token_expires_in , возвращаемое в ответе на обмен кодами авторизации, представляет собой время, оставшееся до истечения срока действия токена обновления в таких случаях.
Внедрение защиты от межсетевых атак
Дополнительным шагом для защиты учетных записей пользователей является внедрение защиты от изменений в учетных записях с помощью сервиса Google Cross-Account Protection. Этот сервис позволяет подписаться на уведомления о событиях безопасности, которые предоставляют вашему приложению информацию о важных изменениях в учетной записи пользователя. Затем вы можете использовать эту информацию для принятия мер в зависимости от того, как вы решите реагировать на события.
Вот несколько примеров типов событий, отправляемых вашему приложению службой защиты от межсетевых атак Google:
-
https://schemas.openid.net/secevent/risc/event-type/sessions-revoked -
https://schemas.openid.net/secevent/oauth/event-type/token-revoked -
https://schemas.openid.net/secevent/risc/event-type/account-disabled
Дополнительную информацию о том, как реализовать защиту от межсетевых атак, а также полный список доступных событий см. на странице «Защита учетных записей пользователей с помощью межсетевой защиты».