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