Connexion sur un domaine AD avec AdsOpenObject

Le
Oriane
Bonjour,

Suposons que je sois sur un PC appartenant à un domaine NT4. Je veux me
connecter sur un client d'un domaine AD (les deux domaines ayant des
relations d'approbation bidirectionnelles).

Quel paramètre dois-je passer dans le script suivant:

' Determine DNS name of domain from RootDSE.
Set objRootDSE = GetObject("LDAP://???")
strDNSDomain = objRootDSE.Get("defaultNamingContext")

De fait j'utilise non pas un script mais un code C++:


hr = ADsOpenObject(L"RootDSE", NULL, NULL,
ADS_SECURE_AUTHENTICATION, IID_IADs, (void**)&pObject);

hr = ADsGetObject( L"LDAP://OU=Users,CN=toto",
IID_IADsContainer,(void**)&pCont);


Ce code marche très bien s'il est lancé sur le domaine AD. Mais comment le
faire fonctionner s'il est lancé depuis le domaine NT4 ? J'ai essayé de
remplacer RootDSE par le nom du domaine AD, le nom du contrôleur de domaine
AD rien ne marche :-(

Merci d'avance pour vos pistes !
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Michaël THIBAUT [MVP]
Le #630060
Bonjour,

Qui dit ADSI sur NT4, dit installation de DSCLIENT:
http://www.microsoft.com/ntworkstation/downloads/Other/adclient.asp
--
Cordialement,
Michaël

MVP Windows Server - Directory Services
MCSA/MCSE 2003 Security
MCSA/MCSE 2003 Messaging

Mon blog:
http://mthibaut.over-blog.com

"Oriane" news:
Bonjour,

Suposons que je sois sur un PC appartenant à un domaine NT4. Je veux me
connecter sur un client d'un domaine AD (les deux domaines ayant des
relations d'approbation bidirectionnelles).

Quel paramètre dois-je passer dans le script suivant:

' Determine DNS name of domain from RootDSE.
Set objRootDSE = GetObject("LDAP://???")
strDNSDomain = objRootDSE.Get("defaultNamingContext")

De fait j'utilise non pas un script mais un code C++:

...
hr = ADsOpenObject(L"RootDSE", NULL, NULL,
ADS_SECURE_AUTHENTICATION, IID_IADs, (void**)&pObject);

hr = ADsGetObject( L"LDAP://OU=Users,CN=toto",
IID_IADsContainer,(void**)&pCont);
...

Ce code marche très bien s'il est lancé sur le domaine AD. Mais comment le
faire fonctionner s'il est lancé depuis le domaine NT4 ? J'ai essayé de
remplacer RootDSE par le nom du domaine AD, le nom du contrôleur de
domaine AD... rien ne marche :-(

Merci d'avance pour vos pistes !



Oriane
Le #630057
Je n'ai pas dit ADSI sur NT4... C'est ADSI sur XP...

Merci qd même
Gilles LAURENT
Le #630055
"Oriane" news:
| Bonjour,

Bonjour,

| Suposons que je sois sur un PC appartenant à un domaine NT4. Je veux
| me connecter sur un client d'un domaine AD (les deux domaines ayant
| des relations d'approbation bidirectionnelles).
|
| Quel paramètre dois-je passer dans le script suivant:
|
| ' Determine DNS name of domain from RootDSE.
| Set objRootDSE = GetObject("LDAP://???")
| strDNSDomain = objRootDSE.Get("defaultNamingContext")
|
| De fait j'utilise non pas un script mais un code C++:
|
| ...
| hr = ADsOpenObject(L"RootDSE", NULL, NULL,
| ADS_SECURE_AUTHENTICATION, IID_IADs, (void**)&pObject);
|
| hr = ADsGetObject( L"LDAP://OU=Users,CN=toto",
| IID_IADsContainer,(void**)&pCont);
| ...
|
| Ce code marche très bien s'il est lancé sur le domaine AD. Mais
| comment le faire fonctionner s'il est lancé depuis le domaine NT4 ?
| J'ai essayé de remplacer RootDSE par le nom du domaine AD, le nom du
| contrôleur de domaine AD... rien ne marche :-(
|
| Merci d'avance pour vos pistes !

Lorsque vous utilisez la syntaxe "serverless binding" à partir d'un
domaine NT4, le provider ADSI recherche un contrôleur disponible sur
lequel se connecter. Il ne trouve que le PDC NT4 donc la connection
échoue car le PDC NT4 n'assure pas le service LDAP. Pour que cela
fonctionne, il est nécessaire "d'aider" le provider ADSI en lui
indiquant sur quelle machine/domaine distant(e) se connecter :

--- VBScript ---

Set oRootDse = GetObject ("LDAP://computer/RootDSE")
WScript.Echo oRootDse.Get ("DNSHostName")

--- VBScript ---

--
Gilles LAURENT
http://glsft.free.fr
Oriane
Le #630054
Bonjour,
"Gilles LAURENT" %
--- VBScript ---

Set oRootDse = GetObject ("LDAP://computer/RootDSE")
WScript.Echo oRootDse.Get ("DNSHostName")

--- VBScript ---
Voilà une réponse qu'elle est bonne :-) !!

Cela fonctionne. Mon problème c'est qu'en fait je n'utilise pas un script
mais ADSI via C++.
J'utilise la fonction OpenADsObject ("LDAP://RootDSE"). Je l'ai remplacée
par OpenADsObject ("LDAP://computer/RootDSE") ou computer est le nom du DC
AD. Mais là ca échoue...


Oriane

Oriane
Le #630053
"Gilles LAURENT" %
--- VBScript ---

Set oRootDse = GetObject ("LDAP://computer/RootDSE")
WScript.Echo oRootDse.Get ("DNSHostName")

--- VBScript ---
Incidemment, si on remplace "computer" par "domaine", ca marche aussi...


Oriane

Gilles LAURENT
Le #630052
"Oriane" news:%
| Bonjour,
| "Gilles LAURENT" | %
|| --- VBScript ---
||
|| Set oRootDse = GetObject ("LDAP://computer/RootDSE")
|| WScript.Echo oRootDse.Get ("DNSHostName")
||
|| --- VBScript ---
| Voilà une réponse qu'elle est bonne :-) !!
| Cela fonctionne. Mon problème c'est qu'en fait je n'utilise pas un
| script mais ADSI via C++.
| J'utilise la fonction OpenADsObject ("LDAP://RootDSE"). Je l'ai
| remplacée par OpenADsObject ("LDAP://computer/RootDSE") ou computer
| est le nom du DC AD. Mais là ca échoue...
|
|
| Oriane

Quel est le return code de la fonction AdsOpenObject ?

--
Gilles LAURENT
http://glsft.free.fr
Oriane
Le #629876
Erreur Win32 -
8007052e
Code d'erreur: -2146893044
Libelle: 8009030C: LdapErr: DSID-0C09043E, comment: AcceptSecurityContext
error,
data 0, vece
Fournisseur: LDAP Provider

Oui donc cela est lié au contexte de sécurité...

Bon ben grand merci, faut que je cherche de ce coté...

Oriane
Oriane
Le #629873
Il est dommage quand même que l'un des rares endroits de mon code dans lequel je n'ai pas affiché le code d'erreur précis soit justement celui sur lequel je bute depuis maintenant 3 jours ou presque.

Il est fort heureux que je sois tombé sur toi car mes autres demandes dans les NG anglophones ou français n'ont rien donné.

Maintenant mon code marche sur une station XP d'un domaine NT4 dans le contexte d'un user admin du domaine AD (ou à défaut qui a les droits de création/modification sur les OU de AD que je veux manipuler).

Grâce à toi je vais sans doute pouvoir livrer mon évolution à mon bien aimé client vendredi :-))

Oriane
Gilles LAURENT
Le #629872
"Oriane" news:u%
| Il est dommage quand même que l'un des rares endroits de mon code
| dans lequel je n'ai pas affiché le code d'erreur précis soit
| justement celui sur lequel je bute depuis maintenant 3 jours ou
| presque.
|
| Il est fort heureux que je sois tombé sur toi car mes autres demandes
| dans les NG anglophones ou français n'ont rien donné.
|
| Maintenant mon code marche sur une station XP d'un domaine NT4 dans
| le contexte d'un user admin du domaine AD (ou à défaut qui a les
| droits de création/modification sur les OU de AD que je veux
| manipuler).
|
| Grâce à toi je vais sans doute pouvoir livrer mon évolution à mon
| bien aimé client vendredi :-))
|
| Oriane

Merci pour ce retour ;-)

--
Gilles LAURENT
http://glsft.free.fr
Publicité
Poster une réponse
Anonyme