En utilisant Windows Identity Foundation pour se connecter quelqu'un à une application ASP.net

StackOverflow https://stackoverflow.com/questions/1958596

  •  21-09-2019
  •  | 
  •  

Question

Mon superviseur au bureau me dit qu'il a vu une démonstration avec une pré-version de Microsoft « Genève » (maintenant Windows Identity Foundation) où un développeur a fait ce qui suit:

  1. Il a mis en place une sorte d'application Web ASP.net où un utilisateur peut se connecter à l'aide d'un système de connexion sur mesure. Dans les coulisses, l'application Web enregistre l'utilisateur en tant qu'utilisateur dans un Active Directory.

  2. Les utilisateur se connecte.

  3. Une fois l'utilisateur connecté, le fil d'application Web ASP.net fonctionne comme l'utilisateur connecté pendant toute la durée de la session de l'utilisateur et peut accéder aux ressources sur le réseau (par exemple l'exécution de requêtes SQL sur les tables dont l'accès est contrôlé active Directory)

Les étapes 2) et 3) sont exactement les mêmes que dans l'onglet « Authentification Windows intégrée » paramètre dans la « Sécurité de répertoire » des paramètres du site Web dans IIS. Étape 1) est différent parce que nous utilisons un système de connexion sur mesure, par opposition à l'authentification Kerberos.

Nous voulons mettre en place une de nos applications pour fonctionner exactement comme décrit en 1), 2) et 3). Cependant, toute la documentation que je l'ai vu de Windows concernant Identifier la Fondation est de Cardspace et de la sécurité fédérée. Nous avons intérêt zéro à l'utilisation ou l'autre de ces technologies en ce moment.

Nous voulons juste être en mesure d'enregistrer les utilisateurs dans Active Directory aux comptes dans les coulisses.

Oui, nous avons essayé le ActiveDirectoryMembershipProvider avec Forms Authentication, mais il est une bidouille complète à fait d'accéder aux ressources sur le réseau nécessitant une usurpation d'identité sur chaque page!

Mise à jour le 7 janvier 2010. D'accord, je travaille dans ce domaine depuis un certain temps, et tout ce que j'ai réussi à trouver en deçà de ce que je veux atteindre. Peut-être la fonctionnalité que je veux est pas dans la version de WIF.

Voici où je suis maintenant. Je l'ai trouvé de la documentation sur MSDN qui indique qu'il existe trois identités différentes utilisées dans ASP.net: l'identité spécifiée par HttpContext.Current.User, l'identité spécifiée par Thread.CurrentPrincipal, et enfin l'identité spécifiée par WindowsIdentity.GetCurrent. lien

Dans un exemple de l'endroit où je veux utiliser le processus que je suis à la recherche à la conception, je veux effectuer une requête SQL que l'utilisateur connecté. Dans mon débogueur, je vois que je mets facilement les utilisateurs HttpContext et discussion à l'utilisateur connecté. Cependant, lorsque je me connecte au serveur SQL en utilisant l'authentification Windows, il se connecte toujours toujours toujours en tant qu'utilisateur WindowsIdentity.GetCurrent et que l'utilisateur est toujours toujours toujours l'identité du processus ASP.net à moins que je utilise l'authentification Windows avec usurpation d'identité. Je ne peux absolument pas utiliser l'authentification Windows avec mon application parce que mes utilisateurs doivent se connecter en jouant une chanson de flûte magique et l'authentification Windows n'a pas de support pour se connecter avec des chansons de flûte magique.

Pour clarifier, il n'y a aucun problème avec l'obtention d'un WindowsIdentity représentant l'utilisateur connecté (qui connecté avec une chanson de flûte magique). Le problème est que je ne peux pas l'utiliser WindowsIdentity pour exécuter des requêtes SQL pour mon utilisateur.

Était-ce utile?

La solution

WIF vous permet de configurer si une réclamation fondée cartes d'identité à un compte AD, la demande peut être soit une demande d'identité fédérée ou délivrée par une carte d'information. C2WTS remplit cette fonction.

Même quand il fait carte en raison de la délégation que vous allez toujours devoir déléguer si vous souhaitez utiliser l'identité AD IIS emprunte l'identité - qui est juste comment cela fonctionne, à moins que vous configurez délégation Kerberos pour IIS

Autres conseils

Vous pouvez obtenir le même en utilisant Impersonation d'identité en ASP.net. En outre, vous devez activer l'authentification Windows intégrée pour vous application web. Cela permettra de résoudre le but. Si l'utilisateur connecté n'a pas les droits nécessaires pour accéder aux ressources que vous obtiendrez des exceptions de sécurité que vous aurez à gérer.

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