Ga naar inhoud

LogonUser en privileges.


anoniem

Aanbevolen berichten

Ik heb effe geen zin om een hele dag te zoeken op het net om het volgende op te lossen: Ik heb een client applicatie die met behulp van DCOM of via RDS communiceert met een COM+ server. Allemaal mooi en aardig en het werkt prima. Echter, ik wil mijn applicatie voorzien van een logon schermpje waarmee de gebruiker onder een andere account kan communiceren met de server. Voor RDS is dit simpel want ik hoef alleen maar de username en password op te nemen in de URL die ik gebruik voor de connectie. Maar bij DCOM ligt het wat lastiger. (De optie Run as is geen optie omdat dit betekent dat de gebruiker de applicatie steeds weer moet afsluiten om een andere identiteit te kunnen gebruiken.) Nu kan ik mij vergissen maar de oplossing lijkt mij dat ik op de client de LogonUser API aanroep, een account token terug krijg en vervolgens een ImpersonateLoggedOnUser() aanroep om vanaf dat moment dus met de andere account door te gaan. Werkt prima, mits ik mijn originele user-account heb ingesteld als "Act as part of the operating system" heb ingesteld bij de local policies. Dat is nu juist iets wat ik niet wil! Kortom, hoe geef ik mijn originele account tijdelijk het SE_TCB_NAME privilege zodat ik kan inloggen in mijn applicatie met een andere account? Enig idee, iemand? Of is dit gewoon niet mogelijk? Oh, voor de duidelijkheid, ik gebruik Windows 2000 en Delphi op de server, maar de client kan in principe iedere Windows versie zijn.
Link naar reactie
[quote:c1dfec254b="Workshop Alex"]Ik heb een client applicatie die met behulp van DCOM of via RDS communiceert met een COM+ server. Allemaal mooi en aardig en het werkt prima. Echter, ik wil mijn applicatie voorzien van een logon schermpje waarmee de gebruiker onder een andere account kan communiceren met de server. Voor RDS is dit simpel want ik hoef alleen maar de username en password op te nemen in de URL die ik gebruik voor de connectie. Maar bij DCOM ligt het wat lastiger. (De optie Run as is geen optie omdat dit betekent dat de gebruiker de applicatie steeds weer moet afsluiten om een andere identiteit te kunnen gebruiken.) Nu kan ik mij vergissen maar de oplossing lijkt mij dat ik op de client de LogonUser API aanroep, een account token terug krijg en vervolgens een ImpersonateLoggedOnUser() aanroep om vanaf dat moment dus met de andere account door te gaan. Werkt prima, mits ik mijn originele user-account heb ingesteld als "Act as part of the operating system" heb ingesteld bij de local policies. Dat is nu juist iets wat ik niet wil! Kortom, hoe geef ik mijn originele account tijdelijk het SE_TCB_NAME privilege zodat ik kan inloggen in mijn applicatie met een andere account? Enig idee, iemand? Of is dit gewoon niet mogelijk? Oh, voor de duidelijkheid, ik gebruik Windows 2000 en Delphi op de server, maar de client kan in principe iedere Windows versie zijn.[/quote:c1dfec254b] Ten eerste is het rechten systeem alleen van toepassing op NT+ systemen. Dus wil je de client op iedere Windows versie laten kunnen draaien dien je de desbetreffende API-calls dynamisch te laden. Of stop al deze NT+ only functies in een DLL ofzo die je alleen laadt onder NT+ Oke... Volgens mij heeft Colin Wilson een aantal classes waarmee je het e.e.a. makkelijk zou kunnen regelen. [url]http://www.wilsonc.demon.co.uk/delphi.htm[/url] Onder het kopje NT Low level utilities
Link naar reactie
Effe wat nagezocht... Inderdaad, de LogonUser API is alleen bedoeld voor NT+ systemen. Niet een erg groot probleem want dit betekent dat alle W95/98/ME gebruikers dan via RDS een connectie moeten maken. Lig ik niet echt wakker van. De meeste clients zullen onder W2000 draaien. Het enige wat moet gebeuren is dat de gebruiker in de applicatie op de server kan inloggen onder een andere account. Daarvoor heb ik dus een bepaalde privilege nodig. En mogelijk zijn er nog een paar extra issues. Ik denk dat ik het privilege-probleem nu wel kan oplossen maar extra informatie is altijd welkom. ;) Bedankt voor de link. Erg interessant!
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...