2

Est-il possible de récupérer des informations d'identification activées pour l'utilisateur sur une machine client à partir d'une application Web?Comment récupérer les informations d'identification AD d'un ordinateur client dans une application Web?

Pour clarifier, je suis en train de concevoir une application web qui sera hébergée sur l'intranet d'un client.

L'utilisateur ne doit pas être invité à fournir des informations d'identification lorsqu'il accède à l'application et les informations d'identification de l'utilisateur connecté à l'ordinateur client doivent être saisies automatiquement, sans intervention de l'utilisateur.

+0

Quelle infrastructure d'application Web? ASP.NET? Ce sera pertinent. –

Répondre

1

Peut-être que .NET a une façon plus directe de le faire, mais avec PHP, j'accède simplement à notre serveur Active Directory en tant que serveur LDAP.

Je ne suis pas sûr quels ajustements au serveur sont nécessaires pour faire cela. Je n'ai pas configuré le serveur, je l'interroge juste. Je ne suggère pas que vous utilisiez PHP non plus. Je trouve simplement qu'il est plus facile de traiter avec LDAP, puis d'essayer de lier directement dans Active Directory.

5

Absolument. Ceci est particulièrement utile pour les applications intranet.

Puisque vous n'avez pas spécifié votre environnement, je suppose qu'il est .NET, mais ce n'est pas la seule voie possible bien sûr.

Active Directory peut être interrogé facilement à l'aide LDAP. Si vous utilisez .NET, vous pouvez faire quelque chose comme dans this code example ou mon exemple ci-dessous. Vous pouvez également le faire au sein de SQL environments.

Si vous avez juste besoin de Windows pour gérer l'authentification, vous pouvez définir, par exemple, une application Web .NET pour Windows Authentication. Assurez-vous de turn off Anonymous Logins dans IIS pour votre application. Une fois cela fait, vous pourrez accéder au nom d'ouverture de session Windows de l'utilisateur et l'utiliser pour effectuer d'autres contrôles de sécurité (par exemple, leur group/role membership dans AD).

Vous pouvez également simplifier tout ce gâchis en utilisant quelque chose comme Enterprise Library de Security Application Block.


Voici un court exemple C#: (convertir en VB.NET here)

using System.DirectoryServices; 

/// <summary> 
/// Gets the email address, if defined, of a user from Active Directory. 
/// </summary> 
/// <param name="userid">The userid of the user in question. Make 
/// sure the domain has been stripped first!</param> 
/// <returns>A string containing the user's email address, or null 
/// if one was not defined or found.</returns> 
public static string GetEmail(string userid) 
{ 
    DirectorySearcher searcher; 
    SearchResult result; 
    string email; 

    // Check first if there is a slash in the userid 
    // If there is, domain has not been stripped 
    if (!userid.Contains("\\")) 
    { 
     searcher = new DirectorySearcher(); 
     searcher.Filter = String.Format("(SAMAccountName={0})", userid); 
     searcher.PropertiesToLoad.Add("mail"); 
     result = searcher.FindOne(); 
     if (result != null) 
     { 
      email = result.Properties["mail"][0].ToString(); 
     } 
    } 

    return email; 
} 

Vous ne devez pas spécifier un contrôleur de domaine. L'exécution du constructeur vide/par défaut pour DirectorySearcher l'amènera à tenter d'en rechercher automatiquement — en fait, c'est the preferred method.

+0

J'ai essayé de faire quelque chose de similaire à ce que vous décrivez, mais ne devez-vous pas spécifier quelque part le chemin vers Active Directory? – Geoff

+0

Non. Si vous ne le faites pas, il en demandera un à votre DNS local. C'est en fait l'approche "évolutive" préférée. Voir ma réponse élargie/éditée. –

+0

J'ai compris qu'aucune authentification n'était autorisée - l'utilisateur ne peut même pas être invité à une authentification intégrée. Cela peut fonctionner, mais certaines conditions s'appliquent et cela nécessite une configuration dans le navigateur Web (IE). – tvanfosson

0

Non, bien sûr que non. Pouvez-vous imaginer le chaos qui résulterait dans des applications Web aléatoires pouvant obtenir votre nom d'utilisateur et mot de passe AD?

Maintenant, si vous voulez juste le nom d'utilisateur - qui est en REMOTE_USER si vous utilisez integated windows auth. De plus, Windows auth connecter automatiquement l'utilisateur à votre site - en supposant que vous partagez un domaine (ou confiance).

Edit: IWA travaille dans un scénario intranet, depuis IE - par défaut - comprend des sites intranet dans la zone de sécurité Intranet. En outre, un sysadmin peut utiliser GPO pour définir d'autres sites de confiance. Firefox également supports NTLM, de même que Opera et Chrome. Dans l'ensemble, ce n'est pas une mauvaise façon de configurer un intranet.

Notez, cependant, que vous n'obtenez pas d'informations d'identification.Vous négociez un jeton avec le client, ce qui permet à IWA de rester en sécurité (et mon point ci-dessus est pertinent).

+0

L'affiche originale mentionne que le site sera hébergé sur l'intranet du client. Votre point sur la sécurité est discutable. – Nasir

+0

La sécurité n'est jamais discutable. Même si l'intranet est limité aux plages d'adresses IP, vous devez toujours vous assurer que la personne qui l'utilise est celle qu'elle prétend être. Mettre le site sur le site de confiance de l'utilisateur est le seul moyen d'obtenir automatiquement des informations d'identification transmises de manière fiable par le navigateur. – tvanfosson

+0

@ nsr81: Oui, l'OP a mentionné cela environ une heure après que j'ai posté ma réponse. Ce qui, BTW, est toujours la bonne réponse parce que vous n'obtenez pas d'informations d'identification - vous obtenez un hachage négocié qui vous permet d'obtenir un jeton pour l'utilisateur. –

1

Windows Integrated Authentication, l'utilisateur doit utiliser IE, ET le site doit être dans les sites de confiance de l'utilisateur. Si ces choses sont vraies, alors IE transmettra votre jeton de sécurité de Windows au site Web et il s'authentifiera avec lui. Nous le faisons avec SharePoint sur notre intranet, sinon c'est difficile d'accéder à tout ce qui est limité - vous serez invité chaque fois que vous cliquez sur un document.

Questions connexes