6
votes

Comment implémenter une connexion unique sur .net?

Quelle est la meilleure solution pour implémenter une connexion unique sur une application .NET? J'ai googlé et trouvé peu de solutions mais je ne suis pas très convaincu de ces solutions.

Les journaux utilisateur sur la site Web1, puis se déplacent sur Website2. Comment SIGNITEZ2 SAIIT SAILLER L'UTILISATEUR est connecté? Je suppose que en passant des jetons dans l'URL qui sera vérifié par Website2 dans la base de données pour la validité. Cela signifie que j'ai besoin de marshall toutes les URL de la site Web1 qui prend sur le site Web2?

Deuxièmement, si l'utilisateur continue à naviguer sur le site Web2 pour dire 1 heure, puis passez à la site Web1. À ce moment-là, la session de site Web1 a expiré de sorte que l'utilisateur verra une page de connexion, n'est-ce pas? Mais ce comportement est faux selon la fonction unique sur la fonctionnalité.


2 commentaires

Ceci est une authentification unique et non sur une connexion unique, vous devez vous connecter n Times pour n sites avec la même authentification.


Vous devez distinguer entre l'authentification et l'autorisation. Vous pouvez autoriser un utilisateur qui signifie que vous savez qu'ils sont ceux qu'ils prétendent être, mais vous devez toujours autoriser cet utilisateur, sur vos 2 sites Web, pour accéder au contenu qu'ils peuvent et ne peuvent pas accéder sur chaque site. Le jeton expirera mais peut généralement être rafraîchi pour maintenir l'accès.


6 Réponses :


0
votes

MS a fait un article sur celui-ci au sein de l'entreprise quelques années de retour - nous configurons les échantillons mais je ne l'ai jamais mis en œuvre pour real - Connexion unique


1 commentaires

J'ai déjà vu ce papier mais ça ne répond pas à mes doutes.



3
votes

L'approche officielle Microsoft est via des services de fédération Active Directory (qui enveloppe SAML avec authentification AD). Cela présente les caractéristiques que vous recherchez - mais est peut-être trop épaisse pour une application Web publique.


0 commentaires

3
votes

Je suppose que vous ne voulez pas utiliser l'authentification Windows avec Active Directory, etc. Une méthode consiste à remettre à partir d'une session authentifiée à l'autre à l'aide d'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 cryptage public pour encoder / décoder le jeton de sécurité. Comme vous le dites, cela fonctionne bien si vous avez des liens de transition prédéfinis limités entre les sites, mais si vous souhaitez pouvoir utiliser des liens de page entre les applications, vous devez générer ces URL à la volée afin qu'ils contiennent le jeton.

La façon dont vous traitez avec les délais d'expiration est que le jeton de sécurité contient également un délai d'expiration. Vous générez un nouveau jeton de sécurité chaque page de page ou lorsque vous créez un nouveau lien entre les applications.

Typiquement, le jeton de sécurité contient un UTIALID et un délai d'attente et le vérificateur de connexion renvoie l'ID utilisateur ou NULL si le délai d'attente a expiré.

Ce n'est pas une solution rapide pour coder correctement et sécurisé. Peut-être que vous pouvez trouver un projet pré-construit sur le code?


0 commentaires

15
votes

Je pense que vous êtes mal compris que les œuvres de connexion unique.

permet de considérer le site web1 et website2 qui souhaitent utiliser un seul signon.

Un site Web de connexion est créé à IdentityProvider. C'est le seul endroit où un écran de connexion apparaît.

Lorsque l'utilisateur visite le site Web1 et choisissez de vous connecter au site Web1 envoie l'utilisateur à l'écran de connexion de IdentityProvider. L'utilisateur se connecte à IdentityProvider qui laisse tomber son propre cookie de connexion pour son domaine (et permet également à l'utilisateur d'enregistrer leurs informations d'authentification afin qu'elles ne soient jamais invitées). Il redirige ensuite le navigateur sur le site Web1, y compris un jeton dans la demande quant au site Web1 fissures ouvertes, obtient des informations d'identité de et effectue ses propres bits de connexion (déposition de son propre cookie d'authentification qui dure comme il le souhaite).

Ensuite, l'utilisateur visite le site Web2 et sélectionne la connexion. Site Web2 rebondit l'utilisateur à IdentityProvider, qui sait déjà qui l'utilisateur est déjà et, s'ils l'ont choisi d'enregistrer leurs informations de connexion, authentifient silencieusement, puis redirige vers le site Web2 avec un autre jeton que Site Web est ouvert, puis effectue ses propres bits de connexion.

Il y a un tas de sécurité autour de lui, limitant les jetons à des sites Web particuliers, ne permettant que des jetons d'être envoyés à des sites Web blanchissants, etc.

afin de répondre à vos préoccupations

  1. Les journaux utilisateur sur la site Web1, puis se déplacent sur le site Web2. Comment SIGNITEZ2 SAIIT SAILLER L'UTILISATEUR est connecté? Ce n'est pas le cas. Le site Web2 doit demander d'abord des informations d'authentification à partir du site unique.
  2. Cela signifie que j'ai besoin de marshall toutes les URL de la site Web1 qui prend sur le site web2? Non, sauf si vous ne faites pas de site Web1, le fournisseur d'identité aussi. Même ce serait douloureux, mieux d'avoir la site Web2 redirige vers l'IdentityProvider si un jeton est nécessaire.
  3. Deuxièmement, si l'utilisateur continue à naviguer sur le site Web2 pour dire 1 heure, puis passez à la site Web1. À ce moment-là, la session de site Web1 a expiré de sorte que l'utilisateur verra une page de connexion, n'est-ce pas? - Cela dépend de la manière dont vous configurez le site Web1, et combien de temps son authentification Cookie dure.
  4. Mais ce comportement est faux selon la fonctionnalité unique sur la fonctionnalité. Non ce n'est pas. Un seul signon ne signifie pas que vous obtenez un jeton flottant qui est partagé entre des sites. Chaque site Web utilisant la connexion unique crée toujours leur propre cookie d'authentification. Ce qui pourrait arriver, c'est si l'utilisateur redevient sur la site Web1, il détecte un cookie d'authentification expiré, puis envoie à l'utilisateur à nouveau à la page de signature unique où ils sont authentifiés (silencieusement) et un nouveau jeton est repoussé sur le site Web1 qui crée une nouvelle Cookie d'authentification pour elle-même.

2 commentaires

Ceci est une authentification unique et non sur une connexion unique, vous devez vous connecter n Times pour n sites avec la même authentification.


Je pense que l'étape "Puis l'utilisateur visite le site web" i> sélectionne la connexion "est ce que l'OP veut éviter. Comment est-ce possible?



0
votes

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

  • à l'aide de la configuration de la machine

  • connexion unique dans un deuxième niveau de domaine

  • domaines croisés à l'aide de la base de données commune (la mise en œuvre doit être prise soins par nous)

    Cependant, je pouvais voir " SSO sur la boîte de SSO " de LIVE, Google, Yahoo, Facebook, etc. pour assurer l'authentification en soutenant SAML. Cela nous aidera à vous débarrasser des problèmes de maintien de notre propre mise en œuvre du service SSO.

    Si vous avez besoin d'une compréhension de base Comment le travail SSO, vous pouvez vous référer ici


0 commentaires

0
votes

Consultez ce lien avec l'utilisation de OAuth et des fournisseurs sociaux, il offre une multitude de capacités d'authentification déjà cuites à .NET. vidéo de formation Microsoft sur OAuth et Single Sign sur les fournisseurs sociaux


0 commentaires