Я сталкиваюсь с некоторыми проблемами, чтобы обдумать oAuth 2.0. В частности, thephpleague / oauth2-сервер реализация.
Мне удалось настроить конечную точку для создания токенов доступа с использованием типа предоставления пароля. Это когда кто-то делает POST /auth
они получают следующий ответ:
{
"access_token": "hleVw03Fx4hVsaCqEmFqcXeks0hsDTkNSxMN17NR",
"token_type": "Bearer",
"expires_in": 3600,
"refresh_token": "GD8kT7JfGULhUKSTSBsF7AO6NaIXrqPS0dlyQjTm"}
Теперь я хочу создать новый токен, когда access_token
истекает Я понимаю, что я должен использовать refresh_token
попросить свежий новый токен. Однако я не нашел никакой документации для начала.
Вы можете использовать тип Refresh Grant, чтобы получить новый токен доступа. Это стандартизированный поток, который описан в спецификации здесь: https://tools.ietf.org/html/rfc6749#section-6. Пример запроса к конечной точке токена (взятый из спецификации) будет выглядеть так:
POST /token HTTP/1.1
Host: server.example.com
Authorization: Basic czZCaGRSa3F0MzpnWDFmQmF0M2JW
Content-Type: application/x-www-form-urlencoded
grant_type=refresh_token&refresh_token=tGzv3JOkF0XG5Qx2TlKWIA
В этом случае клиент аутентифицирует себя с помощью базовой аутентификации в конечной точке токена, используя client_id
а также client_secret
, В командной строке cURL это будет выглядеть так:
curl -u "${CLIENT_ID}:${CLIENT_SECRET}" -d "grant_type=refresh_token&refresh_token=${REFRESH_TOKEN}"
Других решений пока нет …