Azure AD B2C. Jak sprawdza się jako system zarządzania tożsamością

3 Sty 2020

Avatar
Yaroslav Shatkevich
Programista z 17-letnim doświadczeniem. Współzałożyciel i CTO The Story. Fascynat planowania prac programistycznych, autor licznych specyfikacji IT i DevOps. Wyróżniany przez Awwwards, nagrodzony iF Design Award 2018. Na co dzień pracuje w technologiach Python, PHP, React, JavaScript. Stworzył ponad 90 aplikacji webowych i mobilnych oraz systemów dedykowanych.

Usługa Azure Active Directory (Azure AD) wchodzi w skład usług cloudowych Azure Cognitive Service od Microsoftu. Azure AD B2C, którego specyfikę przybliżę, pozwala na wyoutscource’owanie obsługi tożsamości użytkowników dla firmy, aplikacji webowych i mobilnych.

Tworzenie własnych mechanizmów autoryzacji rozproszonej wydaje się dziś zwykłym marnotrawstwem czasu i pieniędzy. Naprzeciw temu wychodzi Azure AD B2C.

Azure AD B2C zapewnia funkcje logowania jednokrotnego i uwierzytelniania wieloskładnikowego. Przyjrzymy się temu rozwiązaniu z punktu widzenia projektowania UX, a dokładniej przepływu użytkowników.

Azure AD jako część usługi cloud Microsoftu

Na wstępie należy zaznaczyć, iż Azure AD B2C bazuje na dojrzałej i sprawdzonej technologii Microsoft Active Directory znanej w środowisku administratorów sieciowych od 1999 roku. Jak każda dojrzała technologia, ma ona swoje mocne i słabe strony.

SaaS (Software as a service, oprogramowanie jako usługa) – jeden z modeli chmury obliczeniowej. Działa tak, że aplikacja jest przechowywana i wykonywana na komputerach dostawcy usługi, a udostępnia się ją użytkownikom przez internet.

W mojej ocenie do słabych stron możemy zaliczyć przede wszystkim pewien brak elastyczności (zresztą jak w większości technologii firmy z Redmont). W odróżnieniu od klasycznej usługi AD (nawet w wersji cloud) B2C charakteryzuje się głównie dostosowaniem do realiów aplikacji SaaS w postaci pełnej obsługi OpenID.

OpenID – pozwala na rozwiązanie problemu dystrybucji składników tożsamości użytkownika (np. imię i nazwisko, e-mail) pomiędzy wieloma serwisami webowymi.

Azure AD B2C obsługuje ponad 2800 wstępnie zintegrowanych aplikacji w modelu oprogramowanie jako usługa (SaaS). Postanowiłem sprawdzić, jak w rzeczywistości wypada narzędzie od Microsoftu, które pozwala na zarządzanie tożsamością.

Pamiętajmy, że nasze produkty powinny być od początku tworzone w oparciu o ideę secure by design.| Fot. piqsels.com

Usługa Azure AD: pierwsze logowanie

Jeżeli adoptujemy technologię w już istniejącej aplikacji, szczególnie w wydaniu monolitowym, bez obsługi OAuth2, to musimy przygotować się do zmiany we flow autentyfikacji i autoryzacji w naszej aplikacji.

W przypadku nowych produktów sugeruję od samego początku dostosować się do założeń flow Azure AD B2C. Unikniecie w ten sposób niepotrzebnych nakładów pracy i opóźnień związanych z próbą zmiany zachowań rozwiązania cloud.

Pierwszym problemem, który napotkałem podczas analizy, jest ograniczona możliwość personalizacji poszczególnych elementów usługi.

Azure AD a domena

Użytkownik loguje się do systemu przechodząc do dedykowanej strony logowania Azure AD, która znajduje się pod tym adresem.

Dużym zaskoczeniem było dla mnie to, że nie ma obecnie możliwości zmiany domeny, na którą natkną się użytkownicy w trakcie procesu autoryzacji. Innymi słowy, zamiast trafiać na „domenamojegoproduktu.com”, trafią tutaj.

W mojej ocenie może zostać to negatywnie odebrane przez świadomego użytkownika. Szybki rzut oka na społeczności użytkowników Azure AD pokazał mi, że nie jestem odosobniony w negatywnej ocenie.

Usługa Azure AD: adresy mailowe i treść wiadomości automatycznych

