Question

Quelle est la meilleure solution pour implémenter l'authentification unique dans une application .net? J'ai cherché sur Google et trouvé peu de solutions, mais je ne suis pas très convaincu par ces solutions.

L'utilisateur se connecte sur le site Web1 puis passe à le site Web2. Comment website2 saura-t-il que l'utilisateur s'est connecté? J'imagine qu'en passant quelques jetons dans l'URL qui seront vérifiés par website2 dans la base de données pour la validité. Cela signifie que je dois rassembler toutes les URL du site Web1 qui mène à site Web2?

Deuxièmement, si l'utilisateur continue à parcourir le site Web2 pendant environ une heure, puis passe à site Web1. À ce moment-là, la session de website1 a expiré afin que l'utilisateur voie une page de connexion, n'est-ce pas? Mais ce comportement est faux en ce qui concerne la fonctionnalité d’ouverture de session unique.

Était-ce utile?

La solution

Je pense que vous ne comprenez pas comment fonctionne l'authentification unique.

Considérons les sites Web1 et 2 qui souhaitent utiliser le code d'accès unique.

Un site de connexion est créé sur identityProvider. C’est le seul endroit où un écran de connexion apparaît.

Lorsque l'utilisateur visite le site Web1 et choisit de se connecter, le site Web1 l'envoie à l'écran de connexion à identityProvider. L'utilisateur se connecte à identityProvider qui supprime son propre cookie de connexion pour son domaine (et peut éventuellement lui permettre de sauvegarder ses informations d'authentification pour ne plus être invité à le faire). Il redirige ensuite le navigateur vers le site Web1, y compris un jeton dans la requête que le site Web1 ouvre, récupère les informations d’identité et effectue ses propres bits de connexion (en supprimant son propre cookie d’authentification qui dure comme il le souhaite).

Ensuite, l'utilisateur visite le site Web2 et sélectionne la connexion. Website2 renvoie l'utilisateur à identityProvider, qui sait déjà qui il est et, s'il a choisi de sauvegarder ses informations de connexion, s'authentifie silencieusement, puis redirige vers website2 avec un autre jeton que website2 ouvre et exécute ensuite ses propres informations de connexion.

Il y a beaucoup de sécurité autour de cela, limitant les jetons à des sites Web particuliers, permettant uniquement à des jetons d'être envoyés à des sites Web sur liste blanche, etc. etc.

Donc, pour répondre à vos préoccupations

  1. L'utilisateur se connecte sur le site Web1 et passe ensuite au site Web2. Comment website2 saura-t-il que l'utilisateur s'est connecté? Ce n'est pas. website2 doit d'abord demander des informations d'authentification au site à authentification unique.
  2. Cela signifie que je dois rassembler toutes les URL du site Web1 qui mène à site2? Non, sauf si vous faites de website1 le fournisseur d'identité également. Même dans ce cas, il serait difficile de rediriger le site web2 vers le fournisseur d'identité si un jeton est nécessaire.
  3. Deuxièmement, si l'utilisateur continue à parcourir le site Web2 pendant environ une heure, puis passe à site Web1. À ce moment-là, la session de website1 a expiré afin que l'utilisateur voie une page de connexion, n'est-ce pas? - Cela dépend de la configuration du site Web1 et de la durée de vie du cookie d'authentification.
  4. Mais ce comportement est incorrect en ce qui concerne la fonctionnalité d’ouverture de session unique. Non ce n'est pas. La connexion unique ne signifie pas que vous obtenez un jeton flottant partagé entre les sites. Chaque site Web qui utilise l'authentification unique crée son propre cookie d'authentification. Ce qui pourrait arriver, c’est que si l’utilisateur retourne sur le site Web1, il détecte un cookie d’authentification expiré, puis le renvoie à la page de connexion unique, où il est authentifié (en silence) et un nouveau jeton est renvoyé au site Web1 qui en crée un nouveau. cookie d'authentification pour lui-même.

Autres conseils

L’approche officielle de Microsoft consiste à utiliser les services de fédération Active Directory (qui englobe l’authentification SAML avec AD). Cela présente les caractéristiques que vous recherchez, mais peut-être un poids trop lourd pour une application Web publique.

Je suppose que vous ne voulez pas utiliser l'authentification Windows avec Active Directory, etc. L'une des méthodes consiste à passer d'une session authentifiée à l'autre en utilisant un jeton de sécurité sur la chaîne de requête, comme vous le décrivez.

Les deux applications utilisent la même clé de chiffrement publique pour coder / décoder le jeton de sécurité. Comme vous le dites, cela fonctionne très bien si vous avez des liens de transition prédéfinis limités entre les sites, mais si vous souhaitez pouvoir utiliser les liens de page entre les applications, vous devez générer ces URL à la volée, de manière à ce qu'elles contiennent le jeton.

En ce qui concerne les délais d'expiration, le jeton de sécurité contient également une heure d'expiration. Vous générez un nouveau jeton de sécurité à chaque demande de page ou lorsque vous créez un nouveau lien entre les applications.

Généralement, le jeton de sécurité contient un ID utilisateur et un délai d'expiration. Le vérificateur de connexion retourne l'identifiant d'utilisateur ou la valeur null si le délai a expiré.

Ce n'est pas une solution rapide pour coder correctement et en toute sécurité. Peut-être pouvez-vous en trouver un déjà construit sur Code Project?

Vous pouvez utiliser différents mécanismes SSO pour différentes applications en fonction de votre application.

Toutefois, je pouvais voir le message SSO prêt à l'emploi ". service de Live, Google, Yahoo, Facebook, etc. pour fournir une authentification en prenant en charge SAML. Cela nous aidera à nous débarrasser des problèmes liés à la mise en œuvre de notre propre mise en œuvre du service SSO.

Si vous avez besoin d'une compréhension de base du fonctionnement du SSO, vous pouvez vous référer à ici

MS a publié un article à ce sujet au sein de l'entreprise il y a quelques années. Nous avons mis en place les exemples mais ne l'avons jamais mis en œuvre pour de vrai - Authentification unique

Découvrez ce lien avec OAuth et les fournisseurs de services sociaux, il offre une multitude de fonctionnalités d’authentification déjà intégrées à .Net. Vidéo de formation de Microsoft sur OAuth et connexion unique avec des fournisseurs de services sociaux

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top