Предположим, у нас есть:
- auth-сервер (приложение rails с помощью doorkeeper)
- клиентское приложение (приложение реакции, нет сервера)
- ресурс-сервер (API построен с рельсами)
Вот как работает поток авторизации:
пользователь нажимает кнопку входа в клиентском приложении
клиентское приложение отправляет пользователя привратнику со следующими параметрами:
clinet_id
redirect_uri
response_type = маркер
после того, как пользователь авторизует приложение, сервер авторизации перенаправляет обратно в клиентское приложение (для перенаправления URL), access_token является частью этого URL, клиентское приложение сохраняет access_token.
сделать запрос к ресурсу-серверу с access_token для получения ресурсов.
ресурс-сервер делает запрос к auth-серверу с access_token,
получает current_user с этим access_token.
ресурс-сервер отвечает данными на основе current_user.
Теперь access_token, который клиентское приложение получает от auth-сервера, живет только 2 часа.
Таким образом, через 2 часа, когда клиентское приложение попытается сделать запрос, сервер ресурсов попытается получить current_user, но получит 401, и ответит клиентскому приложению 401.
На данный момент все клиентское приложение имеет client_id и просроченный access_token.
Как клиентское приложение получает новый access_token?
Я не мог найти много в википортере об этом. Кажется, все примеры и настройки там требуют секрета.