2013-09-25 25 views
8

Piszę dość dużą aplikację z interfejsem HTML/CSS/JS, używając AngularJS i interfejsu ASP.NET MVC Web API jako zaplecza.Pozwalając aplikacji czystego HTML/CSS/JS SPA zapytać użytkownika o jego nazwę użytkownika/hasło i przekazać ją do programu ADFS?

Chciałbym, aby użytkownicy mogli uwierzytelniać, zainstalowałem serwer AuthorizationTradition na oddzielnym komputerze, a na kontrolerze domeny jest uruchomione wystąpienie ADFS. Obecnie używam strony internetowej dostarczonej z ADFS do logowania, ale byłoby miło, gdybym mógł użyć mojej własnej strony, która poprosiłaby o kombinację nazwy użytkownika/hasła, przekazał ją do AuthorizationServer/ADFS, a następnie po prostu skorzystał z token uwierzytelniania.

Czy ktoś zrobił coś podobnego?

Pozdrawiam, Daníel

+0

Czy masz jakieś obejście problemu? Podziel się rozwiązaniem, ponieważ muszę rozwiązać podobny problem. –

+0

Zrobiłem następujące: - dodano punkt końcowy/login do mojego interfejsu API, który użytkownik może POST (do SSL, więc nazwa użytkownika/hasło nie są wysyłane w postaci zwykłego tekstu) - Używam biblioteki Thinktecture.IdentityModel w moim API projekt połączyć się z AuthorizationServer (przy użyciu Code Flow). Kod wygląda następująco: ' \t var client = new OAuth2Client ( \t \t nowy Uri (punkt końcowy), \t \t ClientID tajne); \t LoginResponse response = null; \t AccessTokenResponse tokenResponse = null; \t spróbować \t { \t \t tokenResponse = client.RequestAccessTokenUserName (data.user, data.pass, "czytać"); \t} \t catch (Exception ex) { \t \t \t \t} ' Działa ... – dabs

+0

Niestety o formatowaniu, to się trochę spod kontroli ... – dabs

Odpowiedz

3

W rzeczywistości użytkownik będzie logować się w SPA to masz po stronie serwera (Java lub .NET lub *), że dostać się do prośby.

Serwer żąda tokena w programie ADFS, program ADFS wysyła token, a serwer przekazuje token do AngularJS w odpowiedzi za pośrednictwem pliku cookie.

kątowej bocznej nic do roboty oczekiwać przechwytywania http sprawdzić status odpowiedzi (401,403) ...

cookie zostaną automatycznie przez angularjs złe w każdym wniosku, jeżeli chcesz wiedzieć, w jaki sposób implementuje htppInterceptor na angularjs prostu sprawdzić:

AngularJs -.net MVC WebApi Authentication example

W tym wątku opiszę w jaki sposób realizuje ten krok.

W każdym razie: twoje SPA jest oknem RIA, ale nadal jest częścią webappu klienta. Nie sądzę, że jest to naprawdę dobre (myślę, że to naprawdę złe), aby umożliwić klientowi bezpośredni kontakt z programem ADFS ... Jak to zrobić, jeśli nie robisz tego w Man-In-the-Middle?

+0

Brzmi interesująco. Czy projekt Web API byłby w stanie obsłużyć żądanie logowania? – dabs

+0

Dla mnie to nie jest tak naprawdę norma, ale strona logowania to klasyczna strona MVC, kiedy jesteś zalogowany w SPA! –

+0

W każdym razie mogę podać przykład z logowaniem po stronie SPA, jeśli chcesz –