Przewodnik programisty dotyczący uwierzytelniania SAML [3 Online Tools]

W dzisiejszym świecie uproszczenie zarządzania hasłami jest niezbędne. Ponieważ firmy robią postęp w cyfryzacji, pracownicy częściej niż kiedykolwiek korzystają z narzędzi do współpracy, przesyłania wiadomości i przechowywania.

To stanowi wyzwanie dla programistów: jak zapewnić pracownikom bezpieczny dostęp do wewnętrznych aplikacji i danych przechowywanych w chmurze? Dla wielu odpowiedzią jest uwierzytelnianie SAML!

Co to jest SAML?

Security Assertion Markup Language lub SAML to otwarty standard, który upraszcza procesy uwierzytelniania. Opiera się na języku XML (Extensible Markup Language), który standaryzuje komunikację między podmiotami, które mają zostać uwierzytelnione, a usługą internetową lub aplikacją. Innymi słowy, SAML umożliwia używanie jednego loginu do logowania się do wielu różnych aplikacji.

Z jednej strony dostawca usług potrzebuje uwierzytelnienia dostawcy tożsamości (IdP), aby udzielić autoryzacji użytkownikowi. Na przykład Salesforce to dostawca usług polegający na dostawcy tożsamości do uwierzytelniania użytkowników.

Z drugiej strony dostawca tożsamości potwierdza, że ​​użytkownik końcowy jest tym, za kogo się podaje, i wysyła te dane do dostawcy usług wraz z prawami dostępu użytkownika do usługi. Jednym z przykładów jest AuthO, jeden z liderów w dostarczaniu rozwiązań tożsamościowych.

A co z jednokrotnym logowaniem SAML?

Jedną z głównych ról SAML jest włączenie logowania jednokrotnego. Przed SAML logowanie jednokrotne było możliwe, ale zależne od plików cookie i możliwe tylko w tej samej domenie.

SAML umożliwia jednokrotne logowanie (SSO), umożliwiając użytkownikom dostęp do wielu aplikacji za pomocą jednego loginu i zestawu poświadczeń. Chociaż SAML nie jest nowy, istnieje od 2002 roku, a wiele nowych aplikacji i firm SaaS używa SAML do logowania jednokrotnego. Jego najnowsza wersja, SAML 2.0, umożliwia międzydomenowe logowanie jednokrotne oparte na sieci Web i jest standardem autoryzacji zasobów.

Jakie są zalety uwierzytelniania SAML?

SAML przynosi wiele korzyści dla bezpieczeństwa, użytkowników i innych dostawców usług (SP).

Prostota: użytkownicy logują się do dostawcy tożsamości tylko raz, a następnie cieszą się bezproblemowym i bezpieczniejszym dostępem do wszystkich aplikacji.

Zwiększone bezpieczeństwo: Wielu dostawców usług nie ma czasu ani zasobów, aby wdrożyć i wymusić bezpieczne uwierzytelnianie użytkownika podczas logowania. Ogólnie rzecz biorąc, dostawcy tożsamości są lepiej przygotowani do uwierzytelniania tożsamości użytkowników. Zwracając uwierzytelnianie do dostawcy tożsamości, SAML umożliwia bezpieczne uwierzytelnianie, które może stosować wiele warstw zabezpieczeń, takich jak MFA.

Lepsze wrażenia użytkownika: dzięki SAML użytkownicy mogą pożegnać się z bólem głowy związanym z zapamiętywaniem wielu nazw użytkowników i haseł

Mniejsze koszty zarządzania: dostawcy usług mogą poprawić bezpieczeństwo swojej platformy bez przechowywania haseł. Nie musisz zajmować się zapomnianymi hasłami. Help desk zmniejsza koszty i uwalnia zespoły techniczne w zakresie innych pilnych wniosków.

Co to jest Auth0 i jak jest połączone z uwierzytelnianiem SAML?

