Hirdetés

2024. május 2., csütörtök

Gyorskeresés

Hozzászólások

(#9963) joysefke


joysefke
veterán
LOGOUT blog

WindowsIdentity-vel kapcsolatban szeretnék segítséget kérni. Nem értek hozzá, eddig nem kellett ezzel foglalkoznom. Világítsatok rá, ha valami valahol technikailag nem megoldható.

1, van egy applikáció ami egy lokál service account "LOCALPC\MyService" nevében fut.
ennek az accountnak igény szerint tudok jogosultságokat adni.

2, Elő kell állítanom egy WindowsIdentity objektumot ami egy domain usert személyesít meg: DOMAIN1\Pisti . Ezt a WindowsIdentity objektumot egy belső API használja. Úgy gondolom, hogy nem imperszonálásra, csupán a usert érintő AD security releváns információk megnézésére. Ebben nem vagyok biztos.

3, Az applikáció rendelkezik a domain admin user/pwd párosával "DOMAIN1\Administrator" + Pwd (igen, ez már eredetileg egy ilyen applikáció :) ) Pistiével és a többi userével viszont nem.

Tehát szeretnék DOMAIN1\Pistike nevére előállítani az applikációban egy WindowsIdentity objektumot.

Nem tudom, hogy ez egyáltalán lehetséges-e.

4, Létezhet-e WindowsIdentity objektum a LOCALPC-n DOMAIN1\Pisti nevére anélkül, hogy a LOCALPC a DOMAIN1-ben lenne? Jelenlegi környezetemben a LOCALPC bent van a domainben, de az appot futtató account nincsen.

5, Hogyan tudom megvalósítani? Nem akar összejönni, bár ez nem csoda, mert nincs vele tapasztalatom?

Azt látom, hogy ha "DOMAIN1\Administrator" futtat kódot, akkor
new WindowsIdentity(string: DOMAIN1_Pisti_upn)
konstruktorral tudok érvényes és az app számára használható WindowsIdentity objektumot létrekozni. Pisti nevére Pisti pwd-je nélkül

Az is működik, hogy LOCALPC\MyService futtatja a kódot és bejelentkezteti a DOMAIN1\Administrator-t username/pwd-vel
advapi32.dll.LogonUser(lpszUsername,  lpszDomain, string lpszPassword, dwLogonType, dwLogonProvider, out phToken) -en keresztül. Itt végül visszakapok egy WindowsIdenity a DOMAIN1\Administrator nevére és úgy tűnik, hogy imperszonálásra is tudom használni, de a
new WindowsIdentity(string: DOMAIN1_Pisti_upn)
hívás így is elbukik. Az alábbi hibaüzenettel:

Error Message: Test method ApiSandbox.ImpersonationSandbox.Test2 threw exception: System.DllNotFoundException: Unable to load DLL 'secur32.dll': Either a required impersonation level was not provided, or the provided impersonation level is invalid. (Exception from HRESULT: 0x80070542) Stack Trace: at System.Security.Principal.WindowsIdentity.KerbS4ULogon(String upn, SafeAccessTokenHandle& safeTokenHandle) at System.Security.Principal.WindowsIdentity..ctor(String sUserPrincipalName, String type) at System.Security.Principal.WindowsIdentity..ctor(String sUserPrincipalName) at ApiSandbox.ImpersonationSandbox.Test2() in C:\...\ImpersonationSandbox.cs:line 48

Az eleje, az "Unable to load DLL 'secur32.dll'" biztosan nem stimmel. Ugyanazt a tesztkódot domain-adminként elindítva lefut.

Van ezzel a témával kapcsolatban valami jó anyag?

[ Szerkesztve ]

Copyright © 2000-2024 PROHARDVER Informatikai Kft.