Можно ли с помощью 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, а затем проверить результат, чтобы определить, нужно ли пользователю снова войти в систему или обновить свой токен доступа.

Вот как это работает:

Пользователь не авторизован

  1. Ваше приложение делает запрос AJAX запрашивает конечную точку /oauth2/authorize
  2. FusionAuth ответит с 200 и HTML, который содержит нашу форму входа, если пользователь больше не вошел в систему.
  3. Ваше приложение может проверить ответ и увидеть, что пользователь должен войти в систему и перенести их в интерфейс FusionAuth для повторного входа.

Пользователь все еще вошел в систему

  1. Ваше приложение делает запрос AJAX запрашивает конечную точку /oauth2/authorize
  2. FusionAuth ответит 302 на ваш redirect_uri с кодом авторизации
  3. Ваш бэкэнд завершит предоставление кода авторизации и вызовет конечную точку токена FusionAuth
  4. Это вернет токен доступа (и, возможно, токен обновления)
  5. Ваш бэкэнд должен вернуть 200 плюс тело JSON или что-то, что означает, что пользователь все еще вошел в систему
  6. Ответ AJAX будет отправлен вашему приложению, и он может проанализировать ответ и увидеть, что пользователь все еще вошел в систему.
  7. Ваше приложение теперь будет иметь новый токен доступа

Этот поток прекрасно работает в AJAX. Это не очень хорошо работает в iframe потому что нет пути для iframe чтобы вернуть вашему приложению сообщение о том, что либо пользователю необходимо снова войти в систему, либо он все еще вошел в систему и теперь имеет новый токен доступа.

Если вы хотите открыть проблему GitHub для prompt=none Поддержка на нашей конечной точке авторизации, вы можете сделать это здесь: https://github.com/FusionAuth/fusionauth-issues

Другие вопросы по тегам