Naciśnij ESC, aby zamknąć

Authentik: Konfiguracja Single Sign-On dla Cloudflare Zero Trust

Spis treści

Cześć!

Dzisiaj przedstawię Ci kroki konfiguracji usługi jednokrotnego logowania (SSO) pomiędzy serwerem usługą Cloudflare Zero Trust, a Authentik.

Wstęp

Czym jest Cloudflare Zero Trust?

Cloudflare Zero Trust, Ikona Cloudflare Zero Trust to oferta firmy Cloudflare, która zapewnia usługi związane z bezpieczeństwem i wydajnością sieci. Jest to część większej platformy Cloudflare One, która ma na celu zapewnienie kompleksowego i głęboko zintegrowanego rozwiązania Zero Trust do ochrony i przyspieszania wydajności urządzeń, aplikacji i całych sieci.

Zero Trust, znane również jako model “nie ufaj, weryfikuj”, to podejście do bezpieczeństwa sieci, które zakłada, że żadne urządzenie, użytkownik ani usługa sieciowa nie jest zaufane domyślnie, niezależnie od tego, czy znajduje się wewnątrz czy na zewnątrz sieci korporacyjnej.

To potężne narzędzie, które umożliwia bezpieczny dostęp do zasobów sieciowych. Dzięki integracji z różnymi dostawcami tożsamości (IdP), takimi jak Authentik, Cloudflare Zero Trust umożliwia do zasobów przy użyciu dostawców tożsamości za pomocą jednokrotnego logowania (Single Sign-On)

Czym jest Authentik?

Authentik to otwarte oprogramowanie służące jako dostawca tożsamości (Identity Provider), umożliwiające zarządzanie uwierzytelnianiem i autoryzacją użytkowników. Jako alternatywa dla komercyjnych usług takich jak Okta czy One Login, Authentik oferuje podobne funkcjonalności w modelu open-source. Wśród innych narzędzi open-source o podobnym przeznaczeniu znajdują się Keycloak oraz Authelia, które również pozwalają na centralne zarządzanie tożsamością użytkowników w aplikacjach i usługach webowych.

Wyróżnia się elastycznością konfiguracji i szerokim wsparciem dla różnych protokołów uwierzytelniania, co czyni go doskonałym wyborem dla organizacji poszukujących zaawansowanego, ale dostępnego rozwiązania open-source do zarządzania tożsamością.

Przygotowanie

W celu przygotowania poradnika, przyjmiemy nazwy domen oraz identyfikatory opisane poniżej. W trakcie konfiguracji, dostosuj ustawienia zgodnie z własnymi potrzebami.

  • Pełna nazwa domeny (FQDN) Authentik: https://auth.xyz.com

Czym jest OpenID Connect?

Protokół OpenID Connect (OIDC) jest warstwą uwierzytelniania opartą na protokole OAuth 2.0, który umożliwia bezpieczne uwierzytelnianie i zdobywanie informacji o tożsamości użytkownika w aplikacjach internetowych. Poniżej znajdują się kluczowe elementy, które opisują, jak działa OpenID Connect:

  • Uwierzytelnianie przez OAuth 2.0: OpenID Connect wykorzystuje protokół OAuth 2.0 jako podstawę do uwierzytelniania. OAuth 2.0 umożliwia aplikacjom dostęp do zasobów na rzecz użytkownika, a OpenID Connect rozszerza ten protokół o warstwę uwierzytelniania.
  • Wydawanie Tokenów: Po pomyślnym uwierzytelnieniu użytkownika dostaje się tokeny, które zawierają informacje o tożsamości. Są to zazwyczaj:
    • ID Token: Zawiera podstawowe informacje o użytkowniku, takie jak identyfikator, imię, nazwisko itp.
    • Access Token: Umożliwia dostęp do zasobów chronionych w imieniu użytkownika.
    • Refresh Token: Służy do odświeżania lub uzyskiwania nowych tokenów po upływie ważności.
  • JSON Web Tokens (JWT): Informacje przesyłane w tokenach są często zakodowane w formie JSON Web Tokens, co zapewnia ich zwięzłość i bezpieczeństwo.
  • End-User Authentication: OpenID Connect obsługuje różne metody uwierzytelniania użytkownika, takie jak logowanie za pomocą hasła, uwierzytelnianie wieloskładnikowe czy nawet zewnętrzne dostawcy tożsamości.
  • Informacje o Konfiguracji: Identyfikatory i informacje niezbędne do autoryzacji i otrzymywania tokenów są uzyskiwane z dokumentu konfiguracyjnego, który jest zazwyczaj dostępny pod stałym adresem URL.
  • Bezpieczeństwo przez TLS: Komunikacja między klientem a dostawcą tożsamości, a także między dostawcą a serwerem zasobów, powinna odbywać się poprzez bezpieczne połączenie TLS (HTTPS).

