OpenID Connect-applikationsregistrering
En FoxIDs OpenID Connect-applikationsregistrering gør det muligt for en web-, single-page- eller native applikation at autentificere brugere gennem FoxIDs og modtage ID-tokens og adgangstokens. Applikationen er Relying Party (RP), og FoxIDs er OpenID Provider (OP).
Vigtige OpenID Connect-funktioner omfatter discovery, Authorization Code Flow, PKCE, klienthemmeligheder og nøgler, UserInfo-endpointet, RP-initieret logout og front-channel logout.
Konfiguration
I FoxIDs Control:
- Vælg det miljø, hvor applikationen skal registreres.
- Åbn Applications, og klik på Add application.
- Vælg Web Application, Single Page Application eller Native Application. Disse tre OpenID Connect-muligheder vises uden at aktivere Show all options.
- Angiv et navn og en redirect-URI, gennemgå de genererede applikationsoplysninger, og klik på Create.
- Kopiér en eventuel genereret hemmelighed, før oprettelsesresultatet lukkes. En genereret hemmelighed vises kun under oprettelsen.

Efter oprettelsen kan du klikke på Change application for at gennemgå eller ændre alle applikationsindstillinger. Kortet for applikationstypen giver en passende startkonfiguration, og den resulterende OpenID Connect-klient kan derefter tilpasses.
Webapplikation (fortrolig klient)
Vælg Web Application til en applikation, der kører på en server, f.eks. en ASP.NET Core-, Node.js-, Java- eller PHP-applikation. Den oprettes som en fortrolig klient med:
- Authorization Code Flow med response type
code. - En genereret klienthemmelighed.
- PKCE deaktiveret som standard. Aktivér Require PKCE efter oprettelsen, når applikationen understøtter PKCE. Det anbefales som ekstra beskyttelse af autorisationskoden.
Angiv applikationens basis-URL eller callback-URL som Redirect URI. Aktivér kun Show advanced under oprettelsen, hvis du har behov for at vælge klient-ID eller konfigurere nøjagtig matchning af redirect-URL.

Single-page-applikation (offentlig klient)
Vælg Single Page Application til en applikation, der kører i browseren, f.eks. React, Angular, Vue eller Blazor WebAssembly. Den oprettes som en offentlig klient med:
- Authorization Code Flow med response type
code. - PKCE aktiveret som standard.
- Ingen klienthemmelighed.
- Redirect-URL'ens origin tilføjet som en tilladt CORS-origin.

Native applikation (offentlig klient)
Vælg Native Application til en installeret mobil- eller desktopapplikation, f.eks. iOS, Android, React Native, .NET MAUI eller Ionic. Den oprettes som en offentlig klient med Authorization Code Flow, PKCE aktiveret som standard og uden klienthemmelighed.
Redirect-URI'en kan bruge et applikationsspecifikt skema som myapp://callback eller en HTTPS-URI, som applikationen understøtter.

Redirect-URI'er og absolutte værdier
Som standard er Absolute URIs deaktiveret for web- og single-page-applikationer. Den konfigurerede redirect-URL behandles dermed som en basisværdi, og redirect-URL'er, der starter med denne værdi, accepteres.
Aktivér Show advanced og Absolute URIs, hvis du kender den præcise URL i applikationen, som brugeren skal sendes tilbage til efter login. Angiv denne præcise URL som Redirect URI. Den samme indstilling understøtter præcise applikationsspecifikke URI'er til native applikationer.
Efter oprettelsen kan redirect-URI'er, post-logout-redirect-URI og tilladte CORS-origins ændres på fanen OpenID Connect Client. Når de tilladte CORS-origins ikke er redigeret separat, sørger FoxIDs for, at CORS-origins, der matcher redirect-URI'er, forbliver synkroniserede, når redirect-URI'erne ændres. Hvis du redigerer de tilladte CORS-origins direkte, bevarer FoxIDs de værdier, du angiver. Lad Show advanced være deaktiveret, medmindre den ønskede indstilling er avanceret.
Implicit Flow
Implicit Flow bevares af kompatibilitetshensyn, men anbefales ikke til nye applikationer. Brug i stedet Authorization Code Flow med PKCE.
For at konfigurere en eksisterende offentlig klient til Implicit Flow skal du klikke på Change application, aktivere Show advanced, ændre Response types til token id_token eller eventuelt kun token og deaktivere Require PKCE. Response types kan ændres i de samme avancerede klientindstillinger, når en anden understøttet kombination er nødvendig.

Applikationsendpoints og klientsikkerhed
Applikationsoplysningerne i FoxIDs Control indeholder authority, klient-ID, discovery-endpoint, authorize-endpoint og token-endpoint. Et OpenID Connect-discoverydokument har denne form:
https://foxids.com/tenant-x/environment-y/application-client1(*)/.well-known/openid-configuration
En applikation kan tillade login gennem flere autentificeringsmetoder. Hvis en autentificeringsmetode definerer profiler, kan den grundlæggende autentificeringsmetode og hver profil vælges uafhængigt. Tilføj autentificeringsmetodens navn til applikationssegmentet for at vælge metoden i authority-URL'en:
https://foxids.com/tenant-x/environment-y/application-client1(login)/.well-known/openid-configuration
Ved RP-initieret logout kan autentificeringsmetodens navn udelades, når ID-tokenet er inkluderet i requesten.
Applikationsspecifik issuer
Som standard bruger tokens, der udstedes til applikationen, miljøets issuer:
https://foxids.com/tenant-x/environment-y/
For at få issuer til at matche applikationens authority skal du klikke på Change application, aktivere Show advanced og aktivere Use matching issuer and authority with application specific issuer. Issuer bliver derefter:
https://foxids.com/tenant-x/environment-y/application-client1(*)