Auth0 to platforma zapewniająca usługę uwierzytelniania i autoryzacji użytkowników. Może być zarówno IdP, jak i SP. Auth0 oferuje uniwersalne logowanie, które można zintegrować z SAML. Deweloperzy często używają Auth0 z SAML, aby zdywersyfikować ryzyko poprzez posiadanie wielu dostawców tożsamości.

Auth0 może być używany z prawie wszystkimi głównymi językami i interfejsami API. Może być również zintegrowany z dostawcami usług społecznościowych, bazami danych i katalogami LDAP.

Przepływ logowania jednokrotnego SAML

Jedną z głównych ról SAML jest włączenie jednokrotnego logowania (SSO). Przed SAML logowanie jednokrotne było możliwe, ale zależne od plików cookie i możliwe tylko w tej samej domenie.

SAML umożliwia logowanie jednokrotne, umożliwiając użytkownikom dostęp do wielu aplikacji za pomocą jednego loginu i poświadczeń. SAML nie jest nowy, istnieje od 2002 roku, a wiele nowych aplikacji i firm SaaS używa SAML do SSO. Jego najnowsza wersja, SAML 2.0, umożliwia międzydomenowe logowanie jednokrotne oparte na sieci Web i jest standardem autoryzacji zasobów.

Mówiąc konkretnie, obejmuje to żądanie uwierzytelnienia od użytkownika tylko raz, gdy ten ostatni używa różnych aplikacji. Na przykład możemy pomyśleć o uwierzytelnianiu Google, współdzielonym między różnymi usługami Gmail, Youtube, Google Apps itp.

W tym trybie działania Google jest dostawcą tożsamości (IdP) dla swoich usług. Usługi te nazywane są „dostawcami usług” (SP).

Uwierzytelnianie

Podczas łączenia się z zewnętrzną aplikacją wysyła nieznanego użytkownika do korporacyjnego IdP. Ten dostawca tożsamości to usługa sieciowa dostępna w HTTPS. Może być hostowany wewnętrznie lub zewnętrznie.

Uwierzytelnianie wewnętrzne

Następnie użytkownik potwierdza swoją tożsamość dostawcy tożsamości. Ta faza może być wykonana przez jawne uwierzytelnienie (login/hasło) lub propagację istniejącego tokena.

Generowanie twierdzenia

IdP wygeneruje następnie „token”, rodzaj dowodu tożsamości użytkownika, ważnego tylko dla żądanej usługi i przez określony czas. W tym tokenie znajdziemy w szczególności:

  • Tożsamość użytkownika: login, e-mail lub inne pola
  • Opcjonalne dodatkowe atrybuty: nazwisko, imię, język itp.
  • Okres ważności tokena
  • Podpis tokena przez IdP

Transmisja z IdP do SP

W najbardziej praktycznym trybie asercja nie jest przekazywana bezpośrednio od dostawcy tożsamości do dostawcy usług, ale przez samego użytkownika. Poprzez mechanizm HTTP Bounce, dostawca tożsamości dostarczy przeglądarce klienta token do przesłania do dostawcy usług. Można go porównać z dowodem osobistym wydanym przez prefekturę, który należy przedstawić dowolnemu organowi.

Zużycie tokena przez SP

Usługodawca otrzymuje token od użytkownika. Dostawca usług zdecydował się zaufać temu dostawcy tożsamości. Weryfikuje również podpis i integralność tokena, a także okres ważności. Jeśli testy są rozstrzygające, SP otwiera sesję dla użytkownika.

Źródło: Wikipedia

Uwierzytelnianie SAML vs. Autoryzacja użytkownika

Często uwierzytelnianie SAML jest mylone z autoryzacją. Dla jasności ważne jest rozróżnienie pojęć uwierzytelniania i autoryzacji.

Uwierzytelnianie: jest to weryfikacja tożsamości użytkownika; w zasadzie sprawdza się, czy są tym, za kogo się podają. Przykładem jest użycie adresu e-mail i hasła w celu uzyskania dostępu do systemu – pojedynczej sesji lub loginu dla innych platform.

