OIDC и PWA (добавить на главный экран) - PullRequest
0 голосов
/ 27 декабря 2018

Обновление: в основном та же проблема, что и Автономный PWA прерывает вход в систему , но в iOS.

Если вы добавляете веб-приложение на домашний экран, Chrome на Android разделяет локальное хранилище стот же домен в браузере.Вы можете проверить это, перейдя на https://wilfrem.github.io/add_to_homescreen_test/, затем добавив на домашний экран, и увидите, что у вас есть тот же идентификатор при открытии с домашнего экрана.(Я сделал Nexus 5x)

Если вы сделаете то же самое в iOS Safari, вы получите новый идентификатор.(я сделал iPod iOS 12.1.1)

Библиотека oidc-client-js устанавливает ссылку на сеанс в локальном хранилище и затем вызывает его при обратном вызове входа в веб-приложение.Поэтому, если вы попытаетесь войти в систему из веб-приложения, открытого с главного экрана в iOS, он открывает OP (поставщик oidc) в Safari, а затем перенаправляет обратно URL-адрес веб-приложения, но в Safari не открывается веб-приложение, открытое с домашнего экрана,поэтому из-за различий в локальном хранилище вы получаете:

В хранилище не найдено соответствующего состояния

Как вы должны использовать oidc с iOS, открытой из веб-приложения домашнего экранаесли локальное хранилище не используется в одном домене?Или как заставить iOS открыть правильное окно (открытое с главного экрана) при перенаправлении обратно в веб-приложение?Или как заставить iOS никогда не покидать полноэкранное приложение при переходе к OP (провайдеру oidc) в первую очередь?

edit:

Вот описание, объясняющее проблему.

  • открыть my.app.com
  • добавить на главный экран
  • открыть приложение с домашнего экрана
  • нажать кнопку входа
  • кнопку входазвонки UserManager.signinRedirect()
  • UserManager.signinRedirect() звонки OidcClient.createSigninRequest()
  • OidcClient.createSigninRequest() сохраняет состояние входа в локальное хранилище и переходит к my.op.com см. на андроиде my.op.com открывает вкладку Chrome и на iOS my.op.com открывает Safari
  • полный процесс входа в систему при операциях
  • op перенаправляет на my.app.com/signin-callback.html вот в чем проблема

На андроиде my.app.com/signin-callback.html открывается в приложении, открытом с главного экрана, на iOS оно остается в Safari.Итак, вы получите:

Не найдено подходящего состояния в хранилище

У меня нет проблем с ошибкой, исходя из того, что происходит, ошибка полностью ожидаема, япросто не знаю, как заставить Safari вести себя так, чтобы он работал с библиотекой.

Если это уместно, это мой manifest.json

{
  "name": "omitted",
  "short_name": "omitted",
  "theme_color": "#omitted",
  "background_color": "#omitted",
  "display": "standalone",
  "scope": "/",
  "start_url": "/",
  "icons": [
    {
      "src": "omitted",
      "sizes": "192x192",
      "type": "image/png"
    },
    {
      "src": "omitted",
      "sizes": "512x512",
      "type": "image/png"
    }
  ]
}

добавить также удалено scope но без изменений в поведении.

обновление: также попытался установить начало для полного домена, а не только относительного /, по-прежнему без изменений.

1 Ответ

0 голосов
/ 08 января 2019

Я уже испытывал эту проблему, и она мне помогла.Посмотрите, поможет ли это !

...