Na różnych etapach procesu autoryzacji może pojawić się potrzeba wysłania maila albo SMS-a do użytkownika. Azure AD niestety nie pozwala na personalizację adresów tych maili ani szablonów wiadomości.

W obecnej rzeczywistości jest to dość dziwne podejście do tematu. Rodzi ono komplikacje w zakresie spójności brandingu i komunikacji zewnętrznej docelowego rozwiązania.

Pojawiło się także kilka mniejszych problemów dotyczących niezgodności z założonym flow, o których piszę poniżej.

Azure AD B2B wpłynie bardzo pozytywnie na poziom zabezpieczeń wielu aplikacji webowych i mobilnych. | Fot. Pxfuel.com

Własna logika uwierzytelniania wieloskładnikowego (Multi-Factor Authentication)

Rejestracja drugiego składnika uwierzytelniania odbywa się podczas pierwszego logowania do systemu, nie zaś podczas rejestracji. Jest to podyktowane wymogami bezpieczeństwa i wynika z powszechnych wektorów ataków.

Developer nie ma wpływu na stopień skomplikowania kodów autoryzacyjnych. Nie mam też pełnych informacji o dostępności możliwości używania uwierzytelniania SMS poza USA i Kanadą.

Azure AD a własna logika blokowania kont (smart locking)

Przejdźmy do kwestii logowania się i zabezpieczenia. Jako usługa cloudowa Azure AD posiada zaawansowaną logikę blokowania kont na podstawie wykrycia niepożądanego zachowania. Administrator może konfigurować wyłącznie podstawowe parametry tego mechanizmu.

Chodzi o ilość niepoprawnych prób logowania oraz czas, na który zostanie zablokowane konto po przekroczeniu ustalonej liczby niepoprawnych logowań. Dodam, że admin nie ma możliwości odblokowania zablokowanego konta – operację tę może wykonać tylko sam użytkownik podczas procesu resetu hasła.

Jest to podyktowane wymogami bezpieczeństwa, a administrator nie ma bezpośredniego wpływu na algorytmy tego mechanizmu.

Usługa Azure AD: RBAC

RBAC (role-based access control) – kontrola dostępu oparta na rolach. Ułatwia ona zarządzanie osobami mającymi dostęp do zasobów platformy Azure czy czynnościami, które takie osoby mogą wykonywać.

Do niewątpliwych zalet usługi zaliczam też całą maszynerię związaną z autoryzacją działań użytkowników. Podobne rozwiązania zazwyczaj skupiają się wyłącznie na autoryzacji użytkownika, a określenie poziomów dostępu i RBAC leży już w gestii aplikacji i programistów.

API (Application Programming Interface) – zestaw reguł, które definiują komunikację pomiędzy programami komputerowymi.

Usługa Azure AD B2C daje w tym zakresie ogromne możliwości – nie udało mi się wymyślić scenariusza testowego bądź przypadku użycia, którego nie byłbym w stanie zrealizować za pomocą systemu ról Azure AD B2C. Zarządzanie rolami jest intuicyjne, w pełni modyfikowalne i skalowalne oraz dostępne na poziomie API rozwiązania.

Logowanie Azure: bezpieczeństwo rodem z cloud

Framework (platforma programistyczna) – szkielet do budowy aplikacji, który dostarcza niezbędne biblioteki i komponenty, a także definiuje strukturę i działanie danej „apki”.

Główną zaletą Azure AD B2C (jak i innych rozwiązań typu cloud) jest oczywiście bardzo wysoki poziom bezpieczeństwa, nieporównywalnie większy, niż w jakimkolwiek innym systemie autoryzacji dostarczanym domyślnie z frameworkami programistycznymi.

ISO/IEC 27001 – ogłoszona 14 października 2005 r. norma międzynarodowa, która standaryzuje systemy zarządzania bezpieczeństwem informacji.

Jeżeli zależy nam na bezpieczeństwie danych naszych użytkowników, chcemy spełniać najlepsze standardy branżowe w zakresie bezpieczeństwa (ISO 27001), to zdecydowanie powinniśmy wybrać tego rodzaju rozwiązanie.

Azure AD dostępny jest w kilku planach cenowych.| Fot. commons.wikimedia.org

Azure AD a mikrousługi

