Bearer Token Является ли токен доступа, используемый для аутентификации, который разрешает носителю (Bearer) доступ к ресурсамиз Разрешения。когда тысервер При отправке запроса,Вы можете перенести это в заголовок запросаBearer Token
,сервер будет основан на этом Token для подтверждения вашей личности и авторизации запрашиваемого вами действия.
Он обычно используется в системе аутентификации OAuth 2.0 для проверки личности посетителей и предоставления им соответствующих разрешений. Токен носителя — это зашифрованная строка, которую клиент добавляет к заголовку HTTP-запроса при каждом запросе, что позволяет серверу идентифицировать и авторизовать запрос.
Токен на предъявителя — это кратковременные отзывные учетные данные без сохранения состояния, предназначенные для передачи аутентификационной информации между клиентом и сервером. Так называемое состояние без сохранения состояния означает, что серверу не нужно сохранять какую-либо информацию о сеансе токена-носителя, а нужно только проверять достоверность токена при получении запроса. Преимущество этого заключается в снижении нагрузки на сервер и улучшении масштабируемости системы.
Токены носителя обычно генерируются поставщиком удостоверений (IdP), который может быть сервером авторизации OAuth 2.0. Клиент получает токен носителя посредством определенного процесса авторизации (например, процесса кода авторизации, процесса ваучера пароля и т. д.), а затем может использовать токен при вызове защищенных ресурсов.
Когда пользователь успешно входит в систему,серверсоздастBearer Token
и вернуться вклиент,клиент, затем при отправке запроса,будет внутри HTTP В шапке есть это Token。
Bearer Token
В заголовке запроса с Bearer Ключевое слово плюс сам токен отправляется в виде,Формат обычноAuthorization: Bearer <token>
。сервер После получения запроса,Проверим заголовок запросаиз Authorization поле, если оно начинается с Bearer В начале ключевого слова сервер извлечет следующий токен, использует его для проверки легитимности и уровня авторизации запроса и предоставит запрошенный ресурс после подтверждения.
+-----------------------------+ +-----------------------------+
| | | |
| Вход пользователя | | сервер Создать Bearer Token |
| | | |
+-----------------------------+ +--------------+--------------+
| |
v v
+-----------------------------+ +--------------+--------------+
| | | |
| | | |
| клиент сделал запрос +---------> Bearer Token Отправить клиенту |
| | | |
| | | |
+-----------------------------+ +--------------+--------------+
|
v
+--------------+--------------+
| |
| |
| клиент сделал запросить и нести |
| Bearer Token |
| |
| |
+--------------+--------------+
|
v
+--------------+--------------+
| |
| |
| сервер получает запрос и проверяет его |
| Bearer Token |
| |
| |
+--------------+--------------+
|
v
+--------------+--------------+
| |
| |
| сервер возвращает ресурсы клиенту |
| |
| |
+--------------+--------------+
Клиент отправляет запрос на сервер авторизации для получения токена доступа. Запрос может выглядеть так:
POST /oauth/token HTTP/1.1
Host: auth.example.com
Content-Type: application/x-www-form-urlencoded
grant_type=client_credentials&client_id=your_client_id&client_secret=your_client_secret
в этом запросе,grant_type
Представляет тип авторизации,client_id
иclient_secret
даклиентизсертификат。
После того как сервер авторизации проверит учетные данные клиента, он генерирует токен носителя и возвращает его клиенту:
{
"access_token": "eyJhbGciOiJIUzI1NiIsxxxsw5c",
"token_type": "bearer",
"expires_in": 3600
}
в этом ответе,access_token
да Bearer Token,token_type
Представляет тип токена(Вотbearer
),expires_in
представляет токениз Срок действия(в секундах)。
Каждый раз, когда клиент запрашивает защищенный ресурс, он включает в заголовок запроса токен носителя.,клиентхочу посетитьapi.example.com
начальствоизкто-то Защищатьизресурс:
GET /api/resource HTTP/1.1
Host: api.example.com
Authorization: Bearer eyJhbGciOiJIUzI1NiIsxxxsw5c
в этом запросе,Authorization
Заголовок содержитBearer
Ключевые словаи Bearer Token。
После получения запроса сервер ресурсов проанализирует и проверит токен носителя. Если токен действителен и срок его действия не истек, сервер обработает запрос и вернет соответствующие ресурсы. Если токен недействителен или срок его действия истек, сервер вернет ошибку 401 Unauthorized.
HTTP/1.1 401 Unauthorized
Content-Type: application/json;charset=UTF-8
{
"code": 0,
"msg": «Уникальный формат ключа сертификата неправильный»,
"data": {}
}
Bearer Token
Как механизм аутентификации он имеет множество преимуществ:
Хотя Bearer Token имеет множество преимуществ, его безопасности все равно необходимо уделять внимание в практических приложениях. Вот некоторые ключевые соображения по безопасности:
При отправке запроса переносите его в заголовок запроса (Header) Authorization
поле, значение которого равно Bearer
ключевое слово плюс сам токен.
Ниже в качестве примера используется библиотека JavaScript Axios.
const axios = require('axios')
const url = 'https://api.example.com/data' // Замените на то, к чему вы хотите получить доступ. API адрес
const token = 'your_bearer_token' // Заменить собой из Bearer Token
axios
.get(url, {
headers: {
Authorization: 'Bearer ' + token,
},
})
.then(function (response) {
console.log('Запрос успешен:', response.data)
})
.catch(function (error) {
console.error('Запрос не выполнен:', error)
})
Ниже приведен пример запроса Postman.