• przekierowanie uri
  • callback
  • kod autoryzacyjny
  • przepływ kodu
  • oidc
  • pkce

Zrozumienie przekierowania URI i przebiegu kodu autoryzacji w OpenID Connect (OIDC)

Przyjrzyjmy się bliżej przekierowaniu URI, ponieważ jest to kluczowy element bezpieczeństwa w procesie uwierzytelniania OIDC.

Charles
Charles
Developer

Czym jest przekierowanie URI?

Przekierowanie URI, znane również jako Reply URL, jest kluczowym elementem bezpieczeństwa w procesie uwierzytelniania OIDC. Określa URL, do którego użytkownicy są wysyłani po pomyślnym zalogowaniu się przez dostawcę OIDC. Co ważniejsze, to tutaj twoja aplikacja otrzymuje kod autoryzacyjny potrzebny do uzyskania tokenów.

Sprawdź więcej szczegółów w Wiki Auth > Przekierowanie URI.

Czym jest przepływ kodu autoryzacji?

Przepływ kodu autoryzacji (zdefiniowany w OAuth 2.0 RFC 6749, sekcja 4.1) jest podstawową metodą uwierzytelniania w OIDC. Obejmuje wymianę kodu autoryzacyjnego na token dostępu i opcjonalnie, token odświeżania. Ten przepływ jest odpowiedni dla aplikacji, które mogą bezpiecznie przechowywać sekret klienta, takich jak aplikacje internetowe po stronie serwera.

Sprawdź więcej szczegółów w Wiki Auth > Przepływ kodu autoryzacji.

Jak działa przekierowanie URI w przepływie kodu autoryzacji?

W przepływie kodu autoryzacji, przekierowanie URI jest miejscem, do którego dostawca OIDC wysyła kod autoryzacyjny po pomyślnym uwierzytelnieniu użytkownika. Musi być wcześniej zarejestrowane u dostawcy OIDC, aby zapewnić bezpieczeństwo i zapobiec nieautoryzowanym przekierowaniom.

Oto jak możesz zarejestrować przekierowanie URI w Logto Console: redirect-uri

Podczas inicjowania logowania:

  1. Żądanie autoryzacji: Twoja aplikacja kieruje użytkownika do punktu autoryzacyjnego dostawcy OIDC, w tym parametry takie jak client_id, response_type, scope i redirect_uri.
  2. Uwierzytelnianie użytkownika: Użytkownik uwierzytelnia się u dostawcy OIDC.
  3. Dostarczenie kodu autoryzacyjnego: Po pomyślnym uwierzytelnieniu, dostawca OIDC przekierowuje użytkownika do określonego redirect_uri, w tym kod autoryzacyjny jako parametr zapytania.

Dostawca OIDC weryfikuje redirect_uri w stosunku do listy wcześniej zarejestrowanych URIs. Jeśli występuje różnica, zwracany jest błąd invalid_redirect_uri, wzmacniając bezpieczeństwo poprzez zapobieganie nieautoryzowanym punktom końcowym odbierającym tokeny.

Najlepsze praktyki dla przekierowań URI

W rzeczywistych przypadkach użycia, powszechną najlepszą praktyką jest zadeklarowanie dedykowanej strony "Callback" i powiązanie routera / głębokiego linku, który umożliwia bezpośredni dostęp z zewnętrznych źródeł. Ten link powinien być używany jako przekierowanie URI.

Zakładając, że masz aplikację internetową typu single-page działającą na https://my-app.com, zwykle przekierowanie URI będzie zadeklarowane jako https://my-app.com/callback

Lub jeśli to natywna aplikacja mobilna, wtedy przekierowanie URI zwykle zaczyna się od niestandardowego schematu, np. com.company://myapp/callback

Inne najlepsze praktyki obejmują:

  • Unikaj znaków wieloznacznych: Nie używaj wzorców wieloznacznych w przekierowaniach URI. Wyraźnie wymień wszystkie dozwolone URI, aby zapobiec nieautoryzowanemu dostępowi.
  • Dokładne dopasowanie: Upewnij się, że przekierowanie URI jest dokładnie zgodne z tym zarejestrowanym u dostawcy OIDC. Nawet końcowy ukośnik może powodować niezgodność.

Obsługa wywołania zwrotnego logowania

Aby obsłużyć kod autoryzacyjny zwrócony do twojego redirect_uri, wykonaj następujące kroki:

  1. Wyodrębnij kod autoryzacyjny: Pobierz parametr kodu z ciągu zapytania przekierowania URI.

  2. Wymień kod autoryzacyjny na tokeny: Złożenie żądania POST do punktu końcowego tokenu dostawcy OIDC, w tym:

    • client_id: ID twojej aplikacji w dostawcy OIDC
    • code: Kod autoryzacyjny otrzymany z przekierowania URI
    • code_verifier: Losowo wygenerowany ciąg na kliencie
    • redirect_uri: Ta sama URI użyta w żądaniu autoryzacyjnym
    • grant_type: Typ poczty, zwykle authorization_code

Przykładowe żądanie wymiany tokenu w JavaScript

Uprość proces wymiany kodu w Logto, korzystając z Logto SDK

Logto SDK to zestaw do rozwoju napisany w określonym języku programowania lub frameworku, np. Logto React SDK, Next.js SDK i Swift SDK. Korzystanie z SDK może znacznie uprościć rzeczy, wystarczy wywołać jedną lub dwie funkcje.

Oto próbka komponentu "Callback" w React przy użyciu oficjalnego Logto React SDK:

Przewodniki po integracji SDK można znaleźć w Logto Docs > Szybkie starty.

Podsumowanie: dlaczego ważne jest opanowanie przekierowań URI w OIDC

Zrozumienie przekierowań URI w OIDC z przepływem kodu autoryzacji jest kluczowe dla zabezpieczenia i optymalizacji procesu uwierzytelniania. Rejestrując zaufane przekierowania URI i efektywnie obsługując wywołania zwrotne logowania, możesz zapewnić bezproblemowe i bezpieczne doświadczenie dla swoich użytkowników, jednocześnie upraszczając wysiłki związane z rozwojem za pomocą Logto SDK.