2016-05-11 18 views
6

Pracuję nad aplikacją, która potrzebuje SAML do zarządzania uwierzytelnianiem z serwerem OpenAM.Angularjs i SAML, początek

Właściwie używam Satellizer z OAuth2 niejawny przepływu przyznania i mam następujące:

  • Otwórz angularjs aplikacji w przeglądarce
  • Kliknij przycisk logowania cywilnej
  • nowe okno Najedź istniejąca (z ng aplikacją) jest otwarta, prosząc mnie o moje dane uwierzytelniające.
  • Wypełniam je i zatwierdzam
  • Strony zrobiły swoje rzeczy (rodzaje Aplikacja angularjs pobiera token przez okna (jak to możliwe?)
  • Mogę używać mojej aplikacji z tokenem na okaziciela OAuth2/jwt.

Potrzebuję czegoś, co działa tak samo przy użyciu SAML. Faktem jest, że całkowicie się zagubiłem i wydaje mi się, że powinienem zalogować się na serwerze SAML za pomocą mojego backendu ...

Nie podoba mi się ta sytuacja i muszę wiedzieć, czy jest coś lepszego do zrobienia za pomocą klienta aplikacja boczna.

Co to jest "zwykły" przepływ uwierzytelniający z aplikacją po stronie klienta z SAML?

Dzięki za pomoc

Odpowiedz

3

SAML2 został zaprojektowany w czasach, gdy pojęcie aplikacji po stronie klienta z JavaScript nie został jeszcze wynaleziony.

Typowym sposobem jest zastosowanie pośredniej OpenID Połącz/SAML2 proxy/most (np IdentityServer3 + Kentor.AuthServices.Owin) uwierzytelnianie użytkowników:

  1. użytkownik uruchamia dziennika kolejno w JS aplikacji.
  2. Użytkownik jest przekierowywany (część przepływu OpenID Connect) do serwera IdentityServer3.
  3. Użytkownik jest przekierowany (część SAML2P) do SAML2 Idp.
  4. Użytkownik uwierzytelnia się w SAML2 Idp.
  5. Użytkownik zostaje przekierowany z powrotem do IdentityServer3 (część SAML2P).
  6. Użytkownik jest przekierowywany z powrotem do aplikacji JS (część przepływu OpenID Connect).

Działa to doskonale, aby uzyskać uwierzytelnienie użytkownika za pomocą zewnętrznego identyfikatora. Jeśli masz zasoby, takie jak usługi zaplecza, te połączenia są zwykle autoryzowane za pomocą tokenu na koncie OAuth2 wydanym w kroku 6.

Jeśli Twój backend API oczekuje asercji SAML zamiast tokena na okaziciela, musisz spojrzeć na nasz ale sposoby.