SAML vs federated login with OAuth

Jaka jest różnica między SAML a federated login z OAuth? Które rozwiązanie ma większy sens, jeśli firma chce korzystać z aplikacji webowej innej firmy, a także chce jednokrotnego logowania i być organem uwierzytelniającym?

Author: Chung Wu, 2010-05-15

7 answers

Rozwiązują różne problemy.

SAML to zestaw standardów, które zostały zdefiniowane, aby udostępniać informacje o tym, kim jest użytkownik, jaki jest jego zestaw atrybutów, i daje sposób przyznania / odmowy dostępu do czegoś lub nawet zażądać uwierzytelnienia.

OAuth jest bardziej o delegowanie dostępu do czegoś. Zasadniczo pozwalasz komuś "działać" jak ty. Jest najczęściej używany do przyznawania api dostępu, które mogą zrobić coś na Twoim w imieniu.

To dwie zupełnie różne rzeczy.


Kilka przykładów, które mogą pomóc.

OAuth pomyśl o Twitterze. Powiedzmy, że używasz Google Buzz i Twitter, i chcesz napisać aplikację, aby być w stanie utrzymać dwa zsynchronizowane. Zasadniczo możesz ustanowić zaufanie między aplikacją a Twitterem. Po raz pierwszy łączysz aplikację z Twitterem, wykonujesz klasyczny monit o zalogowanie się na Twitterze, a następnie pojawia się okno potwierdzenia i pyta "czy chcesz przyznać dostęp do "Nazwa Twojej aplikacji"?"po kliknięciu" tak " zaufanie zostało ustanowione, a teraz Twoja aplikacja może działać jak ty na Twitterze. Może czytać twoje posty, a także tworzyć nowe.

SAML-dla SAML pomyśl o jakimś rodzaju "umowy" między dwoma niepowiązanymi systemami członkowskimi. W naszym przypadku możemy użyć US Airways i Hertz. Nie ma wspólnego zestawu danych uwierzytelniających, które mogą przenieść cię z jednej strony na drugą, ale powiedzmy, że Hertz chce zaoferować" ofertę " US Airways. (Przyznane I wiedz, że to skrajny przykład, ale proszę o cierpliwość). Po zakupie lotu, zaoferują bezpłatną wypożyczalnię samochodów członkom jego przewodniczącego. US Airways i Hertz ustawiliby jakąś formę zaufania i jakiś sposób identyfikacji użytkownika. W naszym przypadku naszym "federated id" będzie adres e-mail i będzie to jednokierunkowy zestaw zaufania Hertz ufa, że dostawca tożsamości US Airways dostarczy token, który jest dokładny i bezpieczny. Po rezerwacji lotu US Airways dostawca tożsamości będzie wygenerować token i wypełnić sposób uwierzytelnienia użytkownika, a także "atrybuty" o osobie w naszym przypadku najważniejszym atrybutem będzie jego poziom statusu w US Airways. Gdy token zostanie wypełniony, przekazuje go przez jakiś rodzaj odniesienia lub zakodowany w adresie url, a gdy dotrzemy do Hertza, patrzy na token, sprawdza go i teraz może zezwolić na bezpłatny wynajem samochodu.

Problem w tym przykładzie SAML polega na tym, że jest to tylko jeden wyspecjalizowany przypadek użycia z wielu. SAML jest standard i istnieje prawie zbyt wiele sposobów, że można go wdrożyć.


Alternatywnie, jeśli nie zależy ci na autoryzacji, możesz niemal argumentować, że uwierzytelnianie odbywa się za pomocą SAML i OpenID.

 117
Author: Nix,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-29 17:33:11

Spójrz na to proste wyjaśnienie podsumowane tutaj:

Wiele osób jest zdezorientowanych co do różnic między SAML, OpenID i OAuth, ale to naprawdę bardzo proste. Chociaż jest kilka nakładania się, oto bardzo prosty sposób rozróżnienia między trzy.

OpenID-jednokrotne logowanie dla konsumentów]}

SAML-jednokrotne logowanie dla użytkowników korporacyjnych

OAuth-autoryzacja API pomiędzy aplikacjami

Dla ludzie, którzy lubią wzorce projektowe OO, myślę, że jest ładny następstwo wrapper patterns. Think of , dekorator i Proxy wzory. Zasadniczo wszystkie są takie same, to tylko Opakowania... różnicą jest intencja każdego wzoru.

