Oauth2 Implicit Flow с токенами обновления для одностраничного приложения

Я использую Thinktecture AuthorizationServer (AS), и он отлично работает.

Я хотел бы написать собственное одностраничное приложение javascript, которое может напрямую вызывать WebAPI, однако неявный поток не предоставляет токен обновления.

Если сделан вызов AJAX, если срок действия токена истек, API отправит перенаправление на страницу входа в систему, поскольку данные используют динамические всплывающие окна, и это прервет пользователя.

Как Facebook или Stackoverflow делают это и все еще позволяют JavaScript, запущенному на странице, вызывать API?

Предложенное решение

Имеет ли смысл приведенный ниже сценарий (при условии, что это можно сделать с помощью фреймов):

Мой SPA направляет меня в AS, и я получаю токен от Implicit Flow. Внутри AS я нажимаю разрешитьRead data область и нажмитеRemember decision, затемAllow кнопка.

Так как я нажалRemember decision Кнопка, всякий раз, когда я нажимаю AS для токена, новый токен передается обратно автоматически, и мне не нужно входить в систему (я вижу файл cookie FedAuth, который запоминает мое решение, и считаю, что это позволяет просто работать).

С моим SPA (ненадежным приложением) у меня нет токена обновления только токена доступа. Итак, вместо этого я:

Убедитесь, что пользователь вошел в систему и нажал запомнить решение (в противном случае iframe не будет работать)Позвоните в WebAPI, если ответ 401 попытается получить новый токен, выполнив следующие действия ...У меня есть скрытый iframe на странице, в котором я задам URL-адрес для получения нового токена доступа с Сервера авторизации.Получите новый токен из хеш-фрагмента iframe, затем сохраните его в SPA и используйте для всех будущих запросов WebAPI.

Я думаю, что у меня все еще были бы проблемы, если бы файл cookie FedAuth был украден.

Любой стандартный или рекомендуемый способ для вышеупомянутого сценария?

Ответы на вопрос(4)

Ваш ответ на вопрос