Rejestracja aplikacji OpenID Connect
Rejestracja aplikacji OpenID Connect w FoxIDs umożliwia podłączenie aplikacji opartej na OpenID Connect.
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 tenancietenant-xi środowiskuenvironment-yz nazwą klienta rejestracji aplikacjiapplication-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óbhttps://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
codejako typ odpowiedzi albo ewentualnie (niezalecane)code tokenlubcode 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 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
codejako typ odpowiedzi. - Użyj PKCE, domyślnie włączone.
Kliknij „Show advanced”, aby skonfigurować dozwolone źródła CORS.

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_tokenjako typ odpowiedzi lub ewentualnie tylkotoken. - Wyłącz PKCE.
- Nie podawaj secretu.

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

Zakładka 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.

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

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ąć.

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

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.