2013-04-22 30 views
5

Mam zestaw użytkownika w lazurowym katalogu aktywnym, w moim programie zbieram nazwę użytkownika i hasło użytkownika końcowego i chcę sprawdzić w stosunku do aktywnego katalogu Windows Azure.Jak zweryfikować poświadczenia użytkownika usługi Active Directory?

czy to możliwe? pl zapewnić pewne odniesienie.

wiem użyciu poleceń cmdlet Power-shell możemy potwierdzić, chcę wiedzieć, czy są jakieś inne sposoby walidacji użytkownika crednetial

+0

Co próbujesz osiągnąć? Czy możesz opisać projekt wyższego poziomu twojego schematu uwierzytelniania i autoryzacji? Na podstawie Twojego opisu brzmi to jak próbujesz czegoś dość niepewnego i "niegrzecznego". Czy istnieje powód, dla którego nie korzystasz z uwierzytelniania opartego na roszczeniach w aplikacji strony ufającej i pozwalając na uwierzytelnianie obsługi Windows Azure Active Directory (WAAD)? – Nathan

+0

W przypadku większości aplikacji, które wdrożyłem dla bardzo dużych firm, udostępniliśmy lokalną AD jako źródło uwierzytelniania i nie mogę się doczekać, aby dowiedzieć się dokładnie, w jaki sposób Azure AD może zastąpić to w moich aplikacjach w chmurze. Wolałbym nie pisać kodu uwierzytelnienia, jeśli nie muszę, i niech WAAD zajmie się tym wszystkim, ponieważ skupiam się na tym, w jaki sposób autoryzacja dotyczy mojej logiki aplikacji. – Graham

+0

Czy kiedykolwiek znalazłeś rozwiązanie tego problemu? Próbuję zrobić to samo? – Gotts

Odpowiedz

2

Ach, myślę, starasz się realizować scenariusz SSO. Wypróbuj Adding Sign-On to Your Web Application Using Windows Azure AD! Jeśli klient nie ma subskrypcji Azure, ten przykład Multi-Tenant Cloud Application for Windows Azure Active Directory opisuje szczegóły przy użyciu biblioteki uwierzytelniania usługi Azure Active Directory. Mam nadzieję że to pomoże.

+1

Twoje linki są przydatne.Ale z punktu widzenia programistów, byłbym bardziej zainteresowany znalezieniem sposobu, w którym mam już nazwę użytkownika/domenę/hasło itp. Ze mną. Nie chcę więc otwierać okna przeglądarki i pozwolić użytkownikowi na to (na razie tak jest). Jak wykonać uwierzytelnienie WAAD, skoro już mamy wszystkie szczegóły u nas? Obecnie używamy 'AuthenticationContext.AcquireToken (resource, client-id, resource-app-id-uri)', ale jak używać 'AuthenticationContext.AcquireToken (resource, ClientCredential)'? – iammilind

+0

Link do tego [this] (http://code.msdn.microsoft.com/AAL-Server-to-Server-9aafccc1/sourcecode?fileId=93566&pathId=1250178454) dostarcza przykład kodu, ale nie jest pewny, czy miałoby to zastosowanie albo nie. Nie jestem pewien, jak użyć części 'clientSecret' do utworzenia' ClientCredential'. – iammilind

0

Mówisz, że "zbierzesz nazwę użytkownika i hasło użytkownika końcowego i chcesz sprawdzić z Windows Active Directory" - jestem prawie pewien, że to NIE jest możliwe, i wiem na pewno, że nie jest to zalecane. Jest to przeciwieństwo trendu podejścia takiego jak OAuth, w którym użytkownicy mogą logować się na wielu aplikacjach przy użyciu tych samych poświadczeń (a nadchodząca część jest krytyczna) bez ujawniania tym "wielu aplikacji" ich hasła.

Jest to idea federacyjnego uwierzytelniania i jest bezpieczniejszym modelem niż starsze metody zezwalania wszystkim aplikacjom, z którymi się logujesz, na bezpośredni dostęp do Twojej nazwy użytkownika i hasła. Zwykle w takim przepływie, zakładając istniejące konto Office 365, nowa aplikacja, którą utworzyłeś i skonfigurowałeś do uwierzytelniania za pomocą O365, ZREDUKUJ przeglądarkę internetową użytkownika do O365, gdzie użytkownik wpisze nazwę użytkownika i hasło O365, a następnie zgodzi się (jednorazowo), że można je używać z tą nową aplikacją, wtedy przeglądarka POWRÓT Z powrotem do aplikacji, z tokenem bezpieczeństwa z pewnymi roszczeniami. Oświadczenia te będą zawierać imię i nazwisko, adres e-mail oraz inne informacje dotyczące zalogowanego użytkownika i będą wystarczające do zidentyfikowania użytkownika w aplikacji.

To samo dotyczy uwierzytelniania za pomocą, powiedzmy, Facebooka lub Google'a - Twoja aplikacja nigdy nie zobaczy bezpośrednio hasła użytkownika. Miałoby to zastosowanie nawet do logowania do samego StackOverflow, więc widziałeś przepływ pracy.

0

Mam nadzieję, że ta opcja ADAL może również pomóc.

ClientCredential encryptedCredentials = Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(string.Format("{0}:{1}", "[email protected]", "PasswordX"))); 
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", encryptedCredentials); 
2

Jeśli ktoś nadal szuka odpowiedzi. Obsługa uwierzytelniania użytkownika bez otwierania nowego okna dla użytkownika została dodana w ADAL w wersji 2.7.10707.1513-rc poprzez udostępnienie obiektu klasy UserCredential do przeładowanej funkcji AcquireToken.

public AuthenticationResult AcquireToken(string resource, string clientId, UserCredential userCredential); 

Oto przykładowy kod dla powershell. $UserCred = new-object Microsoft.IdentityModel.Clients.ActiveDirectory.UserCredential("****@*****", "*****") $result = $AuthContext.AcquireToken($resource,$clientID,$UserCred)

+2

Ta funkcja jest dostępna tylko dla klientów natywnych - a nie aplikacji internetowych. – BenV

Powiązane problemy