Рекомендации по повторам ACS

Обновлено: 6 июля 2015 г.

Область применения: Azure

Microsoft Azure Active Directory контроль доступа (также известный как служба контроль доступа или ACS) поддерживает ряд различных конечных точек выдачи маркеров и управления, в которые клиенты могут отправлять запросы маркеров. В этом разделе приведены рекомендации по реализации логики повтора для неудачных запросов.

Сценарии обработки ошибок

Ошибки выполнения запроса маркера с кодом ошибки серии HTTP 500 обычно приводят к повторным попыткам. В некоторых сценариях клиент является приложением или службой, которая выполняет автоматические запросы к ACS. В других сценариях, например при использовании веб-федерации с протоколом WS-Federation, клиент — это браузер, поэтому конечному пользователю требуется повторить операцию вручную. В этом разделе описаны сценарии обработки ошибок, где клиент — это приложение или служба.

Ниже приведены соответствующие сценарии.

Рекомендации по повторам

Далее описывается, как реализовать логику повтора в сценариях обработки ошибок.

Руководство No 1. Реализация логики повторных попыток на основе ответов об ошибках СЕРИИ HTTP 500

Логика повторных попыток настоятельно рекомендуется, когда ACS возвращает ошибки серии HTTP 500. В следующем списке представлены примеры типичных ошибок серии HTTP 500.

  • Ошибка HTTP — внутренняя ошибка сервера

  • ошибка HTTP 502 — недопустимый шлюз;

  • Ошибка HTTP 503 — служба недоступна

  • Ошибка HTTP 504 — превышено время ожидания шлюза

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

Логика повторных попыток должна активироваться кодами ошибок HTTP, такими как HTTP 504 (время ожидания внешнего сервера), а не кодами ошибок ACS, такими как ACS90005. Коды ошибок ACS носят информационный характер и могут изменяться.

Логику повторных попыток не рекомендуется использовать при получении кодов ошибок HTTP 400-й серии. Получение от службы контроля доступа любого ответа с кодом ошибки HTTP 400-й серии означает, что запрос является недопустимым и его следует исправить. Но есть одно исключение — код ошибки 429 ("Слишком много запросов"), который указывает, что для пространства имен превышено ограничение скорости отправки запросов маркера. Для таких ошибок повторные попытки с таймером отсрочки помогают завершить ожидающие запросы, а у администратора будет время для анализа и корректировки распределения рабочей нагрузки пространства имен. Дополнительные сведения см. в разделе об ограничениях службы ACS.

Руководство No 2. Повторные попытки должны использовать таймер отката для оптимального управления потоком

Когда клиент получает ошибку серии HTTP 500, следует подождать определенное время перед повторной отправкой запроса. Лучше всего, если период отсрочки увеличивается с каждой последующей повторной попыткой. Такой подход позволяет быстро устранить временные ошибки в работе сети или сервера, сохраняя при этом оптимальную частоту запросов при более длительных сбоях.

Например, используйте экспоненциальный таймер отката, в котором задержка перед повторным выполнением увеличивается экспоненциально с каждым экземпляром, например Retry 1: 1 секунда, повтор 2: 2 секунды, повтор 3: 4 секунды и т. д.

Количество повторных попыток и интервалы между ними можно менять в соответствии с требованиями пользователей. Мы рекомендуем применять до пяти повторных попыток в течение пяти минут. Устранение проблем, связанных с превышением времени ожидания, требует больше времени.

Руководство No 3. Убедитесь, что элемент не существует, прежде чем пытаться создать или удалить его

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

Если повторить операцию создания, не проверив существование элемента, могут быть созданы дублирующиеся элементы. Кроме того, система может вернуть ошибку HTTP 400, если элемент должен быть уникальным.

Если повторить операция удаления, не проверив, существует ли элемент, система может вернуть ошибку HTTP 400, если элемент не будет найден.

См. также:

Основные понятия

Коды ошибок ACS
Ограничения службы ACS
Служба управления ACS
Практическое руководство. Запрос маркера из ACS через протокол OAuth WRAP
Пример кода: проверка подлинности сертификата OAuth 2.0
Указатель рекомендаций для ACS