OpenID Connect applicatieregistratie
FoxIDs OpenID Connect applicatieregistratie maakt het mogelijk om een OpenID Connect gebaseerde applicatie te koppelen.
Uw applicatie wordt een Relying Party (RP) en FoxIDs fungeert als OpenID Provider (OP).
FoxIDs ondersteunt OpenID Connect Discovery, zodat uw applicatie de OpenID Provider kan ontdekken.
FoxIDs ondersteunt OpenID Connect authentication, RP-initiated logout en front-channel logout. Er wordt een sessie aangemaakt wanneer de gebruiker zich authenticeert en de sessie-id wordt opgenomen in het ID-token. De sessie wordt ongeldig gemaakt bij logout.
FoxIDs kan een logout-bevestigingsdialoog tonen, afhankelijk van de clientconfiguratie en of een ID-token in het logout-verzoek is opgenomen.
Standaard gebruiken zowel het ID-token als het access token de client-id als audience. De standaardresource kan in het access token worden verwijderd in FoxIDs Control.
Access tokens kunnen ook met meerdere audiences worden uitgegeven en daardoor meerdere API's targeten die in FoxIDs zijn gedefinieerd als OAuth 2.0 resources. De applicatie kan dan een API aanroepen en het verzoek beveiligen met het access token volgens The OAuth 2.0 Authorization Framework: Bearer Token Usage.
FoxIDs ondersteunt zowel client secrets als Proof Key for Code Exchange (PKCE), en PKCE is standaard ingeschakeld. Als een client zowel met PKCE als met een secret of key is geconfigureerd, worden beide gevalideerd. PKCE en client secret of key worden niet gevalideerd in de implicit flow.
De standaard client-authenticatiemethode is client secret post en kan worden gewijzigd naar client secret basic of private key JWT. Client-authenticatiemethode none wordt ondersteund in combinatie met PKCE.
Per client kunnen maximaal 10 secrets en 4 keys worden geconfigureerd.
FoxIDs ondersteunt het OpenID Connect UserInfo endpoint.
Handleidingen:
- Verbind Tailscale
FoxIDs omgevingen koppelen
- Environment Link voor omgevingen in dezelfde tenant.
- OpenID Connect voor omgevingen in dezelfde of verschillende tenants.
Multi-factor authenticatie (MFA) vereisen
De OpenID Connect client kan MFA vereisen door urn:foxids:mfa op te nemen in de parameter acr_values. U kunt dit combineren met specifiekere waarden zoals urn:foxids:link. Zie MFA aanvragen vanuit applicaties.
De parameter acr_values kan worden ingesteld in het event OnRedirectToIdentityProvider in Startup.cs:
options.Events.OnRedirectToIdentityProvider = (context) =>
{
// To require MFA
context.ProtocolMessage.AcrValues = "urn:foxids:mfa";
return Task.FromResult(string.Empty);
};
Zie meer code in AspNetCoreOidcAuthorizationCodeSample en Startup.cs line 141.
Configuratie
Zo configureert u uw applicatie als een OpenID Connect applicatieregistratie, Relying Party (RP) of client.
Het FoxIDs discovery document van de client is
https://foxids.com/tenant-x/environment-y/application-client1/.well-known/openid-configurationals de client is geconfigureerd in tenanttenant-x, omgevingenvironment-yen met de clientnaamapplication-client1van de applicatieregistratie.
Een client in een applicatieregistratie kan aanmelden via meerdere authenticatiemethoden ondersteunen door de naam van de authenticatiemethode aan de URL toe te voegen. Bijvoorbeeld, een authenticatiemethodenaam zoals
loginkan zo aan de discovery-URL worden toegevoegd:https://foxids.com/tenant-x/environment-y/application-client1(login)/.well-known/openid-configuration
Tijdens RP-initiated logout kan de naam van de authenticatiemethode in de URL worden weggelaten als het ID-token in het verzoek is opgenomen.
Authorization Code flow configureren voor een confidential client
Een confidential client is meestal een server-side webapplicatie waarbij de webserver het client secret opslaat.
- Geef de clientnaam op in de naam van de applicatieregistratie.
- Selecteer de toegestane authenticatiemethoden.
- Geef de redirect-URI's op.
- Geef de post-logout redirect-URI op.
- Selecteer
codeals response type of, optioneel maar niet aanbevolen,code tokenofcode token id_token. - PKCE is niet vereist voor een confidential client, maar wordt wel aanbevolen om replay-aanvallen te beperken.
- Geef een secret op.

Authorization Code flow configureren voor een public client
Een public client kan een browsergebaseerde rich client, Blazor-client of mobiele app zijn. De applicatie moet PKCE gebruiken en mag geen client secret gebruiken.
- Geef de clientnaam op in de naam van de applicatieregistratie.
- Selecteer de toegestane authenticatiemethoden.
- Geef de redirect-URI's op.
- Geef de post-logout redirect-URI op.
- Selecteer
codeals response type. - Gebruik PKCE, dat standaard is ingeschakeld.
Klik op Show advanced om toegestane CORS origins te configureren.

Implicit flow configureren voor een public client
Een public client kan een browsergebaseerde rich client zijn. De applicatie gebruikt noch PKCE noch een client secret.
Het wordt niet aanbevolen om de implicit flow te gebruiken, omdat deze onveilig is.
- Geef de clientnaam op in de naam van de applicatieregistratie.
- Selecteer de toegestane authenticatiemethoden.
- Geef de redirect-URI's op.
- Geef de post-logout redirect-URI op.
- Selecteer
token id_tokenals response type of optioneel alleentoken. - Schakel PKCE uit.
- Geef geen secret op.

Client en API
Het is mogelijk om zowel de client als de API, een OAuth 2.0 resource, in dezelfde OpenID Connect applicatieregistratie te configureren. In dat geval worden zowel client als API met dezelfde naam gedefinieerd. U kunt ook resource scopes voor de API configureren.
Client tab

Resource tab

Resource en scopes
Een API wordt gedefinieerd als een resource en scopes worden onder die resource gedefinieerd. Zulke scopes gebruiken het formaat resourcenaam plus punt plus scope, bijvoorbeeld application-api1.read1 of application-api1.read2.
In het tabblad van de clientconfiguratie worden de scopes onder het veld met de resourcenaam gedefinieerd.

In het tabblad van de resourceconfiguratie worden de scopes gedefinieerd als een lijst met scopewaarden.

Scopes die op de client zijn geconfigureerd, worden gevalideerd tegen de scopes die op de API bestaan. Als client en API in dezelfde applicatieregistratie zijn geconfigureerd, worden scopes die aan de client worden toegevoegd automatisch aan de resource toegevoegd.
Scopes
Scopes kunnen worden geconfigureerd in het tabblad van de clientconfiguratie. U kunt nieuwe scopes definiƫren en de set claims die voor die scopes moet worden uitgegeven in de lijst Voluntary claims.
U kunt claims wijzigen en claim tasks implementeren met claim transforms en claim tasks.
Als u een nieuwe claim maakt, voeg de claim of * toe aan de lijst Issue claims, of voeg de claim toe aan de lijst Voluntary claims en vraag de scope vanuit uw applicatie aan.
Een set standaardscopes wordt aan de clientconfiguratie toegevoegd en kan daarna worden gewijzigd of verwijderd.

Tokenlevensduur
De tokenlevensduur wordt geconfigureerd voor het ID-token, access token en refresh token.

In dit voorbeeld is elk refresh token 36.000 seconden geldig. De applicatie kan de sessie blijven vernieuwen met refresh tokens totdat de absolute levensduur van 86.400 seconden is bereikt.