Tagi na forum.

Windows 14205 SQL Server 2132
sieci 6796 Windows XP 1921
SQL 6578 Outlook 1838
SBS 3868 Uprawnienia 1777
Windows 2003 2781 IIS 1636
Windows Server 2588 Office 1516
DNS 2315 Skrypt 1499

pokaż wszystkie tagi na forum

Autoryzacja win. we własnej aplikacji

pablo_picasso 2011-04-26 11:24:35
0
avatar
 
 

Witam.
 
Mam pytanie dotyczące możliwości wykorzystania autoryzacji Windows (np. logowania się do sieci opartej na domenie z systemem Windows Serwer 2008 R2) we własnej aplikacji.
 
Działałoby to w ten sposób, że po uruchomieniu lokalnego komputera i zalogowaniu się do domeny, uruchamiając własny program – aplikacja automatycznie wykorzystywałaby domenowego użytkownika (autoryzację systemu Windows) do własnej autoryzacji (bez potrzeby ponownego wpisywania loginu i hasła).
 
Czy wiecie może jak coś takiego zrobić (może macie jakiś przykład takiej autoryzacji) ?
Aplikacja będzie pisana w Delphi albo C#.
 
Bardzo proszę o pomoc.
Z góry dziękuję i czekam na jakieś informacje.
 
tagi: delphi   sieci   Windows


szogun.krepa  2011-04-26 12:25:17 #1
0
avatar
 
 
To może być przydatne do odczytu bierzącego użytkownika z lokalnego komputera:
http://social.msdn.microsoft.com/forums/en-US/netfxbcl/thread/36e1bcfa-a46a-47a8-8b21-78357efe866b/
 
Do weryfikacji po stronie serwera czy w Domenie istnieje użytkownik o wskazanych poświadczeniach będziesz musiał użyć API natywnego:
 
advapi32 metoda LogonUser

 --if (PomoglCi)
{
Click("Pomógł mi");
}
Strona szoguna

if (PomoglCi)

{

Click("Pomógł mi");

}

Strona szoguna

pablo_picasso  2011-05-06 09:40:09 #1.1
0
avatar
 
 

Dzięki Szogun…
 
Skorzystałem z twojej rady i pobawiłem się tą metodą. Powiem tak – ciekawe rozwiązanie, wszystko działa ale do pewnego momentu. Jak mam dostęp do jawnego hasła to mogę tej metody używać ale ja w aplikacji stosuje szyfrowanie jednokierunkowe i podczas uruchamiania aplikacji nie mam szans odszyfrować hasła użytkownika i wstawić go do metody LogonUser.
I tu nasuwa się kolejne pytanko:
Czy da się w ogóle jakoś odczytać hasło użytkownika zalogowanego do domeny (sieci opartej na domenie z systemem Windows Serwer) ???.

Jeśliby się dało to zaszyfrowałbym je sobie podczas uruchamiania aplikacji i porównał z tym co jest w bazie (konkretnego użytkownika).
 
A może jest jakiś inny sposób sprawdzenia zalogowanego użytkownika w domenie ( na danym komputerze).
Aplikacja jest pisana w Delphi 7.
 
Bardzo proszę o jakieś pomysły…
 
Pozdrawiam--

winkel  2011-05-06 10:35:57 #2
0
avatar
 
 
Witaj,
Powiedz w czym masz problem.
Uruchamiając aplikacje pracuje ona w kontekście danego użytkownika Windows i z jego prawami.Aby wygorniej było się do nich dostać piszesz: AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);i od tego momentu obiekt principal twoich wątków związany jest z twoim kontem domenowym.Piszesz:
WindowsIdentity identity = WindowsIdentity.GetCurrent();
i masz dostęp do loginu, masz informacje o unikalnym numerze sid danego użytkownika, nie potrzebujesz hasła, do inny użytkownik nie dostanie takiego samego identyfikatora w jednej domenie.Mając identity możesz też ręcznie utworzyć obiekt principal: WindowsPrincipal principal = new WindowsPrincipal(identity);
Jego metoda IsInRole pozwala ci sprawdzić czy dany użytkownij jest w danej grupie domenowej.Możesz to też zapisać tak: [PrincipalPermission(SecurityAction.Demand, Role="domena\rola")] void MojaMetoda() { // do soemthing }Framework nie pozwoli ci uruchomić tej metody, jeśli twój użytkownik nie jest w grupie domenowej o nazwie rola.Lepiej zarządzać prawami w AD (albo domenie) niż tworzyć własną baze i wiązać konta domenowe z własnymi tabelami w bazie.
--
____________ Robert Winkler

Edytowano 1 raz. Ostatnio 2011-05-06 10:36:13 przez winkel.

____________
Robert Winkler

Udziel odpowiedzi

avatar
Treść wpisu:

Zaloguj się lub Zarejestruj się aby wykonać tę czynność.

Idź na górę strony