Podsumowując, OpenID Connect ułatwia bezpieczne i skuteczne uwierzytelnianie użytkowników w aplikacjach internetowych, umożliwiając jednocześnie zdobycie informacji o ich tożsamości za pomocą tokenów.

Działanie OpenID Connect

Proces działania protokołu OpenID Connect (OIDC) można podzielić na kilka kroków. Poniżej znajdziesz ogólny opis etapów zaangażowanych w ten proces:

  • Rozpoczęcie Autoryzacji (Authorization Request):
    • Użytkownik chce zalogować się do aplikacji, obsługującej OpenID Connect.
    • Aplikacja kieruje go do dostawcy tożsamości (IdP) z żądaniem autoryzacji.
    • Żądanie to zawiera zakresy (scopes) dostępu, które aplikacja chce uzyskać, oraz informacje o tym, jakie działania są wymagane po zakończeniu autoryzacji.
  • Uwierzytelnianie Użytkownika (Authentication):
    • Dostawca tożsamości autoryzuje użytkownika.
    • Jeśli użytkownik nie jest zalogowany, może być poproszony o podanie swoich danych uwierzytelniających.
  • Przekierowanie z Powrotem (Redirection Back):
    • Po pomyślnym uwierzytelnieniu użytkownika dostawca tożsamości przekierowuje go z powrotem do aplikacji, dostarczając jednocześnie kod autoryzacyjny.
  • Wymiana Kodu na Tokeny (Token Exchange):
    • Aplikacja przesyła otrzymany kod autoryzacyjny z powrotem do dostawcy tożsamości.
    • W zamian otrzymuje zestaw tokenów, takich jak ID Token, Access Token i ewentualnie Refresh Token.
  • Korzystanie z Tokenów (Access Resources):
    • Aplikacja używa otrzymanego Access Token do uzyskania dostępu do zasobów chronionych w imieniu użytkownika.
    • Dostęp do zasobów może być ograniczony zakresem dostępu określonym w tokenie.
  • Weryfikacja Tokenów (Token Verification):
    • Aplikacja weryfikuje poprawność otrzymanych tokenów, zwłaszcza ID Token, który zawiera informacje o tożsamości użytkownika.
    • Weryfikacja może obejmować sprawdzenie podpisu tokena, jego ważności i zgodności z żądaniami autoryzacji.
  • Odświeżanie Tokenów (Token Refresh):
    • W przypadku użycia Refresh Token, aplikacja może odświeżyć swoje tokeny bez konieczności ponownego uwierzytelniania użytkownika.

Krok 1 – Konfiguracja w Authentik

  • Zaloguj się na swoje konto i przejdź do interfejsu administracyjnego,
  • Po pomyślnym zalogowaniu się do interfejsu administracyjnego, przejdź po lewej stronie ekranu do zakładki Applications, a następnie wybierz Providers.

Authentik

  • Kliknij przycisk Create i wybierz rodzaj providera OAuth2/OpenID Provider. Następnie przejdź dalej, klikając Next.
  • Wypełnij providera następującymi wartościami:
    • Name: cloudflare-zerotrust
    • Authentication flow: Wybierz swój skonfigurowany lub ustaw domyślny (default-authentication-flow)
    • Authorization flow: Wybierz swój skonfigurowany lub ustaw explicit lub implicit consent(Ustawienie to odnosi się do funkcji używanej podczas autoryzacji dla tej aplikacji – definiujemy, czy Authentik ma wyświetlać przycisk umożliwiający przejście do aplikacji po zalogowaniu, czy po prostu ma Cię przekierować bez pytania).
    • Protocol settings:
      • Client type: Zostawiamy Confidential
      • Client ID: Skopiuj i zachowaj na później
      • Client Secret: Skopiuj i zachowaj na później
      • Redirect URIs/Origins (RegEx): https://<TEAM_NAME>.cloudflareaccess.com/cdn-cgi/access/callback (pole <TEAM_NAME> zamień z istniejącą nazwą Twojego zespołu w Cloudflare Zero Trust)
    • Signing Key: authentik Self-signed Certificate
  • Pozostaw pozostałe wartości bez zmian i kliknij Finish.
  • Po lewej stronie ekranu wybierz Applications, a następnie ponownie Applications.
  • Kliknij Create I wypełnij aplikację następującymi wartościami:
    • Name: Cloudflare Zero Trust
    • Slug: cloudflare-zerotrust
    • Provider: cloudflare-zerotrust
    • UI Settings możesz, ale nie musisz uzupełniać.
      • Icon: pobierz ikonę Cloudflare z Internetu i wgraj.
      • Publisher: np. Cloudflare Inc.
      • Description: np. Zero Trust Network Access
    • Zatwierdzamy utworzenie aplikacji przyciskiem Create.

