Авторизация
Авторизация
Заголовок запроса HTTP Authorization может использоваться для предоставления учетных данных, которые аутентифицируют агента пользователя на сервере, позволяя получить доступ к защищенному ресурсу.
Заголовок Authorization обычно, но не всегда, отправляется после того, как агент пользователя впервые пытается запросить защищенный ресурс без учетных данных. Сервер отвечает сообщением 401 Unauthorized с по крайней мере одним заголовком WWW-Authenticate. Этот заголовок указывает, какие схемы аутентификации могут быть использованы для доступа к ресурсу (и любую дополнительную информацию, необходимую клиенту для их использования). Агент пользователя должен выбрать наиболее безопасную поддерживаемую схему аутентификации из предложенных, запросить у пользователя его учетные данные и затем повторно запросить ресурс (включая закодированные учетные данные в заголовке Authorization).
Примечание: Этот заголовок является частью общего фреймворка аутентификации HTTP. Он может использоваться с рядом схем аутентификации.
| Тип заголовка | Заголовок запроса |
|---|---|
| Запрещенное имя заголовка | нет |
Синтаксис
Authorization: <auth-scheme> <authorization-parameters>
Базовая аутентификация
Authorization: Basic <credentials>
Аутентификация по дайджесту
Authorization: Digest username=<username>,
realm="<realm>",
uri="<url>",
algorithm=<algorithm>,
nonce="<nonce>",
nc=<nc>,
cnonce="<cnonce>",
qop=<qop>,
response="<response>",
opaque="<opaque>"
Директивы
<auth-scheme>-
Схема аутентификации, которая определяет, как кодируются учетные данные. Некоторые из наиболее распространенных типов (регистронезависимые):
Basic,Digest,NegotiateиAWS4-HMAC-SHA256.Примечание: Для получения дополнительной информации/вариантов см. HTTP Аутентификация > Схемы аутентификации
Помимо <auth-scheme> остальные директивы специфичны для каждой схемы аутентификации. Как правило, вам необходимо проверить соответствующие спецификации для этих (ключи для небольшой подгруппы схем перечислены ниже).
Базовая
- <credentials>
-
Учетные данные, закодированные в соответствии со специфицированной схемой.
Примечание: Сведения об алгоритме кодирования см. в примерах: ниже, в
WWW-Authenticate, в HTTP Аутентификации и в соответствующих спецификациях.
Дайджест
- <response>
-
Строка шестнадцатеричных цифр, подтверждающая, что пользователь знает пароль. Алгоритм кодирует имя пользователя и пароль, область, cnonce, qop, nc и так далее. Подробно описано в спецификации.
username-
Строка в кавычках, содержащая имя пользователя для указанной
realmв виде простого текста или хэш-кода в шестнадцатеричном формате. Если имя содержит символы, которые не допускаются в поле, можно использоватьusername*вместо (не "также"). username*-
Имя пользователя, отформатированное с использованием расширенного формата, определенного в RFC5987. Это следует использовать только в том случае, если имя нельзя закодировать в
usernameи еслиuserhashустановлено"false". uri-
Эффективный URI запроса. Дополнительную информацию см. в спецификации.
realm-
Область запрошенного имени пользователя/пароля (снова, должна совпадать со значением в соответствующем ответе
WWW-Authenticateдля запрашиваемого ресурса). opaque-
Значение в соответствующем ответе
WWW-Authenticateдля запрашиваемого ресурса. algorithm-
Алгоритм, используемый для вычисления дайджеста. Должен быть поддерживаемым алгоритмом из ответа
WWW-Authenticateдля запрашиваемого ресурса. qop-
Маркер, указывающий на качество защиты, применяемое к сообщению. Должен совпадать с одним значением из набора, указанного в ответе
WWW-Authenticateдля запрашиваемого ресурса.-
"auth": Аутентификация -
"auth-int": Аутентификация с защитой целостности
-
cnonce-
Строковое значение, содержащее только символы ASCII, предоставленное клиентом. Используется как клиентом, так и сервером для взаимной аутентификации, обеспечения некоторой защиты целостности сообщений и предотвращения «атак с выбранным текстом». Дополнительную информацию см. в спецификации.
nc-
Счетчик запросов. Шестнадцатеричный счет запросов, в которых клиент отправил текущее значение
cnonce(включая текущий запрос). Сервер может использовать повторяющиеся значенияncдля распознавания повторных запросов. -
userhashНеобязательно -
"true"если имя пользователя было хешировано."false"по умолчанию.
Примеры
Базовая аутентификация
Для аутентификации по "Basic" учетные данные строятся путем сначала объединения имени пользователя и пароля двоеточием (aladdin:opensesame), а затем путем кодирования результирующей строки в base64 (YWxhZGRpbjpvcGVuc2VzYW1l).
Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l
Предупреждение: Base64-кодирование легко обращается вспять для получения исходного имени и пароля, поэтому базовая аутентификация полностью небезопасна. HTTPS всегда рекомендуется при использовании аутентификации, но еще больше при использовании Basic аутентификации.
См. также HTTP аутентификацию для примеров настройки серверов Apache или Nginx для защиты паролем вашего сайта с помощью HTTP базовой аутентификации.
Спецификации
| Спецификация |
|---|
| HTTP Семантика # field.authorization |
Совместимость с браузером
| Рабочий стол | Мобильный | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox for Android | Opera Android | Safari на IOS | Samsung Internet | |
Basic |
1 |
12 |
1 |
1 |
Да |
Да |
37 |
Да |
Да |
Да |
Да |
Да |
Digest |
Да |
Да |
Да |
Нет |
Да |
Нет |
Да |
Да |
Да |
Да |
Нет |
Да |
NTLM |
Да |
Да |
Да |
Нет |
Да |
Нет |
Да |
Да |
Да |
Да |
Нет |
Да |
Negotiate |
Да |
Да |
Да |
Нет |
Да |
Нет |
Да |
Да |
Да |
Да |
Нет |
Да |
Authorization |
1 |
12 |
1 |
1 |
Да |
Да |
37 |
Да |
Да |
Да |
Да |
Да |
См. также
© 2005–2022 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Authorization