HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Az Active Directory programozásának alapvető feltételei


Példaprogram letöltése

2261 bájt

Ha az Active Directory programozását tervezzük szkriptekből, Delphi-ből, C#-ból vagy bármilyen más programnyelvből, akkor első lépésben meg kell felelni bizonyos feltételeknek. Cikkünkben leírjuk, hogy milyen hálózati beállításokkal kell konfigurálni a kliens számítógépeket, hogy elérhetővé váljanak a címtár objektumai és készítünk egy példa szkriptet, amellyel ellenőrizhetjük az elérhetőséget.

Cikkünkhöz mellékeltük az alábbiakban szereplő szkriptet "UserCount.vbs" néven. Futtatásakor kiírja a csatlakoztatott címtár "Users" tárolójában lévő felhasználói fiókok számát. A szkript használatához az első sorában lévő "Microsoft.com" tartománynevet módosítani kell a tényleges névre.
Hiába írunk tökéletes programokat az Active Directory elérésére, objektumainak lekérdezésére vagy egyes tulajdonságok beállítására, ha egy apró hálózati hiányosság miatt nem jön létre a kapcsolat a program és a címtár között. Lehet, hogy hiba nélkül bejelentkeztünk a tartományba, látjuk az erőforrásokat, de az a fránya program mégis hibaüzenettel áll le. Az alábbiakban összeszedjük a sikeres csatlakozás feltételeit:
1. Jelentkezzünk be a tartományba.
Amennyiben a program nem a tartományvezérlőn, hanem egy kliens gépen fut, szükséges bejelentkeztetni a tartományba. Tallózzunk el a következő helyre:
Windows XP alatt:
Vezérlőpult > (Hálózati és Internetes kapcsolatok) > Hálózati kapcsolatok > Speciális > Hálózati azonosítás > Módosítás (Control Panel > (Network and Internet Connections) > Network Connections > Advanced > Network Identification > Change)
Windows 2000 alatt:
Beállítások > Hálózati és telefonos kapcsolatok > Speciális > Hálózati azonosítás > Tulajdonságok (Settings > Network and Dial-up Connections > Advanced > Network Identification > Properties).
A "Tagság" ("Member of") csoportban lehet váltani a tartományi és a munkacsoportbeli tagság között. Győződjünk meg róla, hogy itt a tartomány van beállítva.
2. Windows 2000 Professional vagy későbbi operációs rendszer fusson az ügyfélgépen. Ennél korábbi rendszerek nem tudnak teljes értékű tagjai lenni az Active Directory-nak, nem tudják kezelni a csoportházirendet, ezért csak korlátozott lehetőségekkel dolgozhatunk. Ez a legtöbb esetben nem elegendő a címtárkezelő programok futtatásához.
3. TCP/IP protokoll megléte. Az előző pontokhoz kapcsolódik. Az Active Directory alapesetben igényli a TCP/IP protokollt. A helyi hálózati kapcsolat (vagy éppen a betárcsázásos kapcsolat, ha azzal érjük el a címtárat) tulajdonságlapján nyissuk meg a TCP/IP beállításokat. Két lehetőség áll fenn: vagy automatikus a címkiosztás (DHCP-n keresztül) vagy fix címekkel dolgozunk. Utóbbi esetben kicsit egyszerűbb a helyzet. Szükséges beállítani az IP címet és az alhálózati maszkot és itt jön egy rendkívül fontos dolog, állítsuk be az alapértelmezett átjárót is!!! Hogy mire? Arra az átjáró IP címre, amelyik elvisz a tartományvezérlőhöz. Ha nincs ilyen, akkor magának a tartományvezérlőnek a címét adjuk meg! E nélkül hiába minden. DHCP használata esetén ugyanezeket a beállításokat kell a kiszolgálóval átadatni.
4. Megfelelő jogosultsági szint megléte. A Windows 2000 és XP rendszerek minden objektumhoz biztonsági hozzáférési listával rendelkeznek, ahol elő van írva, hogy ki milyen műveleteket hajthat végre. Amikor egy program próbál elérni egy objektumot, akkor a programot indító felhasználó neve és jelszava adódik át, amennyiben az illető nem jogosult, akkor programokon keresztül sem lesz jogosult. Az Active Directory a le nem tiltott, hitelesített felhasználók számára engedélyezi a címtárhoz való hozzáférést, de csak korlátozottan. Lehet, hogy korlátokat nem is vesszük azonnal észre. Ha sikertelen egy program futtatása felhasználói fiókkal bejelentkezve, akkor próbáljuk meg rendszergazdaként is. Viszont mindenkit óva intünk attól, hogy minden programot rendszergazdai jogokkal futtasson. Arra kell törekedni - persze ez függ a program által megvalósítandó feladattól is -, hogy lehetőleg egy "sima" felhasználó is tudja működtetni.
5. Probléma lehet még a névfeloldás hiánya. Beállított és működő DNS szerverre vagy szélsőséges esetben NetBIOS névfeloldásra szükség van. Ha nem tudja meg a kliens a tartományvezérlő gépnevéből az IP címét, hibát fog jelezni. Tesztelésképpen parancssorba adjuk ki a következő utasítást:
ping gépnév.tartománynév
Ahol a "gépnév" a tartományvezérlő neve a "tartománynév" pedig a tartomány teljesen minősített neve (pl.: SoftwareOnline.hu). Amennyiben a parancsra érkezik válasz a névfeloldás ezen része sikeres, de időtúllépés esetén ellenőrizni kell a DNS kiszolgálót vagy a kliens TCP/IP beállításai között, hogy egyáltalán van-e beállítva DNS kiszolgáló.
A fenti feltételek képezik az Active Directory elérésének alapját. Ilyen természetes dolgokat nem is említettük, hogy kiépített hálózat megléte, megfelelően csatlakoztatott hálózati kábel, modemes kapcsolatnál telepített, bekapcsolt modem, stb.
Készítsünk egy szkriptet a címtár elérésére. Valójában nem azt ellenőrizzük, hogy a címtár ténylegesen elérhető-e, hanem konkrét objektumoknak a listáját próbáljuk meg lekérni. Az objektumok legyenek a "Users" tárolóban található felhasználói fiókok. Azért ezek, mert alapesetben létezniük kell. Számoljuk meg, hogy hány darab van belőlük.
A szkript nem fog lefutni, ha a címtár nem elérhető. Ekkor a 8007054B kódú hibaüzenetet kapjuk vissza.
Első lépésben kapcsolódjunk a tartományhoz az LDAP protokoll segítségével. A "Microsoft.com" tartománynevet módosítani kell a helyi névre.