Po stronie dostawcy tożsamości zakończyliśmy już niezbędne kroki. Teraz przyszedł czas na konfigurację w systemie Cloudflare Zero Trust.

Krok 2 – Konfiguracja w Cloudflare

Tworzenie nowej konfiguracji w oparciu o OpenID Connect

  • Aby skorzystać z Cloudflare Zero Trust, najpierw zaloguj się do panelu administracyjnego swojego konta w Cloudflare. Następnie, z menu po lewej stronie, wybierz opcję Zero Trust.

Cloudflare, Zero Trust menu

  • Po wybraniu opcji Zero Trust z menu po lewej stronie, otworzy się menu konfiguracji Zero Trust. Kliknij w zakładkę Settings, aby przejść do ustawień

Cloudflare Zero Trust, menu

  • Przejdź do sekcji Authentication,

Cloudflare Zero Trust, Settings menu

  • Wewnątrz sekcji Login methods, kliknij na Add new,
  • Kliknij na OpenID Connect,

Cloudflare Zero Trust, Add a login method

  • Wypełnij pola następującymi wartościami:
    • Name: Authentik
    • App ID: Wklej Client ID z Authentika
    • Client secret: Wklej Client secret z Authentika
    • Auth URL: https://auth.xyz.com/application/o/authorize/
    • Token URL: https://auth.xyz.com/application/o/token/
    • Certificate URL: https://auth.xyz.com/application/o/cloudflare-zerotrust/jwks/
  • Zatwierdź konfigurację klikając w Save. Możesz przetestować działanie systemów klikając w Test. Jeżeli wszystko jest poprawnie skonfigurowane, powinieneś otrzymać komunikat Your connection works!

Cloudflare Zero Trust, Poprawne działanie konfiguracji

Edycja podstawowych ustawień w uwierzytelnianiu Cloudflare Zero Trust

  • Wróć do sekcji Authentication i przejdź do edycji Global session timeout. Ustaw na Same as application session timeout,
  • App Launcher: Skonfigurujemy podstawową opcję bez zaawansowanych ustawień tego, kto może mieć dostęp do App Launchera w Zero Trust. Potem według własnych potrzeb można dostosować to do siebie.
  • Kliknij Manage,
  • W sekcji Rules / Policies, kliknij Add a rule i ustaw podane wartości:
    • Rule name: Access,
    • Rule action: Allow,
    • Include:
      • Selector: Login Methods,
      • Value: OpenID Connect * Authentik,
    • Assign a group: pozostaw domyślną grupę
  • Zapisz ustawienia przyciskiem Save.

Jeśli masz dodatkowe pytania dotyczące konfiguracji, śmiało zostaw komentarz pod tym artykułem lub skontaktuj się ze mną bezpośrednio. Chętnie odpowiem na wszelkie wątpliwości i pomogę rozwiązać ewentualne problemy. Twoje pytania mogą pomóc w ulepszeniu tego poradnika dla innych użytkowników.

Dodatkowe źródła i Informacje

W celu dalszego zgłębienia tematu i uzyskania szczegółowych informacji, polecam sprawdzenie poniższych linków. Są one wartościowymi źródłami, które zostały wykorzystane podczas opracowywania tego poradnika:

Przeczytaj także

Filip Chochół

Filip Chochol runs two blogs: personal “chochol.io” and together with his girlfriend “Warsaw Travelers” about travel. He specializes in IT resource management and technical support, and has been active in the field of cyber security awareness for almost two years. A proponent of open-source technologies, he previously worked in the film and television industry in the camera division (2013-2021). After hours, he develops interests in smart homes and networking.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *


This site uses Akismet to reduce spam. Learn how your comment data is processed.