Rejestracja aplikacji OpenID Connect

Rejestracja aplikacji OpenID Connect w FoxIDs umożliwia podłączenie aplikacji opartej na OpenID Connect.

Rejestracja aplikacji OpenID Connect w FoxIDs

Twoja aplikacja staje się stroną ufającą (RP), a FoxIDs działa jako dostawca OpenID (OP).

FoxIDs obsługuje OpenID Connect Discovery, dzięki czemu Twoja aplikacja może odkryć dostawcę OpenID.

FoxIDs obsługuje uwierzytelnianie OpenID Connect (logowanie), wylogowanie inicjowane przez RP oraz wylogowanie front-channel. Sesja jest ustanawiana po uwierzytelnieniu użytkownika, a identyfikator sesji jest dołączany do tokenu ID. Sesja jest unieważniana podczas wylogowania.
FoxIDs może wyświetlać okno potwierdzenia wylogowania w zależności od konfiguracji oraz od tego, czy token ID jest dołączony do żądania wylogowania.

Domyślnie zarówno token ID, jak i token dostępu są wystawiane z identyfikatorem klienta jako odbiorcą (audience). Domyślny zasób można usunąć z tokenu dostępu w FoxIDs Control.
Tokeny dostępu mogą być wystawiane z listą odbiorców, a tym samym kierowane do wielu API zdefiniowanych w FoxIDs jako zasoby OAuth 2.0.
Aplikacja może następnie wywoływać API, zabezpieczając wywołanie tokenem dostępu zgodnie z The OAuth 2.0 Authorization Framework: Bearer Token Usage.

FoxIDs obsługuje zarówno client secret, jak i Proof Key for Code Exchange (PKCE), i domyślnie wymaga PKCE.
Jeśli klient jest skonfigurowany zarówno z PKCE, jak i z sekretem lub kluczem, oba będą weryfikowane. PKCE oraz client secret lub klucz nie są weryfikowane w implicit flow.

Domyślna metoda uwierzytelniania klienta to client secret post i można ją zmienić na client secret basic lub private key JWT. Metoda uwierzytelniania klienta none jest obsługiwana z PKCE.

Można skonfigurować maksymalnie 10 sekretów i 4 klucze na klienta.

FoxIDs obsługuje punkt końcowy OpenID Connect UserInfo.

Poradniki:

  • Połącz dwa środowiska FoxIDs w tym samym lub różnych tenantach przez OpenID Connect
  • Połącz dwa środowiska FoxIDs w tym samym tenancie za pomocą Environment Link

Zaleca się użycie OpenID Connect Authorization Code flow z PKCE, ponieważ jest uznawany za bezpieczny.

Wymuś uwierzytelnianie wieloskładnikowe (MFA)

Klient OpenID Connect może wymagać uwierzytelniania wieloskładnikowego, podając wartość urn:foxids:mfa w parametrze AcrValues.

Parametr AcrValues można ustawić w zdarzeniu OnRedirectToIdentityProvider w Startup.cs:

options.Events.OnRedirectToIdentityProvider = (context) =>
{
    // Wymuś MFA
    context.ProtocolMessage.AcrValues = "urn:foxids:mfa";
    return Task.FromResult(string.Empty);
};

Więcej kodu w AspNetCoreOidcAuthorizationCodeSample oraz w Startup.cs linia 141.

Konfiguracja

Jak skonfigurować aplikację jako stronę ufającą (RP) / klienta rejestracji aplikacji OpenID Connect.

Dokument discovery klienta FoxIDs to https://foxids.com/tenant-x/environment-y/application-client1/.well-known/openid-configuration
jeśli klient jest skonfigurowany w tenancie tenant-x i środowisku environment-y z nazwą klienta rejestracji aplikacji application-client1.

Klient rejestracji aplikacji może obsługiwać logowanie przez wiele metod uwierzytelniania, dodając nazwę metody uwierzytelniania do adresu URL.
Nazwę metody uwierzytelniania, np. login, można dodać do adresu discovery w ten sposób https://foxids.com/tenant-x/environment-y/application-client1(login)/.well-known/openid-configuration

Podczas wylogowania inicjowanego przez RP nazwę metody uwierzytelniania można pominąć w adresie URL, jeśli w żądaniu jest przekazany token ID.

Skonfiguruj Authorization Code Flow dla klienta poufnego

