MENU
    Konfiguracja i szczegóły techniczne OAuth2.0
    • 23 Jan 2025
    • 3 Minuty do przeczytania
    • Współtwórcy

    Konfiguracja i szczegóły techniczne OAuth2.0


    Streszczenie artykułu

    W tym artykule zagłębimy się w szczegóły techniczne tego, jak Tulip implementuje OAuth do uwierzytelniania konektorów. OAuth jest potężny, ale wiąże się z pewną dodatkową złożonością. Ten przewodnik ma na celu odpowiedzieć na wszelkie pytania techniczne dotyczące tego, co obsługuje Tulip i jak jest zintegrowany.

    Uwaga: Przepływ poświadczeń klienta różni się nieco od przepływu kodu autoryzacji. Kroki 1 i 2 nie są istotne dla przepływu poświadczeń klienta.

    Przepływ kodu autoryzacji Tulip

    On-Prem Services

    The Authorize and Token endpoints must be accessible to the cloud for Tulip to execute authentication for connectors

    Tulip inicjuje proces uwierzytelniania podczas testowania konektora lub uruchamiania funkcji konektora w aplikacji.

    1. Przekierowanie do serwera autoryzacji:

    Aplikacja Tulip przekierowuje użytkownika do serwera autoryzacji (AS) wraz z określonymi parametrami, w tym response_type (ustawiony na "code" dla Authorization Code Flow), client_id (przypisany w interfejsie użytkownika konektora), redirect_uri (predefiniowany przez Tulip), scope i audience (ustawione w interfejsie użytkownika) oraz state (losowy ciąg znaków w celu ochrony przed atakami Cross-Site Request Forgery).

    Przykład: GET /authorize?response_type=code&client_id=CLIENT_ID&redirect_uri=REDIRECT_URI&scope=SCOPE&audience=AUDIENCE&state=STATE

    2. Użytkownik udziela zgody:

    Serwer autoryzacji uwierzytelnia użytkownika i przedstawia mu ekran zgody. Użytkownik może przejrzeć żądane uprawnienia i zdecydować, czy udzielić, czy odmówić dostępu do aplikacji innej firmy.

    :::(Ostrzeżenie) (Uwaga) W ramach konfiguracji łącznika give, kontrolka "Skip user consent prompt" pozwala kontrolować atrybut prompt w żądaniu autoryzacji. Gdy ta kontrolka jest wyłączona, zostanie użyta wartość zgody, gdy jest włączona, zostanie użyty login.

    Jeśli wymagane są dodatkowe wartości atrybutu prompt, skontaktuj się z support@tulip.co, a my włączymy dalsze opcje dla tej właściwości.
    :::

    3. Kod autoryzacji:

    Jeśli użytkownik wyrazi zgodę, serwer autoryzacji generuje kod autoryzacji i przekierowuje użytkownika z powrotem do Tulip wraz z kodem autoryzacji. Parametr stanu jest również dołączony, umożliwiając klientowi weryfikację integralności odpowiedzi. Ten parametr stanu musi być zgodny z parametrem stanu przekazanym w kroku 1.

    Przykładowe przekierowanie do URI przekierowania klienta:

    REDIRECT_URI?code=AUTHORIZATION_CODE&state=STATE

    4. Żądanie tokena:

    Klient ma teraz kod autoryzacji i używa go do wykonania bezpiecznego żądania serwer-serwer do punktu końcowego tokena serwera autoryzacji. Klient zawiera grant_type (ustawiony na "authorization_code"), client_id, client_secret (sekret znany tylko klientowi i serwerowi autoryzacji), redirect_uri i kod autoryzacji.

    Przykładowe żądanie tokena:

    ``POST /tokenContent-Type: application/x-www-form-urlencoded

    grant_type=authorization_code&code=AUTHORIZATION_CODE&redirect_uri=REDIRECT_URI&client_id=CLIENT_ID&client_secret=CLIENT_SECRET```

    5. Odpowiedź tokena dostępu:

    Jeśli kod autoryzacji jest prawidłowy, serwer autoryzacji odpowiada tokenem dostępu i, opcjonalnie, tokenem odświeżania. Token dostępu jest używany przez klienta do uwierzytelniania się podczas wykonywania żądań do chronionego interfejsu API w imieniu użytkownika.

    Przykładowa odpowiedź tokena:

    { "access_token": "ACCESS_TOKEN", "token_type": "Bearer", "expires_in": 3600, "refresh_token": "REFRESH_TOKEN", "scope": "SCOPE"}

    Services Not Using expires_in

    6. Dostęp do serwera zasobów:

    Tulip może teraz użyć uzyskanego tokena dostępu do wykonywania autoryzowanych żądań do serwera zasobów (API) w imieniu użytkownika. Token dostępu jest zwykle zawarty w nagłówku Authorization żądania HTTP.

    Przykładowe żądanie API:GET /api/resourceAuthorization: Bearer ACCESS_TOKEN

    Zarządzanie wygaśnięciem tokenu za pomocą tokenów odświeżania

    Serwery autoryzacji zazwyczaj ustawiają daty wygaśnięcia tokenów w celu regulowania dostępu, z różnymi oknami wygaśnięcia w zależności od połączonego systemu. Jednak krótkotrwałe tokeny stanowią wyzwanie, ponieważ ciągłe uwierzytelnianie użytkownika zakłóca doświadczenie użytkownika w aplikacjach Tulip.

    Aby rozwiązać ten problem, OAuth obsługuje tokeny odświeżania. Chociaż są one opcjonalne, są wysoce zalecane, ponieważ usprawniają doświadczenie użytkownika, umożliwiając Tulip płynne odświeżanie tokenów bez konieczności ręcznego wprowadzania danych przez operatorów.

    Jak Tulip zarządza odświeżaniem tokenów

    Gdy Tulip wykryje, że token dostępu wygasł, automatycznie próbuje użyć powiązanego tokena odświeżania, aby uzyskać nowy token. Głównym celem jest zminimalizowanie ponownego uwierzytelniania użytkowników. Poniższe kroki przedstawiają logikę wykonywaną przez Tulip:

    Token Refresh Flow

    1. Wykrywanie wygaśnięcia:
    2. Tulip identyfikuje wygasły token na podstawie jego atrybutu expires_in otrzymanego w kroku 5 przepływu uwierzytelniania.
    Services Not Using expires_in
    1. Próba przepływu tokenu:

    2. Tulip inicjuje przepływ tokenu przy użyciu typu grantu refresh_token, zastępując typ grantu użyty w początkowym przepływie uwierzytelniania.

    3. Token Validation:

    4. Jeśli nowy token zostanie uzyskany, Tulip przechowuje go i przystępuje do wykonania żądanej przez użytkownika funkcji łącznika.

      • Jeśli się powiedzie, dane są dostarczane do środowiska uruchomieniowego aplikacji Tulip.
      • Jeśli nowy token nie powiedzie się z błędem OAuth, Tulip ponawia proces do 5 razy, powracając do kroku 1 za każdym razem.
      • Jeśli nowy token nie powiedzie się z jakimkolwiek innym błędem, błąd zostanie wyświetlony w środowisku wykonawczym odtwarzacza.
    5. Obsługa braku tokena:

    6. Jeśli nowy token nie zostanie dostarczony, Tulip poprosi użytkownika w odtwarzaczu o poddanie się uwierzytelnianiu, inicjując cały proces uwierzytelniania.

    7. Po zakończeniu wykonywana jest funkcja konektora i zwracane są dane.

    Wdrażając tokeny odświeżania, Tulip zapewnia płynniejsze doświadczenie użytkownika poprzez inteligentne zarządzanie wygaśnięciem i odnowieniem tokena, minimalizując zakłócenia w przepływie pracy.

    Więcej informacji


    Czy ten artykuł był pomocny?