OpenID Connect applikationsregistrering
FoxIDs OpenID Connect applikationsregistrering gör det möjligt att ansluta en OpenID Connect-baserad applikation.
Din applikation är en relying party (RP) och FoxIDs fungerar som OpenID Provider (OP).
FoxIDs stöder OpenID Connect Discovery, så att din applikation kan upptäcka OpenID Provider.
FoxIDs stöder OpenID Connect authentication (login), RP initiated logout och front channel logout. En session skapas när användaren autentiseras. Session ID ingår i ID token. Sessionen ogiltigförklaras vid logout. FoxIDs kan, beroende på konfiguration, visa en logout-bekräftelsedialog och om ett ID token ingår i logout requesten eller inte.
Som standard utfärdas både ID token och access token med Client ID som audience. Default resource kan tas bort i access token i FoxIDs Control. Access tokens kan utfärdas med en lista av audiences och därmed till flera API:er som definieras som OAuth 2.0 resources i FoxIDs. Applikationen kan då anropa ett API och säkra anropet med access token enligt The OAuth 2.0 Authorization Framework: Bearer Token Usage.
FoxIDs stöder både client secret och Proof Key for Code Exchange (PKCE) och kräver PKCE som standard. Om en client både har PKCE och secret/key konfigurerat valideras båda. PKCE och client secret/key valideras inte i implicit flow.
Default client authentication method är client secret post och kan ändras till client secret basic eller private key JWT. Client authentication method none stöds med PKCE.
Det kan konfigureras högst 10 secrets och 4 keys per client.
FoxIDs stöder OpenID Connect UserInfo endpoint.
How to guides:
- Anslut två FoxIDs miljöer i samma eller olika tenants med OpenID Connect
- Anslut två FoxIDs miljöer i samma tenant med en Environment Link
Det rekommenderas att använda OpenID Connect Authorization Code Flow med PKCE eftersom det anses vara ett säkert flöde.
Require multi-factor authentication (MFA)
OpenID Connect clienten kan kräva multi-factor authentication genom att ange värdet urn:foxids:mfa i parametern AcrValues.
Parametern AcrValues kan sättas i OnRedirectToIdentityProvider event i Startup.cs:
options.Events.OnRedirectToIdentityProvider = (context) =>
{
// To require MFA
context.ProtocolMessage.AcrValues = "urn:foxids:mfa";
return Task.FromResult(string.Empty);
};
Mer kod i AspNetCoreOidcAuthorizationCodeSample och Startup.cs line 141.
Configuration
Så här konfigurerar du din applikation som OpenID Connect applikationsregistrering relying party (RP) / client.
FoxIDs discovery-dokument för clienten är
https://foxids.com/tenant-x/environment-y/application-client1/.well-known/openid-configurationom clienten är konfigurerad i tenanttenant-xoch environmentenvironment-ymed applikationsregistrering clientnamnapplication-client1.
En applikationsregistrering client kan stödja login via flera authentication methods genom att lägga till authentication method-namnet i URL:en. Ett authentication method-namn t.ex.
loginkan läggas till i discovery URL:en, t.ex.https://foxids.com/tenant-x/environment-y/application-client1(login)/.well-known/openid-configuration
Under RP initiated logout kan authentication method-namnet i URL:en utelämnas om ett ID token ingår i requesten.
Configure Authorization Code Flow for a confidential client
En confidential client kan vara en webbapplikation där säkerheten hanteras av webbservern, som också lagrar client secret.
- Ange clientnamn i applikationsregistreringens namn.
- Välj tillåtna authentication methods.
- Ange redirect URI:er.
- Ange post logout redirect URI.
- Välj
codesom response type eller valfritt, men inte rekommenderat,code tokenellercode token id_token. - PKCE krävs inte för confidential client, men rekommenderas för att motverka replay attacks.
- Ange en secret.

Configure Authorization Code Flow for a public client
En public client kan vara en webbläsarbaserad rich client, en Blazor client eller en mobilapp. Applikationen bör använda PKCE och inte ha client secret.
- Ange clientnamn i applikationsregistreringens namn.
- Välj tillåtna authentication methods.
- Ange redirect URI:er.
- Ange post logout redirect URI.
- Välj
codesom response type. - Använd PKCE, aktiverat som standard.
Klicka "Show advanced" för att konfigurera allowed CORS origins.

Configure Implicit Code Flow for a public client
En public client kan vara en webbapplikation där säkerheten hanteras av webbservern, eller en webbläsarbaserad rich client. Applikationen använder varken PKCE eller client secret. Det rekommenderas inte att använda implicit code flow eftersom det är osäkert.
- Ange clientnamn i applikationsregistreringens namn.
- Välj tillåtna authentication methods.
- Ange redirect URI:er.
- Ange post logout redirect URI.
- Välj
token id_tokensom response type eller valfritt endasttoken. - Inaktivera PKCE.
- Ange ingen secret.

Client and API
Det är möjligt att konfigurera både client och API (OAuth 2.0 resource) i samma OpenID Connect applikationsregistrering, där både client och API definieras med samma namn. Du kan även konfigurera resource scopes för API:et.
Client tab

Resource tab

Resource and Scopes
Ett API definieras som en resource där scopes kan definieras. Sådana scopes definieras som resource name punkt scope, t.ex. application-api1.read1 eller application-api1.read2.
I client konfigurationsfliken definieras scopes under resource name-fältet.

I resource konfigurationsfliken definieras scopes som en lista med scope-värden.

Scopes som konfigureras i clienten valideras om scopesen finns i API:et. När client och API konfigureras i samma applikationsregistrering läggs scopes automatiskt till i resource.
Scopes
Scopes kan konfigureras i client konfigurationsfliken. Det är möjligt att definiera nya scopes och en uppsättning claims som ska utfärdas för scopesen i listan Voluntary claims.
Du kan ändra claims och utföra claim tasks med Claim Transforms och Claim Tasks.
När du skapar ett nytt claim, lägg till claimet eller * i listan Issue claims eller lägg till claimet i listan Voluntary claims och begär scopet från applikationen.
En uppsättning default scopes läggs till i client konfigurationen, som sedan kan ändras eller tas bort.

Token lifetime
Token lifetime konfigureras för ID token, access token och refresh token.

I detta exempel är varje refresh token giltigt i 36 000 sekunder. Applikationen kan fortsätta sessionen med refresh tokens tills den absoluta lifetime på 86 400 sekunder har nåtts.