Mise à jour: Fondamentalement le même problème que autonome PWA rompt la connexion } mais sur iOS.
Si vous ajoutez une application Web à l'écran d'accueil, Chrome sur Android partage le stockage local avec le même domaine dans le navigateur. Vous pouvez tester cela en accédant à https://wilfrem.github.io/add_to_homescreen_test/ puis en ajoutant à l'écran d'accueil et en constatant que vous avez le même identifiant lorsqu'il est ouvert à partir de l'écran d'accueil. (J'ai fait Nexus 5x)
Si vous faites la même chose dans iOS Safari, vous obtenez un nouvel identifiant. (j'ai fait l'iPod iOS 12.1.1)
La bibliothèque oidc-client-js définit une référence de session dans la mémoire de stockage locale, puis la rappelle sur l'appel Web S. Par conséquent, si vous essayez de vous connecter à partir d'une application Web ouverte à partir de l'écran d'accueil sur iOS, le fournisseur (oidc) de Safari est ouvert, puis l'URL de l'application Web est redirigé, mais pas dans l'application Web ouverte à partir de l'écran d'accueil. En raison de la différence de stockage local, vous obtenez:
Aucun état correspondant trouvé dans la mémoire
Comment êtes-vous censé utiliser oidc avec un iOS ouvert à partir de l'application Web de l'écran d'accueil si le stockage local n'est pas partagé sur le même domaine? Ou comment demander à iOS de rouvrir la fenêtre appropriée (celle ouverte depuis l'écran d'accueil) lors de la redirection vers l'application Web? Ou comment faire pour que iOS ne quitte jamais l'application plein écran lors de la navigation vers l'OP (fournisseur oidc) en premier lieu?
modifier:
Voici un récit pour expliquer le problème.
my.app.com
UserManager.signinRedirect()
UserManager.signinRedirect()
appelle OidcClient.createSigninRequest()
OidcClient.createSigninRequest()
enregistre l'état de connexion dans localstorage et permet d'accéder à my.op.com
voirsur Android my.op.com
ouvre un onglet Chrome et sur iOS my.op.com
ouvre Safari.my.app.com/signin-callback.html
voici le problèmeSous Android, my.app.com/signin-callback.html
s'ouvre dans l'application ouverte à partir de l'écran d'accueil, sous iOS, il reste dans Safari. Donc vous obtenez:
Aucun état correspondant trouvé dans la mémoire
Je n'ai pas de difficulté avec l'erreur. En fonction de ce qui se passe, l'erreur est tout à fait attendue. Je ne sais tout simplement pas comment amener Safari à se comporter de manière à fonctionner avec la bibliothèque.
Si c'est pertinent c'est mon manifeste.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"
}
]
}
add a également supprimé scope
mais n'a eu aucun changement de comportement.
update: a également essayé de définir le début du domaine complet, pas seulement le /
relatif, toujours pas de changement.
J'ai déjà expérimenté ce problème et cela m'a aidé. Voir si aide !