OpenID Connect-applikasjonsregistrering
En FoxIDs OpenID Connect-applikasjonsregistrering gjør det mulig for en web-, enkeltside- eller native applikasjon å autentisere brukere gjennom FoxIDs og motta ID-tokens og tilgangstokens. Applikasjonen er Relying Party (RP), og FoxIDs er OpenID Provider (OP).
Viktige OpenID Connect-funksjoner omfatter discovery, Authorization Code Flow, PKCE, klienthemmeligheter og nøkler, UserInfo-endepunktet, RP-initiert utlogging og front-channel logout.
Konfigurasjon
I FoxIDs Control:
- Velg miljøet der applikasjonen skal registreres.
- Åpne Applications, og klikk på Add application.
- Velg Web Application, Single Page Application eller Native Application. Disse tre OpenID Connect-alternativene vises uten å aktivere Show all options.
- Angi et navn og en redirect-URI, gjennomgå den genererte applikasjonsinformasjonen, og klikk på Create.
- Kopier en eventuell generert hemmelighet før opprettingsresultatet lukkes. En generert hemmelighet vises bare under opprettelsen.

Etter opprettelsen klikker du på Change application for å gjennomgå eller endre alle applikasjonsinnstillingene. Kortet for applikasjonstypen gir en egnet startkonfigurasjon, og den resulterende OpenID Connect-klienten kan deretter tilpasses.
Webapplikasjon (konfidensiell klient)
Velg Web Application for en applikasjon som kjører på en server, for eksempel en ASP.NET Core-, Node.js-, Java- eller PHP-applikasjon. Den opprettes som en konfidensiell klient med:
- Authorization Code Flow med response type
code. - En generert klienthemmelighet.
- PKCE deaktivert som standard. Aktiver Require PKCE etter opprettelsen når applikasjonen støtter PKCE. Dette anbefales som ekstra beskyttelse av autorisasjonskoden.
Angi applikasjonens base-URL eller callback-URL som Redirect URI. Aktiver bare Show advanced under opprettelsen hvis du må velge klient-ID eller konfigurere nøyaktig samsvar for redirect-URL.

Enkeltsideapplikasjon (offentlig klient)
Velg Single Page Application for en applikasjon som kjører i nettleseren, for eksempel React, Angular, Vue eller Blazor WebAssembly. Den opprettes som en offentlig klient med:
- Authorization Code Flow med response type
code. - PKCE aktivert som standard.
- Ingen klienthemmelighet.
- Redirect-URL-ens origin lagt til som en tillatt CORS-origin.

Native applikasjon (offentlig klient)
Velg Native Application for en installert mobil- eller skrivebordsapplikasjon, for eksempel iOS, Android, React Native, .NET MAUI eller Ionic. Den opprettes som en offentlig klient med Authorization Code Flow, PKCE aktivert som standard og uten klienthemmelighet.
Redirect-URI-en kan bruke et applikasjonsspesifikt skjema som myapp://callback eller en HTTPS-URI som applikasjonen støtter.

Redirect-URI-er og absolutte verdier
Som standard er Absolute URIs deaktivert for web- og enkeltsideapplikasjoner. Den konfigurerte redirect-URL-en behandles da som en grunnverdi, og redirect-URL-er som starter med denne verdien, godtas.
Aktiver Show advanced og Absolute URIs hvis du kjenner den nøyaktige URL-en i applikasjonen som brukeren skal sendes tilbake til etter innlogging. Angi den nøyaktige URL-en som Redirect URI. Den samme innstillingen støtter nøyaktige applikasjonsspesifikke URI-er for native applikasjoner.
Etter opprettelsen kan redirect-URI-er, post-logout-redirect-URI og tillatte CORS-origins endres på fanen OpenID Connect Client. Når tillatte CORS-origins ikke er redigert separat, sørger FoxIDs for at CORS-origins som samsvarer med redirect-URI-er forblir synkroniserte når redirect-URI-ene endres. Hvis du redigerer de tillatte CORS-origins direkte, bevarer FoxIDs verdiene du angir. La Show advanced være deaktivert med mindre innstillingen du trenger, er avansert.
Implicit Flow
Implicit Flow beholdes av kompatibilitetshensyn, men anbefales ikke for nye applikasjoner. Bruk i stedet Authorization Code Flow med PKCE.
For å konfigurere en eksisterende offentlig klient for Implicit Flow klikker du på Change application, aktiverer Show advanced, endrer Response types til token id_token eller eventuelt bare token og deaktiverer Require PKCE. Response types kan endres i de samme avanserte klientinnstillingene når en annen støttet kombinasjon er nødvendig.

Applikasjonsendepunkter og klientsikkerhet
Applikasjonsinformasjonen i FoxIDs Control inneholder authority, klient-ID, discovery-endepunkt, authorize-endepunkt og token-endepunkt. Et OpenID Connect-discoverydokument har denne formen:
https://foxids.com/tenant-x/environment-y/application-client1(*)/.well-known/openid-configuration
En applikasjon kan tillate innlogging gjennom flere autentiseringsmetoder. Hvis en autentiseringsmetode definerer profiler, kan grunnmetoden og hver profil velges uavhengig. Legg til autentiseringsmetodens navn i applikasjonssegmentet for å velge metode i authority-URL-en:
https://foxids.com/tenant-x/environment-y/application-client1(login)/.well-known/openid-configuration
Ved RP-initiert utlogging kan navnet på autentiseringsmetoden utelates når ID-tokenet er inkludert i forespørselen.
Applikasjonsspesifikk issuer
Som standard bruker tokens som utstedes til applikasjonen, miljøets issuer:
https://foxids.com/tenant-x/environment-y/
For å la issuer samsvare med applikasjonens authority klikker du på Change application, aktiverer Show advanced og aktiverer Use matching issuer and authority with application specific issuer. Issuer blir da:
https://foxids.com/tenant-x/environment-y/application-client1(*)

