OpenID Connect applikationsregistrering
FoxIDs OpenID Connect applikationsregistrering gør det muligt at forbinde en OpenID Connect baseret applikation.
Din applikation bliver en Relying Party (RP) og FoxIDs fungerer som en OpenID Provider (OP).
FoxIDs understøtter OpenID Connect Discovery hvor din applikation kan opdage OpenID Provider.
FoxIDs understøtter OpenID Connect authentication (login), RP initiated logout og front channel logout. En session oprettes når brugeren autentificerer, og session id er inkluderet i ID token. Sessionen invaliders ved logout. FoxIDs kan vise en logout bekræftelsesdialog afhængigt af konfiguration og om et ID token er inkluderet i logout requesten eller ej.
Som standard udstedes både ID token og access token med klientens client id som audience. Default resource kan fjernes fra access token i FoxIDs Control. Access tokens kan udstedes med en liste af audiences og dermed udstedes til flere API'er defineret i FoxIDs som OAuth 2.0 ressourcer. Applikationen kan derefter kalde et API og sikre kaldet med access token ved hjælp af The OAuth 2.0 Authorization Framework: Bearer Token Usage.
FoxIDs understøtter både client secret og Proof Key for Code Exchange (PKCE), og kræver som standard PKCE. Hvis en client er konfigureret med både PKCE og secret/key valideres begge. PKCE og client secret/key valideres ikke i implicit flow.
Default client authentication method er client secret post og kan ændres til client secret basic eller private key JWT. Client authentication method none understøttes med PKCE.
Der kan konfigureres maks. 10 secrets og 4 keys per client.
FoxIDs understøtter OpenID Connect UserInfo endpoint.
How to guides:
- Forbind to FoxIDs miljøer i samme eller forskellige tenants med OpenID Connect
- Forbind to FoxIDs miljøer i samme tenant med en Environment Link
Det anbefales at bruge OpenID Connect Authorization Code flow med PKCE, fordi det betragtes som et sikkert flow.
Require multi-factor authentication (MFA)
OpenID Connect klienten kan kræve multi-factor authentication ved at angive værdien urn:foxids:mfa i parameteren AcrValues.
Parameteren AcrValues kan sættes i OnRedirectToIdentityProvider event i Startup.cs:
options.Events.OnRedirectToIdentityProvider = (context) =>
{
// To require MFA
context.ProtocolMessage.AcrValues = "urn:foxids:mfa";
return Task.FromResult(string.Empty);
};
Se mere kode i AspNetCoreOidcAuthorizationCodeSample og Startup.cs line 141.
Configuration
Hvordan du konfigurerer din applikation som en OpenID Connect applikationsregistrering Relying Party (RP) / client.
Klientens FoxIDs discovery document er
https://foxids.com/tenant-x/environment-y/application-client1/.well-known/openid-configurationhvis clienten er konfigureret i tenanttenant-xog miljøenvironment-ymed applikationsregistrering client navnapplication-client1.
En applikationsregistrering client kan muligvis understøtte login gennem flere autentificeringsmetoder ved at tilføje autentificeringsmetodens navn til URL'en. Et autentificeringsmetode navn f.eks.
loginkan muligvis tilføjes til discovery URL'en sådanhttps://foxids.com/tenant-x/environment-y/application-client1(login)/.well-known/openid-configuration
Under RP initiated logout kan autentificeringsmetodens navn udelades i URL'en hvis ID token er angivet i requesten.
Configure Authorization Code Flow for a confidential client
En confidential client kan være en webapplikation hvor sikkerheden håndteres af webserveren som også opbevarer client secret.
- Angiv client navn i applikationsregistreringens navn.
- Vælg tilladte autentificeringsmetoder.
- Angiv redirect URIs.
- Angiv post logout redirect URI.
- Vælg
codesom response type eller evt. men ikke anbefaletcode tokenellercode token id_token. - Det er ikke nødvendigt at bruge PKCE i en confidential client men anbefales for at mitigere replay attacks.
- Angiv et secret.

Configure Authorization Code Flow for a public client
En public client kan være en browser baseret rich client, Blazor client eller mobil app. Applikationen skal bruge PKCE og ikke et client secret.
- Angiv client navn i applikationsregistreringens navn.
- Vælg tilladte autentificeringsmetoder.
- Angiv redirect URIs.
- Angiv post logout redirect URI.
- Vælg
codesom response type. - Brug PKCE, default enabled.
Klik "Show advanced" for at konfigurere allowed CORS origins.

Configure Implicit Code Flow for a public client
En public client kan være en webapplikation hvor sikkerheden håndteres af webserveren eller en browser baseret rich client. Applikationen bruger hverken PKCE eller client secret. Det anbefales ikke at bruge Implicit Code Flow fordi det er usikkert.
- Angiv client navn i applikationsregistreringens navn.
- Vælg tilladte autentificeringsmetoder.
- Angiv redirect URIs.
- Angiv post logout redirect URI.
- Vælg
token id_tokensom response type eller evt. kuntoken. - Deaktivér PKCE.
- Angiv ikke et secret.

Client and API
Det er muligt at konfigurere både client og API (OAuth 2.0 resource) i samme OpenID Connect applikationsregistrering, hvor både client og API er defineret med samme navn. Derudover er det muligt at konfigurere resource scopes for API'et.
Client tab

Resource tab

Resource and Scopes
Et API defineres som en resource hvorunder det er muligt at definere scopes. Sådanne scopes defineres som resource navn punktum scope f.eks. application-api1.read1 eller application-api1.read2.
I client konfiguration tab defineres scopes under resource navne feltet.

I resource konfiguration tab defineres scopes som en liste af scope værdier.

Scopes konfigureret i clienten valideres hvis scopes eksisterer på API'et. Hvis client og API er konfigureret i samme applikationsregistrering, tilføjes scopes til clienten automatisk til resource.
Scopes
Scopes kan konfigureres i client konfiguration tab. Det er muligt at definere nye scopes og et sæt claims som skal udstedes for scopes i Voluntary claims listen.
Du kan ændre claims og lave claim tasks med claim transforms og claim tasks.
Hvis du opretter en ny claim, tilføj claimen eller * til Issue claims listen eller alternativt tilføj claimen til Voluntary claims listen og anmod om scopet fra din applikation.
Et sæt default scopes tilføjes til client konfigurationen, som efterfølgende kan ændres eller slettes.

Token lifetime
Token lifetime konfigureres for ID token, access token og refresh token.

I dette eksempel er hvert refresh token gyldigt i 36.000 sekunder. Applikationen kan fortsætte med at refresh sessionen med refresh tokens indtil den absolutte levetid på 86.400 sekunder er nået.