OpenID Connect applicatieregistratie
FoxIDs OpenID Connect applicatieregistratie maakt het mogelijk om een OpenID Connect-gebaseerde applicatie te koppelen.
Je applicatie is een relying party (RP) en FoxIDs fungeert als OpenID Provider (OP).
FoxIDs ondersteunt OpenID Connect Discovery, zodat je applicatie de OpenID Provider kan ontdekken.
FoxIDs ondersteunt OpenID Connect authentication (login), RP initiated logout en front channel logout. Een sessie wordt aangemaakt wanneer de gebruiker is geauthenticeerd. De session ID is inbegrepen in het ID token. De sessie wordt ongeldig gemaakt bij logout. FoxIDs kan, afhankelijk van configuratie, een logout-bevestigingsdialoog tonen en of een ID token in de logout request is inbegrepen of niet.
Standaard worden zowel ID token als access token uitgegeven met de client ID als audience. De default resource kan in het access token worden verwijderd in FoxIDs Control. Access tokens kunnen met een lijst van audiences worden uitgegeven en daarmee aan meerdere API's die in FoxIDs als OAuth 2.0 resources zijn gedefinieerd. De applicatie kan dan een API aanroepen en de call beveiligen met het access token volgens The OAuth 2.0 Authorization Framework: Bearer Token Usage.
FoxIDs ondersteunt zowel client secret als Proof Key for Code Exchange (PKCE) en vereist standaard PKCE. Als een client zowel PKCE als secret/key heeft geconfigureerd, worden beide gevalideerd. PKCE en client secret/key worden niet gevalideerd in de implicit flow.
De default client authentication method is client secret post en kan worden gewijzigd naar client secret basic of private key JWT. Client authentication method none wordt ondersteund met PKCE.
Er kunnen maximaal 10 secrets en 4 keys per client worden geconfigureerd.
FoxIDs ondersteunt de OpenID Connect UserInfo endpoint.
How to guides:
- Verbind twee FoxIDs omgevingen in dezelfde of verschillende tenants met OpenID Connect
- Verbind twee FoxIDs omgevingen in dezelfde tenant met een Environment Link
Het wordt aanbevolen om OpenID Connect Authorization Code Flow met PKCE te gebruiken, omdat dit als een veilige flow wordt beschouwd.
Require multi-factor authentication (MFA)
De OpenID Connect client kan multi-factor authentication vereisen door de waarde urn:foxids:mfa op te nemen in de parameter AcrValues.
De parameter AcrValues kan worden gezet in de OnRedirectToIdentityProvider event in Startup.cs:
options.Events.OnRedirectToIdentityProvider = (context) =>
{
// To require MFA
context.ProtocolMessage.AcrValues = "urn:foxids:mfa";
return Task.FromResult(string.Empty);
};
Meer code in AspNetCoreOidcAuthorizationCodeSample en Startup.cs line 141.
Configuration
Zo configureer je je applicatie als OpenID Connect applicatieregistratie relying party (RP) / client.
Het FoxIDs discovery document van de client is
https://foxids.com/tenant-x/environment-y/application-client1/.well-known/openid-configurationwanneer de client is geconfigureerd in tenanttenant-xen environmentenvironment-ymet applicatieregistratie clientnaamapplication-client1.
Een applicatieregistratie client kan login met meerdere authentication methods ondersteunen door de authentication method-naam aan de URL toe te voegen. Een authentication method-naam, bijvoorbeeld
login, kan worden toegevoegd aan de discovery URL, bijvoorbeeldhttps://foxids.com/tenant-x/environment-y/application-client1(login)/.well-known/openid-configuration
Tijdens RP initiated logout kan de authentication method-naam in de URL worden weggelaten als er een ID token in de request is opgenomen.
Configure Authorization Code Flow for a confidential client
Een confidential client kan een webapplicatie zijn waarbij de beveiliging door de webserver wordt afgehandeld, die ook het client secret opslaat.
- Geef de clientnaam op in de applicatieregistratie naam.
- Selecteer toegestane authentication methods.
- Geef redirect URI's op.
- Geef post logout redirect URI op.
- Kies
codeals response type of optioneel, maar niet aanbevolen,code tokenofcode token id_token. - PKCE is niet vereist voor een confidential client, maar wordt aanbevolen om replay attacks te beperken.
- Geef een secret op.

Configure Authorization Code Flow for a public client
Een public client kan een browser-based rich client, een Blazor client of een mobiele app zijn. De applicatie moet PKCE gebruiken en geen client secret.
- Geef de clientnaam op in de applicatieregistratie naam.
- Selecteer toegestane authentication methods.
- Geef redirect URI's op.
- Geef post logout redirect URI op.
- Selecteer
codeals response type. - Gebruik PKCE, standaard ingeschakeld.
Klik "Show advanced" om allowed CORS origins te configureren.

Configure Implicit Code Flow for a public client
Een public client kan een webapplicatie zijn waarbij de beveiliging door de webserver wordt afgehandeld, of een browser-based rich client. De applicatie gebruikt geen PKCE of client secret. Het wordt niet aanbevolen om implicit code flow te gebruiken, omdat dit onveilig is.
- Geef de clientnaam op in de applicatieregistratie naam.
- Selecteer toegestane authentication methods.
- Geef redirect URI's op.
- Geef post logout redirect URI op.
- Kies
token id_tokenals response type of optioneel alleentoken. - Schakel PKCE uit.
- Geef geen secret op.

Client and API
Het is mogelijk om zowel client als API (OAuth 2.0 resource) in dezelfde OpenID Connect applicatieregistratie te configureren, waarbij zowel client als API met dezelfde naam zijn gedefinieerd. Je kunt ook resource scopes configureren voor de API.
Client tab

Resource tab

Resource and Scopes
Een API wordt gedefinieerd als een resource waarop scopes kunnen worden gedefinieerd. Deze scopes worden gedefinieerd als resource name punt scope, bijvoorbeeld application-api1.read1 of application-api1.read2.
In de client configuratietab worden scopes gedefinieerd onder het resource name veld.

In de resource configuratietab worden scopes gedefinieerd als een lijst met scope waarden.

Scopes die in de client zijn geconfigureerd worden gevalideerd als de scopes in de API bestaan. Als client en API in dezelfde applicatieregistratie zijn geconfigureerd, worden scopes automatisch aan de resource toegevoegd.
Scopes
Scopes kunnen worden geconfigureerd in de client configuratietab. Het is mogelijk om nieuwe scopes en een set claims te definiƫren die moeten worden uitgegeven voor de scopes in de lijst Voluntary claims.
Je kunt claims wijzigen en claim tasks uitvoeren met Claim Transforms and Claim Tasks.
Als je een nieuw claim aanmaakt, voeg het claim of * toe aan de lijst Issue claims of voeg het claim toe aan de lijst Voluntary claims en vraag de scope aan vanuit je applicatie.
Een set default scopes wordt aan de client configuratie toegevoegd, die daarna kan worden gewijzigd of verwijderd.

Token lifetime
De token lifetime wordt geconfigureerd voor ID token, access token en refresh token.

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