Klient poufny to na przykład aplikacja webowa, w której bezpieczeństwem zarządza serwer aplikacji, który przechowuje również client secret.

  • Podaj nazwę klienta w nazwie rejestracji aplikacji.
  • Wybierz dozwolone metody uwierzytelniania.
  • Podaj identyfikatory URI przekierowań.
  • Podaj identyfikator URI przekierowania po wylogowaniu.
  • Wybierz code jako typ odpowiedzi albo ewentualnie (niezalecane) code token lub code token id_token.
  • W kliencie poufnym nie jest wymagane użycie PKCE, ale jest zalecane w celu ograniczenia ataków typu replay.
  • Podaj secret.

Skonfiguruj Authorization Code Flow

Skonfiguruj Authorization Code Flow dla klienta publicznego

Klient publiczny to na przykład klient przeglądarkowy, klient Blazor lub aplikacja mobilna. Aplikacja powinna używać PKCE i nie powinna używać client secret.

  • Podaj nazwę klienta w nazwie rejestracji aplikacji.
  • Wybierz dozwolone metody uwierzytelniania.
  • Podaj identyfikatory URI przekierowań.
  • Podaj identyfikator URI przekierowania po wylogowaniu.
  • Wybierz code jako typ odpowiedzi.
  • Użyj PKCE, domyślnie włączone.

Kliknij „Show advanced”, aby skonfigurować dozwolone źródła CORS.

Skonfiguruj Authorization Code Flow z PKCE

Skonfiguruj Implicit Code Flow dla klienta publicznego

Klient publiczny to na przykład aplikacja webowa, gdzie bezpieczeństwem zarządza serwer aplikacji, albo klient przeglądarkowy. Aplikacja nie używa ani PKCE, ani client secret.
Nie zaleca się używania Implicit Code Flow, ponieważ jest niebezpieczny.

  • Podaj nazwę klienta w nazwie rejestracji aplikacji.
  • Wybierz dozwolone metody uwierzytelniania.
  • Podaj identyfikatory URI przekierowań.
  • Podaj identyfikator URI przekierowania po wylogowaniu.
  • Wybierz token id_token jako typ odpowiedzi lub ewentualnie tylko token.
  • Wyłącz PKCE.
  • Nie podawaj secretu.

Skonfiguruj Implicit Code Flow

Klient i API

Można skonfigurować zarówno klienta, jak i API (zasób OAuth 2.0) w tej samej konfiguracji rejestracji aplikacji OpenID Connect, gdzie klient i API są zdefiniowane z tą samą nazwą. Ponadto można skonfigurować zakresy zasobów dla API.

Zakładka Client

Skonfiguruj klienta i API - Client

Zakładka Resource

Skonfiguruj klienta i API - Resource

Zasób i zakresy

API jest zdefiniowane jako zasób, w ramach którego można definiować zakresy. Zakresy są definiowane jako nazwa zasobu z kropką, np. application-api1.read1 lub application-api1.read2.

W zakładce konfiguracji klienta zakresy są definiowane pod polem nazwy zasobu.

Zasób i zakresy - Client

W zakładce konfiguracji zasobu zakresy są definiowane jako lista wartości zakresów.

Zasób i zakresy - Resource

Zakresy skonfigurowane w kliencie są weryfikowane, jeśli istnieją w API. Jeśli klient i API są skonfigurowane w tej samej konfiguracji rejestracji aplikacji, zakresy dodane do klienta są automatycznie dodawane do zasobu.

Zakresy

Zakresy można skonfigurować w zakładce konfiguracji klienta. Można zdefiniować nowe zakresy i zestawy oświadczeń, które mają być wystawiane dla zakresów, w liście Voluntary claims.

Możesz zmieniać oświadczenia i wykonywać zadania oświadczeń za pomocą transformacji oświadczeń i zadań oświadczeń.

Jeśli tworzysz nowe oświadczenie, dodaj oświadczenie lub * do listy Issue claims albo dodaj oświadczenie do listy Voluntary claims i zażądaj zakresu z aplikacji.

Do konfiguracji klienta dodawany jest zestaw domyślnych zakresów, które następnie można zmienić lub usunąć.

Domyślne zakresy

Czas życia tokenów

Czas życia tokenów jest konfigurowany dla tokenu ID, tokenu dostępu i tokenu odświeżania.

Czas życia tokenów

W tym przykładzie każdy token odświeżania jest ważny przez 36 000 sekund. Aplikacja może dalej odświeżać sesję przy użyciu tokenów odświeżania, aż do osiągnięcia bezwzględnego czasu życia 86 400 sekund.

Twoja prywatność

Używamy plików cookie, aby poprawić korzystanie z naszych stron internetowych. Kliknij przycisk „Akceptuj wszystkie pliki cookie”, aby wyrazić zgodę na ich użycie. Aby zrezygnować z nieistotnych plików cookie, kliknij „Tylko niezbędne pliki cookie”.

Odwiedź naszą politykę prywatności, aby dowiedzieć się więcej