Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье показано, как управлять маркерами OAuth для встроенной проверки подлинности и авторизации в Службе приложений Azure.
Извлечение токенов в коде приложения
Служба приложений Azure внедряет маркеры, относящиеся к поставщику, в заголовок запроса, чтобы можно было легко получить к ним доступ. Чтобы получить маркеры для конкретного поставщика, для приложения необходимо включить хранилище маркеров .
Отправьте HTTP-запрос GET/.auth/me с помощью клиентского кода, например, мобильного приложения или JavaScript в браузере. В возвращаемом JSON-файле будут содержаться предоставляемые поставщиком токены.
Примечание.
Маркеры доступа предназначены для доступа к ресурсам поставщика, поэтому они присутствуют только при настройке поставщика с использованием клиентского секрета.
В следующей таблице перечислены имена заголовков токенов OAuth для нескольких встроенных поставщиков службы приложений:
| Поставщик | Имена заголовков |
|---|---|
| Microsoft Entra | X-MS-TOKEN-AAD-ID-TOKEN X-MS-TOKEN-AAD-ACCESS-TOKEN X-MS-TOKEN-AAD-EXPIRES-ON X-MS-TOKEN-AAD-REFRESH-TOKEN |
| Фейсбук | X-MS-TOKEN-FACEBOOK-ACCESS-TOKEN X-MS-TOKEN-FACEBOOK-EXPIRES-ON |
| Гугл | X-MS-TOKEN-GOOGLE-ID-TOKEN X-MS-TOKEN-GOOGLE-ACCESS-TOKEN X-MS-TOKEN-GOOGLE-EXPIRES-ON X-MS-TOKEN-GOOGLE-REFRESH-TOKEN |
| X | X-MS-TOKEN-TWITTER-ACCESS-TOKEN X-MS-TOKEN-TWITTER-ACCESS-TOKEN-SECRET |
Примечание.
Различные языковые платформы могут представлять эти заголовки коду приложения в разных форматах, таких как строчные или заголовки.
Обновление токенов аутентификации
Информация ниже относится к токенам поставщика. Сведения о маркерах сеанса см. в разделе "Продление срока действия маркера сеанса".
Если срок действия маркера доступа поставщика истекает, необходимо повторно выполнить проверку подлинности пользователя, прежде чем снова использовать этот маркер. Истечения срока действия токена можно избежать, выполнив вызов GET к конечной точке приложения /.auth/refresh.
Чтобы обновить токен доступа в любое время, вызовите /.auth/refresh на любом языке. В следующем фрагменте кода jQuery используется для обновления токенов доступа из клиента JavaScript.
function refreshTokens() {
let refreshUrl = "/.auth/refresh";
$.ajax(refreshUrl) .done(function() {
console.log("Token refresh completed successfully.");
}) .fail(function() {
console.log("Token refresh failed. See application logs for details.");
});
}
При этом Служба приложений автоматически обновляет маркеры доступа в хранилище токенов для пользователя, прошедшего аутентификацию. Последующие запросы получают обновленные маркеры. Маркеры обновления и время истечения их действия можно увидеть с помощью заголовков, перечисленных в извлечении токенов в коде приложения.
Примечание.
Если пользователь отменяет разрешения, предоставленные вашему приложению, вызов /.auth/me может завершиться ошибкой с ответом 403 Forbidden. Чтобы выполнить диагностику ошибок, проверьте дополнительные сведения в журналах приложений.
Настройте поставщиков для выдачи токенов обновления
Чтобы обновление токенов работало, хранилище токенов должно содержать токены обновления от вашего поставщика. Каждый поставщик документирует, как получить токены обновления. В следующей таблице представлена краткая сводка:
| Поставщик | Маркеры обновления |
|---|---|
| Корпорация Майкрософт | Выполните процедуру, описанную в разделе "Настройка поставщика Microsoft Entra" для предоставления маркеров обновления. |
| Фейсбук | Не предоставляет токены обновления. Срок действия долго живущих токенов истекает через 60 дней. Дополнительные сведения см. Long-Lived Маркеры Доступа. |
| Гугл | Добавьте параметр строки запроса access_type=offline к вызову /.auth/login/google API. Дополнительные сведения см. в разделе "Токены обновления Google". |
| X | Срок действия маркеров доступа не истекает. Дополнительные сведения см. в разделе часто задаваемые вопросы о OAuth. |
Настройка поставщика Microsoft Entra для предоставления токенов обновления
- На портале Azure перейдите на площадку API (предварительная версия) и при необходимости выберите новый запрос .
- В поле введите относительный путь ARM вместе с версией API, введите следующую строку, заменив плейсхолдеры идентификатором подписки, именем группы ресурсов и именем приложения:
subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Web/sites/<app-name>/config/authsettingsV2?api-version=2024-11-01 - Выберите Выполнить.
- Выберите
PUTв левом верхнем углу и перейдите на вкладку "Текст запроса ". - Скопируйте содержимое
GETответа из поля текста ответа и вставьте их на вкладку "Текст запроса ". - В коде найдите
"identityProviders":>>"azureActiveDirectory":"login":раздел и добавьте следующую строку:"loginParameters": ["scope=openid profile email offline_access"] - Выберите Выполнить. В поле "Текст ответа" отображаются изменения.
Offline_access — это область, которая предоставляет маркеры обновления. Служба приложений уже запрашивает другие области по умолчанию. Дополнительные сведения см. в разделе "Области подключения OpenID" и "Веб-приложения" — обновление параметров проверки подлинности версии 2.
Продление периода отсрочки срока действия токена сеанса
Срок действия сеанса, прошедшего проверку подлинности, истекает через 8 часов, и 72-часовой льготный период по умолчанию следует. В течение этого льготного периода можно обновить маркер сеанса с помощью службы приложений без повторной проверки подлинности пользователя. Вы можете просто вызывать /.auth/refresh , когда маркер сеанса становится недействительным, и вам не нужно отслеживать срок действия маркера самостоятельно.
Когда 72-часовой льготный период истекает, пользователь должен снова войти, чтобы получить действительный маркер сеанса. Если вам нужен срок действия более 72 часов, его можно продлить, но продление срока действия на длительный период может иметь значительные последствия для безопасности, если токен аутентификации будет утечет или украден. Рекомендуется оставить параметр по умолчанию 72 часа или задать период расширения наименьшим возможным значением.
Чтобы продлить срок действия по умолчанию, выполните следующую команду Azure CLI в Azure Cloud Shell:
az webapp auth update --resource-group <group_name> --name <app_name> --token-refresh-extension-hours <hours>
Примечание.
Льготный период применяется только к аутентифицированному сеансу в службе приложений, а не к токенам доступа от поставщиков удостоверений. Для токенов поставщика с истекшим сроком действия не предусмотрен льготный период.