3

Je suis en train de développer une application SPA qui se connecte à un tas de webAPI. Ces API nécessitent que l'utilisateur soit connecté, donc j'ai commencé à creuser dans des exemples Openid Conect et OAuth2, principalement en utilisant IdentityServer.Est-il possible d'avoir une authentification SPA sans rediriger vers une page de connexion externe

Ils requièrent tous, pour des raisons de SPA, que l'allocation implicite soit utilisée pour récupérer les access_tokens. Les actualisations de jetons sont gérées en se connectant au serveur d'authentification à l'aide de l'iframe masqué.

Ce que je comprends de cette approche pour renouveler votre access_token est que les sessions sont maintenues au niveau du service d'authentification. Iframe caché va au serveur d'authentification, les sessions sont toujours actives, new access_token est fourni.

Tout cela semble bon pour moi, sauf (pour UX reasosn) le fait que mon utilisateur doit être redirigé vers la page du serveur d'authentification pour fournir des informations d'identification. N'est-il pas possible d'avoir mon application SPA envoyer les informations d'identification au serveur d'authentification, obtenir le access_token, puis faire l'actualisation en utilisant l'iframe caché pour le renouvellement silencieux (nous ne voulons évidemment pas que l'utilisateur continue à informer toutes les 15 minutes ou toutes les heures ..).

Si cela n'est pas acceptable pour des raisons de sécurité, pourriez-vous expliquer pourquoi?

Répondre

0

C'est exactement ce que fait la bibliothèque oidc-client-js. Jetez un oeil à automaticSilentRenew paramètres dans leur page wiki. Naturellement, cela ne fonctionne que tant que la session sur le serveur d'authentification est toujours active.

+1

L'utilisation de la bibliothèque oidc-client-js ne nécessite pas l'utilisation d'ImplicitFlow? Si je comprends bien, l'utilisation de ce type de flux nécessite que l'utilisateur soit redirigé vers une page de connexion hébergée sur IdentityServer. J'essayais d'obtenir un comportement où je peux entrer un utilisateur/mot de passe dans l'application Angular. –

+0

Vous devrez toujours utiliser le flux implicite avec oidc-client-js. Pour la première fois, lorsqu'un utilisateur tente d'accéder au SPA protégé, l'utilisateur est invité à s'authentifier. Pour l'expiration de jeton d'accès suivante, la bibliothèque lancera un appel de renouvellement de jeton d'accès silencieux (c'est-à-dire qu'il demandera un nouveau jeton d'accès quelques secondes/minutes avant l'expiration du jeton actuel). Ainsi, l'utilisateur ne sera pas invité à s'authentifier chaque fois que le jeton d'accès expire. Le stockage des informations d'identification des utilisateurs/des informations d'identification des clients dans SPA n'est pas sûr car elles sont exposées publiquement – Karthik