Можно ли с помощью FusionAuth и предоставленной ему конечной точки oauth вызывать prompt=none для тихого обновления в SPA?
Я пытаюсь интегрировать автоматическое обновление маркеров доступа в iframe с помощью prompt=none с использованием конечной точки авторизации oauth. Я не могу понять, как это сделать, и даже если это поддерживается, и не вижу никакой информации в документации здесь:
https://fusionauth.io/docs/v1/tech/oauth/overview
Я попытался использовать prompt=none в URL, но, похоже, ничего не происходит.
Я ожидаю, что prompt=none будет работать в соответствии с OpenID Connect Core 1.0
Спасибо за вашу помощь!
1 ответ
FusionAuth в настоящее время не поддерживает prompt=none
опция для предоставления кода авторизации. Это то, что мы планируем добавить в один из следующих выпусков.
Однако есть обходной путь, который использовали другие. Вы можете сделать AJAX-запрос к конечной точке авторизации FusionAuth, а затем проверить результат, чтобы определить, нужно ли пользователю снова войти в систему или обновить свой токен доступа.
Вот как это работает:
Пользователь не авторизован
- Ваше приложение делает запрос AJAX запрашивает конечную точку /oauth2/authorize
- FusionAuth ответит с 200 и HTML, который содержит нашу форму входа, если пользователь больше не вошел в систему.
- Ваше приложение может проверить ответ и увидеть, что пользователь должен войти в систему и перенести их в интерфейс FusionAuth для повторного входа.
Пользователь все еще вошел в систему
- Ваше приложение делает запрос AJAX запрашивает конечную точку /oauth2/authorize
- FusionAuth ответит 302 на ваш
redirect_uri
с кодом авторизации - Ваш бэкэнд завершит предоставление кода авторизации и вызовет конечную точку токена FusionAuth
- Это вернет токен доступа (и, возможно, токен обновления)
- Ваш бэкэнд должен вернуть 200 плюс тело JSON или что-то, что означает, что пользователь все еще вошел в систему
- Ответ AJAX будет отправлен вашему приложению, и он может проанализировать ответ и увидеть, что пользователь все еще вошел в систему.
- Ваше приложение теперь будет иметь новый токен доступа
Этот поток прекрасно работает в AJAX. Это не очень хорошо работает в iframe
потому что нет пути для iframe
чтобы вернуть вашему приложению сообщение о том, что либо пользователю необходимо снова войти в систему, либо он все еще вошел в систему и теперь имеет новый токен доступа.
Если вы хотите открыть проблему GitHub для prompt=none
Поддержка на нашей конечной точке авторизации, вы можете сделать это здесь: https://github.com/FusionAuth/fusionauth-issues