Den applikationsspecifikke issuer ændres, når de valgte autentificeringsmetoder i authority-URL'en ændres. For API'er afhænger issuer derfor af den kaldende applikation. Token exchange er kun mulig mellem konfigurationer med tilsvarende autentificeringsmetoder.
Klientsikkerhed
Offentlige klienter, herunder single-page- og native applikationer, kan ikke opbevare klientlegitimationsoplysninger sikkert. Konfigurer dem uden en klienthemmelighed, og brug Authorization Code Flow med PKCE.
Fortrolige klienter autentificerer sig ved token-endpointet. Standardmetoden til klientautentificering er client secret post. Aktivér Show advanced for at ændre den til client secret basic eller private key JWT. PKCE anbefales også, når den fortrolige klient understøtter det. Hvis både PKCE og en klienthemmelighed eller nøgle er konfigureret, validerer FoxIDs begge dele.
Klientautentificeringsmetoden none understøttes med PKCE. Der kan konfigureres op til 10 hemmeligheder og 4 nøgler for en klient. Opbevar klienthemmeligheder og private nøgler sikkert, og rotér dem efter behov.
FoxIDs etablerer en session, når brugeren autentificeres, og inkluderer sessionens ID i ID-tokenet. Sessionen ugyldiggøres ved logout. Afhængigt af klientkonfigurationen og om logout-requesten indeholder et ID-token, kan FoxIDs vise en dialog til bekræftelse af logout.
Klient og API
En OpenID Connect-applikationsregistrering kan indeholde både klienten og dens OAuth 2.0-resource. Klient-ID'et er dermed også API-resourcens navn.
Følgende eksempel konfigurerer oidc-web-app som både OpenID Connect-klient og API:
- Klik på Change application, og aktivér Show advanced.
- Skift applikationsregistreringstypen til OpenID Connect Client and OAuth 2.0 Resource.
- Bevar markeringen af Default resource 'oidc-web-app' for the application itself på fanen OpenID Connect Client.
- Tilføj scopes
readogwriteunder standardresourcen.

Definér de samme scopes read og write, som API'et eksponerer, på fanen OAuth 2.0 Resource.

Resource og scopes
Et API kan i stedet registreres separat som en OAuth 2.0-resource. I dette eksempel kalder klienten oidc-web-app et separat Orders API med resourcenavnet orders-api.
På klientens fane OpenID Connect Client:
- Fjern markeringen af Default resource 'oidc-web-app' for the application itself, fordi denne klient ikke fungerer som sit eget API.
- Tilføj resourcen
orders-api. - Tilføj scopes
readogwriteunder denne resource.
De fuldstændige scopeværdier, som klienten anmoder om, er orders-api:read og orders-api:write.

Definér read og write på fanen OAuth 2.0 Resource i Orders API-applikationsregistreringen.

Scopes, som en klient anmoder om, valideres mod de scopes, der er konfigureret på API'et. Hvis klienten og API'et er i samme applikationsregistrering, tilføjes scopes under klientens standardresource automatisk til resourcen.
Som standard er klient-ID'et audience for både ID-tokenet og adgangstokenet. Konfigurerede resourcescopes tilføjer API-audiences til adgangstokenet, og ét adgangstoken kan være målrettet flere API-resourcer.
Scopes og claims
OpenID Connect-scopes konfigureres på fanen OpenID Connect Client. Standardscopes offline_access, profile, email, address og phone kan ændres eller fjernes. For hvert scope styrer Voluntary claims, hvilke claims der udstedes, når klienten anmoder om dette scope.

Aktivér Show advanced for at konfigurere Issue claims. Tilføj et specifikt claim, eller tilføj * for at udstede alle tilgængelige claims i adgangstokenet. Lad Include in ID token være deaktiveret for *. Ellers kopieres alle tilgængelige claims til ID-tokenet, hvilket kan gøre det meget stort og give problemer i flows, hvor ID-tokenet sendes under logout.

Alternativt kan du tilføje et claim til et scopes Voluntary claims og anmode om dette scope fra applikationen. Individuelle claims kan inkluderes i ID-tokenet, når applikationen har brug for dem der. Claims kan også ændres med claim transforms og claim tasks.
Tokenlevetid
Klik på Change application, og aktivér Show advanced for at konfigurere levetiden for autorisationskode, ID-token, adgangstoken og refresh token.

I dette eksempel er hvert refresh token gyldigt i 36.000 sekunder. Applikationen kan fortsætte med at forny sessionen, indtil refresh tokenets absolutte levetid på 86.400 sekunder er nået.
Kræv multifaktorautentificering (MFA)
En OpenID Connect-klient kan kræve MFA ved at inkludere urn:foxids:mfa i parameteren acr_values. Den kan kombineres med mere specifikke værdier som urn:foxids:link. Se anmod om MFA fra applikationer.
Parameteren acr_values kan angives i eventet OnRedirectToIdentityProvider i Startup.cs:
options.Events.OnRedirectToIdentityProvider = (context) =>
{
context.ProtocolMessage.AcrValues = "urn:foxids:mfa";
return Task.FromResult(string.Empty);
};
Se AspNetCoreOidcAuthorizationCodeSample og dens Startup.cs-konfiguration.
Vejledninger
- Forbind Tailscale