Podobnie, SAML, OAuth i OpenID ułatwiająróżne intencje poprzez wspólny mechanizm, czyli przekierowanie do dostawcy usług/organu ds. tożsamości w celu prywatnej interakcji, a następnie przekierowanie do aplikacji strony trzeciej, z której pochodzą.

Rozglądając się po sieci można zauważyć nakładanie się możliwości protokołów. uwierzytelnianie za pomocą OAuth jest całkowicie rozsądne. SSO nad OAuth może nie mieć większego sensu, ponieważ SAML i OpenID są specjalnie nastawione na Federacyjną tożsamość.

Do samego pytania, w kontekście korporacyjnym brzmi SAML bardziej odpowiedni niż OAuth dla SSO . Założę się, że jeśli spojrzysz na aplikacje innych firm, które chcesz zintegrować ze swoją tożsamością korporacyjną, zobaczysz, że są one już zaprojektowane do integracji z SAML/LDAP/Radius itp. IMO OAuth jest bardziej odpowiedni dla interakcji z Internetem między aplikacjami lub być może aplikacjami zawierającymi architekturę zorientowaną na usługi w dużym środowisku korporacyjnym.

Zasady autoryzacji mogą być określone w środowisku korporacyjnym również na inne sposoby. LDAP jest wspólne narzędzie do tego. Organizowanie użytkowników w grupy i kojarzenie uprawnień aplikacji z członkostwem w grupie jest powszechnym podejściem. Tak się składa, że LDAP może być również używany do uwierzytelniania. Active Directory jest świetnym przykładem, choć wolę OpenLDAP.

 32
Author: quickshiftin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-29 15:11:07

SAML ma wiele " profili "do wyboru, aby umożliwić innym użytkownikom" logowanie się " do twojej witryny. SAML-P lub SAML Passive jest bardzo powszechny i dość prosty w konfiguracji. WS-Trust jest podobny i również pozwala na Federację wśród stron internetowych.

OAuth jest przeznaczony do autoryzacji. Możesz przeczytać więcej tutaj:

Jaka jest różnica między OpenID a OAuth?

 2
Author: random65537,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:54:44

Zajmują się subtelnym przypadkiem użycia

    SAML-współdzielenie danych uwierzytelniających (np. SSO) użytkownika różnym dostawcom usług (np. internet lub usługa internetowa) OAuth-użytkownik delegujący aplikację, aby uzyskać dostęp do zasobu w imieniu swojej]}
 2
Author: yudis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-21 14:23:44

SAML jest do uwierzytelniania-używany głównie w scenariuszu Single Sign On . {[1] } służy do autoryzacji reprezentacji zasobów.

JSON Web Token (JWT) jest alternatywą dla tokenów SAML XML. JWT może być używany z OAuth

Dobrym odniesieniem jest SAML vs. OAuth: którego z nich powinienem użyć?

 1
Author: Lijo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-15 14:59:40

Termin Federacja naprawdę oznacza tożsamość połączeń między systemami. Jest to związane z SSO, ale nie są takie same. uważam ten wpis na blogu za bardzo pomocny w kategoriach tego, co naprawdę oznacza Federacja.

 0
Author: Jake miyazaki,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-14 20:33:23

Znalazłem dobry artykuł tutaj

Tutaj wpisz opis obrazka

SAML (Security Assertion Markup Language) jest zestawem standardów do osiągnięcia Single Sign On (SSO), zarządzania Federacją i tożsamością.

Przykład: użytkownik (główny) uwierzytelnia się za pomocą strony internetowej rezerwacji lotów AirFlyer (dostawca tożsamości), która skonfigurowała SSO za pośrednictwem SAML z witryną rezerwacji lotów shuttler (dostawca usług). Po uwierzytelnieniu do Flyer użytkownik może zarezerwować transfery na Shuttler bez konieczności uwierzytelniania

OAuth (Open Authorization) jest standardem autoryzacji zasobów. Nie zajmuje się uwierzytelnianiem.

Przykład: Aplikacja mobilna do udostępniania zdjęć (konsument OAuth), która umożliwia użytkownikom Importowanie zdjęć z konta na Instagram (dostawca OAuth), który wysyła tymczasowy token dostępu lub klucz do aplikacji do udostępniania zdjęć, która wygasa po kilku godzinach.

 0
Author: Jack Ryder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-03 19:52:49