Vraag & Antwoord

Programmeren

LogonUser en privileges.

2 antwoorden
  • 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.
  • [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

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.