Den applikasjonsspesifikke issuer endres når de valgte autentiseringsmetodene i authority-URL-en endres. For API-er avhenger issuer derfor av den kallende applikasjonen. Token exchange er bare mulig mellom konfigurasjoner med tilsvarende autentiseringsmetoder.
Klientsikkerhet
Offentlige klienter, inkludert enkeltside- og native applikasjoner, kan ikke oppbevare klientlegitimasjon sikkert. Konfigurer dem uten en klienthemmelighet, og bruk Authorization Code Flow med PKCE.
Konfidensielle klienter autentiserer seg ved token-endepunktet. Standardmetoden for klientautentisering er client secret post. Aktiver Show advanced for å endre den til client secret basic eller private key JWT. PKCE anbefales også når den konfidensielle klienten støtter det. Hvis både PKCE og en klienthemmelighet eller nøkkel er konfigurert, validerer FoxIDs begge.
Klientautentiseringsmetoden none støttes med PKCE. Opptil 10 hemmeligheter og 4 nøkler kan konfigureres for en klient. Oppbevar klienthemmeligheter og private nøkler sikkert, og roter dem ved behov.
FoxIDs etablerer en økt når brukeren autentiseres, og inkluderer økt-ID-en i ID-tokenet. Økten ugyldiggjøres ved utlogging. Avhengig av klientkonfigurasjonen og om utloggingsforespørselen inneholder et ID-token, kan FoxIDs vise en dialog for å bekrefte utloggingen.
Klient og API
En OpenID Connect-applikasjonsregistrering kan inneholde både klienten og dens OAuth 2.0-resource. Klient-ID-en er da også navnet på API-resursen.
Følgende eksempel konfigurerer oidc-web-app som både OpenID Connect-klient og API:
- Klikk på Change application, og aktiver Show advanced.
- Endre applikasjonsregistreringstypen til OpenID Connect Client and OAuth 2.0 Resource.
- Behold Default resource 'oidc-web-app' for the application itself valgt på fanen OpenID Connect Client.
- Legg til scopes
readogwriteunder standardresursen.

Definer de samme scopene 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 eksemplet kaller klienten oidc-web-app et separat Orders API med resursnavnet orders-api.
På klientens fane OpenID Connect Client:
- Fjern valget av Default resource 'oidc-web-app' for the application itself, fordi klienten ikke fungerer som sitt eget API.
- Legg til resursen
orders-api. - Legg til scopes
readogwriteunder denne resursen.
De fullstendige scopeverdiene som klienten ber om, er orders-api:read og orders-api:write.

Definer read og write på fanen OAuth 2.0 Resource i Orders API-applikasjonsregistreringen.

Scopes som en klient ber om, valideres mot scopene som er konfigurert på API-et. Hvis klienten og API-et finnes i samme applikasjonsregistrering, legges scopes under klientens standardresource automatisk til resursen.
Som standard er klient-ID-en audience for både ID-tokenet og tilgangstokenet. Konfigurerte ressursscopes legger til API-audiences i tilgangstokenet, og ett tilgangstoken kan rettes mot flere API-resurser.
Scopes og claims
OpenID Connect-scopes konfigureres på fanen OpenID Connect Client. Standardscopene offline_access, profile, email, address og phone kan endres eller fjernes. For hvert scope styrer Voluntary claims hvilke claims som utstedes når klienten ber om dette scopet.

Aktiver Show advanced for å konfigurere Issue claims. Legg til et bestemt claim, eller legg til * for å utstede alle tilgjengelige claims i tilgangstokenet. La Include in ID token være deaktivert for *. Ellers kopieres alle tilgjengelige claims til ID-tokenet, noe som kan gjøre det svært stort og skape problemer i flows der ID-tokenet sendes under utlogging.

Alternativt kan du legge til et claim i et scopes Voluntary claims og be om dette scopet fra applikasjonen. Individuelle claims kan inkluderes i ID-tokenet når applikasjonen trenger dem der. Claims kan også endres med claim transforms og claim tasks.
Tokenlevetid
Klikk på Change application, og aktiver Show advanced for å konfigurere levetiden for autorisasjonskode, ID-token, tilgangstoken og refresh token.

I dette eksemplet er hvert refresh token gyldig i 36 000 sekunder. Applikasjonen kan fortsette å fornye økten til refresh tokenets absolutte levetid på 86 400 sekunder er nådd.
Krev multifaktorautentisering (MFA)
En OpenID Connect-klient kan kreve MFA ved å inkludere urn:foxids:mfa i parameteren acr_values. Den kan kombineres med mer spesifikke verdier som urn:foxids:link. Se be om MFA fra applikasjoner.
Parameteren acr_values kan angis 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-konfigurasjon.
Veiledninger
- Koble til Tailscale