4.5.1. Получение OAuth токена
OAuth токен необходим для выполнения любого метода REST API (кроме случая анонимного доступа к REST API). Получить токен можно выполнив POST запрос по адресу
http://localhost:8080/app/rest/v2/oauth/token
Доступ к данному URL защищен с помощью базовой аутентификации с использованием идентификатора и пароля клиента REST API. Обратите внимание, что это не логин и пароль пользователя приложения. Идентификатор и пароль клиента REST API заданы в свойствах приложения cuba.rest.client.id и cuba.rest.client.secret (значения по умолчанию для этих свойств: client
и secret
). Заголовок Authorization запроса на получение токена должен содержать логин и пароль клиента, разделенные символом ":" и закодированные в base64.
Тип запроса на получение токена должен быть application/x-www-form-urlencoded
, кодировка UTF-8
.
Запрос должен содержать следующие параметры:
-
grant_type
- всегда значениеpassword
. -
username
- логин пользователя приложения. -
password
- пароль пользователя приложения.
POST /oauth/token
Authorization: Basic Y2xpZW50OnNlY3JldA==
Content-Type: application/x-www-form-urlencoded
grant_type=password&username=smith&password=qwerty123
Вы также можете использовать утилиту cURL:
curl -H "Content-type: application/x-www-form-urlencoded" -H "Authorization: Basic Y2xpZW50OnNlY3JldA==" -d "grant_type=password&username=admin&password=admin" http://localhost:8080/app/rest/v2/oauth/token
Метод возвращает JSON объект:
{
"access_token": "29bc6b45-83cd-4050-8c7a-2a8a60adf251",
"token_type": "bearer",
"refresh_token": "e765446f-d49e-4634-a6d3-2d0583a0e7ea",
"expires_in": 43198,
"scope": "rest-api"
}
Значение токена содержится в поле access_token
Чтобы использовать токен, его нужно передать в заголовке запроса Authorization
с типом Bearer
, например:
Authorization: Bearer 29bc6b45-83cd-4050-8c7a-2a8a60adf251
Свойство refresh_token
содержит значение refresh токена. Он не может быть использован для доступа к защищённым ресурсам приложения, но он имеет большее время жизни по сравнению с access токеном и используется для получения нового access токена, когда старый токен истек.
Запрос на получение нового access токена с помощью refresh токена должен содержать следующие параметры:
-
grant_type
-refresh_token
. -
refresh_token
- значения refresh токена.
POST /oauth/token
Authorization: Basic Y2xpZW50OnNlY3JldA==
Content-Type: application/x-www-form-urlencoded
grant_type=refresh_token&refresh_token=e765446f-d49e-4634-a6d3-2d0583a0e7ea
См. также следующие свойства приложения, имеющие отношение к токенам: