Authentification des utilisateurs en utilisant Active Directory dans l'application client-serveur

voix
11

On m'a demandé de fournir un soutien pour l'authentification des utilisateurs contre un Active Directory dans notre application serveur client existant.

Au moment où un utilisateur fournit un nom d'utilisateur et mot de passe à partir d'une machine cliente, passé sur le fil (crypté) à notre processus de serveur et en correspondance avec un nom d'utilisateur / mot de passe stocké dans une base de données.

Dans un premier temps , je pensais que ce serait un problème facile à résoudre, puisque je pouvais simplement authentifier le nom / mot de passe de l'utilisateur contre Active Directory de notre processus serveur. Cependant , il se révèle que les utilisateurs ne devraient pas avoir à entrer un mot de passe de notre application client, au lieu de le prendre ses qualifications à partir du courant de Windows session de connexion.

Je suis maintenant confronté à un problème de la façon d'authentifier à l' aide d' Active Directory sans avoir un mot de passe? Je suis sûr qu'il doit y avoir un moyen de passer en quelque sorte une sorte de « jeton » du client à notre processus de serveur qui pourrait être utilisé comme méthode d'authentification, mais mes recherches jusqu'à présent a fait chou blanc.

Notre serveur est écrit en C ++, donc nous allons utiliser l' API win32 . Je compte aussi développer et débugger à l' aide d' une machine virtuelle fonctionnant sous Windows 2008 AD LDS - J'espère que cela sera suffisant pour ce que je suis en train de réaliser.

Toute aide ou des conseils est très apprécié.

Créé 26/08/2009 à 23:35
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
9

Vous faites un NTLM / Kerberos / Negotiate boucle d'échange SSPI . Il y a aa échantillon complet sur le site MSDN tant pour le client et le serveur . Pour être clair: vous ne pas utiliser toute sorte d'accès LDAP explictily. Le LSA (Local Security Authority) qui parle avec LDAP et établit l'identité du client. Si vous êtes à faire la succesful toute boucle SSPI, l'authentification a déjà réussi et l'identité du client est alread authentifié contre le LDAP. Si votre serveur a besoin de connaître l'identité du client (par exemple. Connaître la rname utilisation) , il récupère du ce contexte de sécurité a donné lieu à la boucle SSPI utilisant le QueryContextAttributes(..., SECPKG_ATTR_NAMES,...)et récupère le nom d'utilisateur de la SecPkgContext_Namesstructure.

Créé 26/08/2009 à 23:43
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more