Рекомендации по повторам ACS
Документ заархивирован, и сведения могли устареть

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

Опубликовано: Январь 2013 г.

Обновлено: Июль 2015 г.

Назначение: Azure

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

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

К ним относятся:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

См. также

Показ:
© 2016 Microsoft