Создайте новый токен доступа, используя токен обновления, используя thephpleague/oauth2-server

Я сталкиваюсь с некоторыми проблемами, чтобы обдумать oAuth 2.0. В частности, реализация thephpleague/oauth2-server.

Мне удалось настроить конечную точку для создания токенов доступа, используя тип предоставления пароля. Это когда кто-то делает POST /authони получают следующий ответ:

{
    "access_token": "hleVw03Fx4hVsaCqEmFqcXeks0hsDTkNSxMN17NR",
    "token_type": "Bearer",
    "expires_in": 3600,
    "refresh_token": "GD8kT7JfGULhUKSTSBsF7AO6NaIXrqPS0dlyQjTm"
}

Теперь я хочу создать новый токен, когда access_token истекает Я понимаю, что я должен использовать refresh_token попросить свежий новый токен. Однако я не нашел никакой документации для начала.

1 ответ

Решение

Вы можете использовать тип Refresh Grant, чтобы получить новый токен доступа. Это стандартизированный поток, который описан в спецификации здесь: https://tools.ietf.org/html/rfc6749. Пример запроса к конечной точке токена (взятый из спецификации) будет выглядеть так:

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}"
Другие вопросы по тегам