PaaS (Platform as a service, platforma jako usługa) – jeden z modeli chmury obliczeniowej. To usługa pozwalająca na udostępnienie przez dostawcę wirtualnego środowiska pracy; stworzono ją głównie z myślą o programistach.

Według mnie w erze aplikacji opartych o mikrousługi i wszelakiego rodzaju PaaS pisanie własnych mechanizmów autoryzacji rozproszonej bez bardzo mocnego uzasadnienia biznesowego jest zwykłym marnotrawstwem.

Pamiętajmy, że w dobie RODO (GDPR), wysokiego zagrożenia i wiedzy cyberprzestępców, szpiegostwa przemysłowego i coraz wyższej świadomości użytkowników w zakresie ochrony swoich danych osobowych nasze produkty powinny być tworzone od początku w oparciu o ideę secure by design.

Usługi typu Microsoft Azure AD B2C są bardzo mocnymi narzędziami, które pozwolą realizować te założenia jak najmniejszym kosztem, nawet w małych projektach programistycznych.

Na ile bezpieczne jest logowanie się dzięki Azure AD?

Szeroki zakres narzędzi monitorujących i audytu bezpieczeństwa sprawiają, że usługa Azure AD B2C daje pełną kontrolę nad krytyczną częścią naszej aplikacji, jaką jest system użytkowników i uprawnień. Pamiętajmy, że stworzenie pierwszej iteracji aplikacji to tylko początek długiej drogi życia każdego projektu programistycznego.

W dalszych częściach cyklu życia produktu kluczowe jest zapewnienie ciągłości obsługi naszych użytkowników, dbanie o integralność ich danych, a także raportowanie wszystkich naruszeń bezpieczeństwa. Tymczasem większość właścicieli biznesów nie zdaje sobie sprawy z komplikacji, które wynikają z obowiązku informacyjnego RODO (GDPR).

Gdy tylko dojdzie do krytycznej sytuacji, bez dobrych i rozbudowanych narzędzi raportujących i mechanizmu audytu bezpieczeństwa jesteśmy narażeni na ogromne straty finansowe i wizerunkowe, które mogą doprowadzić nawet do likwidacji biznesu (szczególnie w początkowych fazach istnienia).

Samouczek wprowadzający do korzystania z Azure AD. | Źródło: YouTube.com

Platformy Azure w dowolnym przedsiębiorstwie

Microsoft Active Directory B2C jest dojrzałym i sprawdzonym rozwiązaniem, które na pewno wpłynie bardzo pozytywnie na poziom zabezpieczeń wielu aplikacji webowych i mobilnych. Jest ono relatywnie proste w implementacji przez każdej wielkości zespół developerski.

Niestety, jak w wypadku większości rozwiązań z Redmond, okazuje się nieco „kanciaste” i momentami toporne. Jeżeli nie zależy nam bardzo na szerokiej customizacji brandingowej procesu rejestracji i logowania użytkowników, lubimy podejście Microsoft bądź korzystamy z innych rozwiązań w ramach Azure, to śmiało możemy wchodzić w tę technologię.

AWS Cognito – podobnie jak Azure AD, pozwala na uwierzytelnianie użytkownika w aplikacjach mobilnych i webowych.

Jako alternatywę z bardziej szerokim wachlarzem możliwości dostosowywania UX (oraz z powodu preferencji osobistych) sugeruję rozważyć i przeanalizować AWS Cognito.

Usługa Azure AD B2C jest bezpłatna przez pierwszy miesiąc (przy 50 000 aktywnych użytkowników), później może kosztować maksymalnie 0,00211 euro miesięcznie. Choć pamiętajmy, że uiszczamy oddzielną opłatę za uwierzytelnianie wieloskładnikowe i zdarzenia SMS/telefoniczne, tj. 0,026 euro za zdarzenie SMS/telefon. Dokładny cennik publikuje portal Microsoftu.

Fot. główna: Pxfuel.com

Avatar
Yaroslav Shatkevich
Programista z 17-letnim doświadczeniem. Współzałożyciel i CTO The Story. Fascynat planowania prac programistycznych, autor licznych specyfikacji IT i DevOps. Wyróżniany przez Awwwards, nagrodzony iF Design Award 2018. Na co dzień pracuje w technologiach Python, PHP, React, JavaScript. Stworzył ponad 90 aplikacji webowych i mobilnych oraz systemów dedykowanych.

Własna aplikacja webowa lub mobilna? Więcej!