LDAP = "LDAP://CN=Users,DC=Microsoft,DC=com"
Definiáljunk egy új változót "UsersCount" néven és nullázzuk le az értéket, majd egy FOR ciklus segítségével haladjunk végig az LDAP által visszaadott objektumokon. Ellenőrizzük le, hogy felhasználói fiókról van-e szó (child.class = "user"), ha igen, akkor növeljük a "UserCount" változó értékét eggyel.
UserCount=0
Set objConf = GetObject(LDAP)
For Each child in objConf
  if child.class = "user" then
   UserCount=UserCount+1
  end if
Next
Ha nincs egyetlen felhasználói fiók sem (de kell lenni), akkor valamilyen hiba folytán nem volt sikeres az elérés.
if UserCount=0 then 
 Wscript.Echo "Nem talhatók felhasználói fiókok a 'Users' tárolóban."
end if
Ha viszont találtunk akkor írassuk ki, hogy hány darab van belőle, majd töröljük az LDAP objektumot.
if UserCount>0 then 
 Wscript.Echo UserCount & " db felhasználói fiókok található a 'Users' tárolóban."
end if
Set objConf = Nothing
Az eredményes futtatás feltétele, hogy valóban legyen a "Users" tárolóban legalább egy felhasználói fiók.

Könyv
Ez a cikk megtalálható ebben a könyvben: Windows Software Offline 2002 évkönyv 149. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |