OpenID Connect-applicatieregistratie

Met een FoxIDs OpenID Connect-applicatieregistratie kan een web-, single-page- of native applicatie gebruikers via FoxIDs authenticeren en ID-tokens en toegangstokens ontvangen. De applicatie is de Relying Party (RP) en FoxIDs is de OpenID Provider (OP).

FoxIDs OpenID Connect-applicatieregistratie

Belangrijke OpenID Connect-mogelijkheden zijn discovery, Authorization Code Flow, PKCE, clientgeheimen en sleutels, het UserInfo-endpoint, door de RP geïnitieerde afmelding en front-channel logout.

Configuratie

In FoxIDs Control:

  1. Selecteer de omgeving waarin de applicatie moet worden geregistreerd.
  2. Open Applications en klik op Add application.
  3. Kies Web Application, Single Page Application of Native Application. Deze drie OpenID Connect-opties worden weergegeven zonder Show all options in te schakelen.
  4. Voer een naam en redirect-URI in, controleer de gegenereerde applicatiegegevens en klik op Create.
  5. Kopieer een eventueel gegenereerd geheim voordat u het aanmaakresultaat sluit. Een gegenereerd geheim wordt alleen tijdens het aanmaken weergegeven.

Kies een OpenID Connect-applicatietype

Klik na het aanmaken op Change application om alle applicatie-instellingen te bekijken of te wijzigen. De kaart van het applicatietype biedt een geschikte beginconfiguratie; de resulterende OpenID Connect-client kan daarna worden aangepast.

Webapplicatie (confidential client)

Kies Web Application voor een applicatie die op een server draait, zoals een ASP.NET Core-, Node.js-, Java- of PHP-applicatie. Deze wordt als confidential client aangemaakt met:

  • Authorization Code Flow met response type code.
  • Een gegenereerd clientgeheim.
  • PKCE standaard uitgeschakeld. Schakel na het aanmaken Require PKCE in wanneer de applicatie PKCE ondersteunt. Dit wordt aanbevolen als extra bescherming voor de autorisatiecode.

Voer de basis-URL of callback-URL van de applicatie in als Redirect URI. Schakel Show advanced tijdens het aanmaken alleen in als u de client-ID moet kiezen of exacte overeenstemming van de redirect-URL moet configureren.

Maak een OpenID Connect-webapplicatie

Single-page-applicatie (public client)

Kies Single Page Application voor een applicatie die in de browser draait, zoals React, Angular, Vue of Blazor WebAssembly. Deze wordt als public client aangemaakt met:

  • Authorization Code Flow met response type code.
  • PKCE standaard ingeschakeld.
  • Geen clientgeheim.
  • De origin van de redirect-URL toegevoegd als toegestane CORS-origin.

Maak een OpenID Connect-single-page-applicatie met PKCE

Native applicatie (public client)

Kies Native Application voor een geïnstalleerde mobiele of desktopapplicatie, zoals iOS, Android, React Native, .NET MAUI of Ionic. Deze wordt als public client aangemaakt met Authorization Code Flow, PKCE standaard ingeschakeld en zonder clientgeheim.

De redirect-URI kan een applicatiespecifiek schema gebruiken, zoals myapp://callback, of een HTTPS-URI die door de applicatie wordt ondersteund.

Maak een native OpenID Connect-applicatie met PKCE

Redirect-URI's en absolute waarden

Standaard is Absolute URIs uitgeschakeld voor web- en single-page-applicaties. De geconfigureerde redirect-URL wordt dan als basiswaarde behandeld en redirect-URL's die met deze waarde beginnen, worden geaccepteerd.

Schakel Show advanced en Absolute URIs in als u de exacte URL in uw applicatie kent waarnaar de gebruiker na aanmelding moet worden teruggestuurd. Voer die exacte URL in als Redirect URI. Dezelfde instelling ondersteunt exacte applicatiespecifieke URI's voor native applicaties.

Na het aanmaken kunnen redirect-URI's, post-logout-redirect-URI en toegestane CORS-origins worden gewijzigd op het tabblad OpenID Connect Client. Laat Show advanced uitgeschakeld tenzij de benodigde instelling geavanceerd is.

Implicit Flow

Implicit Flow blijft beschikbaar voor compatibiliteit, maar wordt niet aanbevolen voor nieuwe applicaties. Gebruik bij voorkeur Authorization Code Flow met PKCE.

Om een bestaande public client voor Implicit Flow te configureren, klikt u op Change application, schakelt u Show advanced in, wijzigt u Response types in token id_token of optioneel alleen token en schakelt u Require PKCE uit. Response types kunnen in dezelfde geavanceerde clientinstellingen worden gewijzigd wanneer een andere ondersteunde combinatie nodig is.

Selecteer response types voor token en ID-token voor Implicit Flow

Applicatie-endpoints en clientbeveiliging

De applicatiegegevens in FoxIDs Control bevatten de authority, client-ID, discovery-endpoint, authorize-endpoint en token-endpoint. Een OpenID Connect-discoverydocument heeft deze vorm:

https://foxids.com/tenant-x/environment-y/application-client1(*)/.well-known/openid-configuration

Een applicatie kan aanmelding via meerdere authenticatiemethoden toestaan. Als een authenticatiemethode profielen definieert, kunnen de basismethode en elk profiel onafhankelijk worden geselecteerd. Voeg de naam van een authenticatiemethode toe aan het applicatiesegment om deze methode in de authority-URL te selecteren:

https://foxids.com/tenant-x/environment-y/application-client1(login)/.well-known/openid-configuration

Bij door de RP geïnitieerde afmelding kan de naam van de authenticatiemethode worden weggelaten wanneer het ID-token in het verzoek is opgenomen.

Applicatiespecifieke issuer

Tokens die aan de applicatie worden uitgegeven, gebruiken standaard de issuer van de omgeving:

https://foxids.com/tenant-x/environment-y/

Om de issuer te laten overeenkomen met de authority van de applicatie, klikt u op Change application, schakelt u Show advanced in en activeert u Use matching issuer and authority with application specific issuer. De issuer wordt dan:

https://foxids.com/tenant-x/environment-y/application-client1(*)

Schakel een applicatiespecifieke OpenID Connect-issuer in

De applicatiespecifieke issuer verandert wanneer de geselecteerde authenticatiemethoden in de authority-URL veranderen. Voor API's is de issuer daarom afhankelijk van de aanroepende applicatie. Token exchange is alleen mogelijk tussen configuraties met overeenkomstige authenticatiemethoden.

Clientbeveiliging

Public clients, waaronder single-page- en native applicaties, kunnen clientreferenties niet veilig bewaren. Configureer ze zonder clientgeheim en gebruik Authorization Code Flow met PKCE.

Confidential clients authenticeren bij het token-endpoint. De standaardmethode voor clientauthenticatie is client secret post. Schakel Show advanced in om deze te wijzigen in client secret basic of private key JWT. PKCE wordt ook aanbevolen wanneer de confidential client dit ondersteunt. Als zowel PKCE als een clientgeheim of sleutel is geconfigureerd, valideert FoxIDs beide.

Clientauthenticatiemethode none wordt ondersteund met PKCE. Voor een client kunnen maximaal 10 geheimen en 4 sleutels worden geconfigureerd. Bewaar clientgeheimen en privésleutels veilig en roteer ze wanneer dat nodig is.

FoxIDs maakt een sessie wanneer de gebruiker wordt geauthenticeerd en neemt de sessie-ID op in het ID-token. De sessie wordt bij afmelding ongeldig gemaakt. Afhankelijk van de clientconfiguratie en of het afmeldverzoek een ID-token bevat, kan FoxIDs een bevestigingsvenster voor afmelding tonen.

Client en API

Een OpenID Connect-applicatieregistratie kan zowel de client als de bijbehorende OAuth 2.0-resource bevatten. De client-ID is dan ook de naam van de API-resource.

In het volgende voorbeeld wordt oidc-web-app geconfigureerd als zowel OpenID Connect-client als API:

  1. Klik op Change application en schakel Show advanced in.
  2. Wijzig het type applicatieregistratie in OpenID Connect Client and OAuth 2.0 Resource.
  3. Laat op het tabblad OpenID Connect Client Default resource 'oidc-web-app' for the application itself geselecteerd.
  4. Voeg de scopes read en write toe onder de standaardresource.

Configureer scopes onder de standaardresource in een OpenID Connect-client

Definieer op het tabblad OAuth 2.0 Resource dezelfde scopes read en write die door de API worden aangeboden.

Configureer API-scopes in dezelfde OpenID Connect-applicatieregistratie

Resource en scopes

Een API kan in plaats daarvan afzonderlijk worden geregistreerd als een OAuth 2.0-resource. In dit voorbeeld roept de client oidc-web-app een afzonderlijke Orders API aan met de resourcenaam orders-api.

Op het tabblad OpenID Connect Client van de client:

  1. Schakel Default resource 'oidc-web-app' for the application itself uit, omdat deze client niet als eigen API fungeert.
  2. Voeg de resource orders-api toe.
  3. Voeg de scopes read en write toe onder die resource.

De volledige scopewaarden die door de client worden aangevraagd, zijn orders-api:read en orders-api:write.

Configureer een OpenID Connect-client om scopes van een afzonderlijke API aan te vragen

Definieer read en write op het tabblad OAuth 2.0 Resource in de applicatieregistratie van de Orders API.

Configureer scopes op een afzonderlijke OAuth 2.0 API-resource

Scopes die door een client worden aangevraagd, worden gevalideerd aan de hand van de scopes die op de API zijn geconfigureerd. Als de client en API in dezelfde applicatieregistratie staan, worden scopes onder de standaardresource van de client automatisch aan de resource toegevoegd.

Standaard is de client-ID de audience van zowel het ID-token als het toegangstoken. Geconfigureerde resourcescopes voegen API-audiences toe aan het toegangstoken, en één toegangstoken kan voor meerdere API-resources zijn bedoeld.

Scopes en claims

OpenID Connect-scopes worden geconfigureerd op het tabblad OpenID Connect Client. De standaardscopes offline_access, profile, email, address en phone kunnen worden gewijzigd of verwijderd. Voor elke scope bepaalt Voluntary claims welke claims worden uitgegeven wanneer de client die scope aanvraagt.

Configureer OpenID Connect-scopes en vrijwillige claims

Schakel Show advanced in om Issue claims te configureren. Voeg een specifieke claim toe of voeg * toe om alle beschikbare claims in het toegangstoken uit te geven. Laat Include in ID token uitgeschakeld voor *. Anders wordt elke beschikbare claim naar het ID-token gekopieerd, waardoor het buitensporig groot kan worden en problemen kan veroorzaken in flows waarin het ID-token tijdens afmelding wordt verzonden.

Geef alle beschikbare claims uit zonder ze allemaal in het ID-token op te nemen

U kunt ook een claim toevoegen aan Voluntary claims van een scope en die scope vanuit de applicatie aanvragen. Afzonderlijke claims kunnen in het ID-token worden opgenomen wanneer de applicatie ze daar nodig heeft. Claims kunnen ook worden gewijzigd met claimtransformaties en claimtaken.

Tokenlevensduur

Klik op Change application en schakel Show advanced in om de levensduur van de autorisatiecode, het ID-token, het toegangstoken en het refresh token te configureren.

Configureer OpenID Connect-tokenlevensduren

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

Multi-factor authenticatie (MFA) vereisen

Een OpenID Connect-client kan MFA vereisen door urn:foxids:mfa op te nemen in de parameter acr_values. Dit kan worden gecombineerd met specifiekere waarden zoals urn:foxids:link. Zie MFA aanvragen vanuit applicaties.

De parameter acr_values kan worden ingesteld in de gebeurtenis OnRedirectToIdentityProvider in Startup.cs:

options.Events.OnRedirectToIdentityProvider = (context) =>
{
    context.ProtocolMessage.AcrValues = "urn:foxids:mfa";
    return Task.FromResult(string.Empty);
};

Zie AspNetCoreOidcAuthorizationCodeSample en de bijbehorende Startup.cs-configuratie.

Handleidingen