Autoryzacja: są to uprawnienia, które użytkownik nadaje narzędziu innej firmy, aby uzyskać dostęp do zasobów na swoim koncie. Za zgodą użytkownika protokół autoryzacji wymienia tokeny bez dostępu do ich poświadczeń. Zwykle robisz to, zezwalając platformie (takiej jak Facebook) na dostęp do pewnych informacji z Twojego konta Google.

Niezbędne terminologie SAML

Asercja SAML

Asercje SAML są zazwyczaj przekazywane przez dostawców tożsamości do dostawców usług. Oświadczenia zawierają oświadczenia używane przez dostawców usług do podejmowania decyzji dotyczących kontroli dostępu. SAML udostępnia trzy rodzaje deklaracji:

  • Deklaracje uwierzytelniania zapewniają, że dostawca usług rzeczywiście został uwierzytelniony u dostawcy tożsamości w określonym czasie za pomocą metody uwierzytelniania.
  • Deklaracja atrybutu potwierdza, że ​​podmiot jest powiązany z pewnymi atrybutami. Atrybut to po prostu para nazwa-wartość. Strony ufające wykorzystują atrybuty do podejmowania decyzji dotyczących kontroli dostępu.
  • Uprawnione oświadczenie o decyzji potwierdza, że ​​podmiot może działać na zasobach poprzez przedstawienie dowodów na to. Wyrazistość stanów decyzji autoryzacyjnych w SAML jest celowo ograniczona.

Asercja obsługi klienta

Usługa klienta potwierdzenia lub ACS to punkt, w którym dostawca tożsamości przekierowuje po odpowiedzi uwierzytelniania użytkownika. Punkt, do którego przekierowuje dostawca tożsamości, to punkt końcowy HTTPS, który przesyła dane osobowe.

Domyślny stan przekaźnika

Jest to domyślny adres URL, na który użytkownik zostanie przekierowany po uwierzytelnieniu wiadomości SAML. Do koordynowania komunikatów między IdP i SP służy domyślny stan przekazywania.

SAML jest szeroko stosowanym protokołem i często trzeba zdekodować asercje SAML. Oto niektóre z najlepszych narzędzi SAML do kodowania, dekodowania i formatowania komunikatów i potwierdzeń SAML:

#1. Narzędzie SAML

SAMltool by OneDesign to zbiór internetowych narzędzi i zestawów narzędzi SAML. Obejmują one różne narzędzia do kodowania i dekodowania komunikatów SAML, szyfrowania i deszyfrowania asercji oraz podpisywania i weryfikowania komunikatów i asercji SAML. SAMLtool zapewnia również kilka różnych wtyczek do integracji tych narzędzi z kilkoma CMS.

#2. Samtool.io

Oferowane przez Auth0, samltool.io to narzędzie online, które również dekodujesz, kontrolujesz i weryfikujesz komunikaty i potwierdzenia SAML poprzez proste wklejanie surowego XML lub adresów URL zawierających żądania.

#3. dekoder SAM

dekoder SAM to proste narzędzie online do dekodowania SAML oferowane przez PingIdentity. Dekoder SAM może służyć do dekodowania, uzupełniania i formatowania komunikatów SAML, potwierdzeń i metadanych.

Ostatnie słowa

Standard SAML jest bardzo przydatny do implementacji centralnego wystąpienia uwierzytelniania opartego na języku znaczników. Jedną z jego znaczących zalet jest wysoka wydajność i wysoki standard bezpieczeństwa.

W szczególności minimalizowana jest liczba możliwych wycieków bezpieczeństwa, ponieważ poszczególne aplikacje nie muszą przechowywać ani synchronizować danych użytkownika. W ten sposób osiągany jest jeden z podstawowych celów, jakim jest pogodzenie wysokiego stopnia bezpieczeństwa z możliwie najlepszym poziomem łatwości użytkowania.

Możesz także spojrzeć na niektóre z najlepszych platform uwierzytelniania użytkowników.