Можно ли с помощью FusionAuth и предоставленной ему конечной точки oauth вызывать prompt = none для тихого обновления в SPA? - PullRequest
0 голосов
/ 26 апреля 2019

Я пытаюсь интегрировать автоматическое обновление маркеров доступа в iframe, используя prompt = none, используя конечную точку авторизации oauth. Кажется, я не могу понять, как это сделать или даже поддерживается, и не вижу никакой информации в документации здесь:

https://fusionauth.io/docs/v1/tech/oauth/overview

Я пытался использовать prompt = none в URL, но, похоже, он ничего не делает.

Я ожидаю, что приглашение = ничего не будет работать в соответствии с OpenID Connect Core 1.0

Спасибо за вашу помощь!

1 Ответ

1 голос
/ 26 апреля 2019

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

...