OpenID is een authenticatiemethode dat kan worden gebruikt voor andere API’s. Andere veelvoorkomende zijn x-api-key of client secret/Client ID.
- Client Secret: Een client secret is een vertrouwelijke waarde die wordt gebruikt om de identiteit van een client (bijvoorbeeld een applicatie) te verifiëren bij een autorisatieserver tijdens het OAuth-protocol. OAuth is een veelgebruikt protocol voor autorisatie en het delen van beveiligde bronnen tussen applicaties. Een client secret fungeert als een gedeeld geheim tussen de client en de autorisatieserver, waardoor de server kan controleren of de aanvragen afkomstig zijn van een vertrouwde client. Het client secret wordt gebruikt in combinatie met een client-ID om de client te identificeren en te authenticeren bij de autorisatieserver.
- OpenID: OpenID is een open standaard voor authenticatie die gebruikt kan worden om gebruikers te verifiëren en hun identiteit te bevestigen. Met behulp van OpenID kunnen gebruikers inloggen bij meerdere websites en applicaties met één set inloggegevens, in plaats van aparte gebruikersnamen en wachtwoorden te moeten onthouden voor elke site. OpenID biedt een veilige manier om de identiteit van gebruikers te verifiëren door gebruik te maken van verschillende identiteitsproviders.
In een OpenID-scenario treedt de OpenID-provider op als een vertrouwde derde partij die de identiteit van een gebruiker verifieert en informatie verstrekt aan de ontvangende partij (bijvoorbeeld een website of applicatie). De identiteitsprovider kan bijvoorbeeld informatie verstrekken over de gebruiker, zoals de gebruikersnaam, het e-mailadres of andere optionele profielgegevens. Dit stelt de ontvangende partij in staat om de gebruiker te identificeren en gepaste toegangscontroles toe te passen.
Kort samengevat is een client secret een vertrouwelijke waarde die wordt gebruikt in het OAuth-protocol om de client te authenticeren bij een autorisatieserver, terwijl OpenID een standaard is voor gebruikersauthenticatie die gebruikmaakt van een identiteitsprovider om de identiteit van een gebruiker te verifiëren en informatie te verstrekken aan ontvangende partijen.
Voorbeeld aan de hand van een Azure koppeling
1. Instellen Microsoft AD
- Ga naar portal.azure.com en login
- Ga naar App registrations
- Klik op ‘New registration’

- Vul een naam in, en vink de optie aan die je wilt voor accounttypes
- Bij Redirect URI vul je deze url in: https://backend.flow.simplexconnect.nl/api/auth/callback en je kiest voor Web

- Klik op Register om de app op te slaan.
- Je komt nu in de eigenschappen van de app, ga naar tabblad ‘Certificates & secrets’
- Zorg dat je op tabblad’Client secrets’ zit, en en klik op ‘New client secret’

- Geef een omschrijving en geef aan wanneer deze verloopt (na verlopen moet je de OpenID koppeling opnieuw opzetten, overleg dit met je IT specialist)

- Kopieer de value van de secret (niet het ID, die kan je altijd terughalen, de value kan je maar 1x zien) en noteer deze ergens in een tijdelijk bestand

- Ga nu naar het tabblad ‘API permissions’

- Geef hier de permissions die je wilt gebruiken. Voor het uitlezen van gebruikers kies je bijvoorbeeld voor Microsoft Graph, Application permissions, en dan de permissions:
- User.Read.All
- User.ReadWrite.All
- User.ManageIdentities.All
- Directory.Read.All
- Directory.ReadWrite.All
- Directory.Write.Restricted



- Klik vervolgens op ‘Add permissions’ om deze toe te voegen.
- Je moet deze nu ook Admin consent geven om ze te gebruiken, doe dit met de knop ‘Grant admin consent for MSFT’

- Ga nu naar tabblad ‘Overview’, en noteer de Application (client) ID in, en de Directory (tenant) ID in een tijdelijk bestand

2. Koppelen in Flow
2.1 Koppelen via OpenID Connect
- Open Flow
- Ga naar tabblad Wachtwoorden & Tokens
- Klik op ‘Token Aanmaken’
- Kies ‘OpenID token’
- Vul een naam in
- Vul bij Client ID de Application (client) ID in die je eerder hebt genoteerd
- Vul bij Client Secret de secret in die je eerder hebt genoteerd
- Vul bij URL de volgende url in: https://login.microsoftonline.com/{tenant}/v2.0
- Vervang {tenant} door de Directory (tenant) ID die je eerder hebt genoteerd

- Plak bij Scope (optioneel) de volgende waarde en druk dan op enter om deze toe te voegen
- Wat je hiermee doet is ervoor zorgen dat de permissions die je in Azure hebt toegevoegd automatisch toegevoegd worden aan Flow
- Wijzig je in de Azure App Registration een API permission, dan moet je de OpenID koppeling opnieuw opzetten (verwijderen en opnieuw toevoegen).
- Klik op ‘Starten’ om de connectie op te zetten. Je wordt doorgestuurd naar Microsoft, waar je kunt inloggen. Geef toestemming voor de hele organisatie. Je wordt nu teruggestuurd naar Simplex Flow, waar je een nieuwe regel in de OpenID Connect Beheer ziet staan.
2.2 Koppelen via handmatige inlog (Andere methode, geen OpenID)
- Ga naar Flow
- Ga naar Wachtwoorden & Tokens
- Voeg de 3 opgeslagen waardes toe:
- Naam: AzureAppClientId, Waarde: de Application (client) ID in die je eerder hebt genoteerd
- Naam: AzureAppClientSecret, Waarde: de secret in die je eerder hebt genoteerd
- Naam: AzureAppTenantId, Waarde: de Directory (tenant) ID die je eerder hebt genoteerd
- Maak een Flow met een statische start als begin.
- Voeg een nieuwe Http actie toe, met de volgende waardes:
- Methode: POST
- Output Veldnaam: auth
- Body:
{
“client_id”: “${AzureAppClientId}”,
“scope”: “https://graph.microsoft.com/.default”,
“client_secret”: “${AzureAppClientSecret}”,
“grant_type”: “client_credentials”
}
- Vink het veld x-www-form-urlencoded aan

- Je kunt nu verder de graph api aanroepen, door gebruik te maken van de volgende header in volgende Http acties.
- Headers:
{
“Authorization”: “Bearer {{auth.access_token}}”
}
- Headers:
- Voorbeeld voor ophalen alle users:

3. Gebruiken in Flow met OpenId
- Maak een nieuwe Flow aan, en begin met een Statische start
- Voeg een nieuwe actie toe: Oauth
- Kies de OpenID Connect regel die je zojuist hebt gekoppeld, en vul als veldnaam bijvoorbeeld ‘login’ in
- Als je nu de flow test/uitvoert komen in het veld ‘login’ 2 velden te staan:
- token à dit is het token wat je kan gebruiken in de volgende aanroepen om data op te halen
- expires_at à dit veld geeft aan tot wanneer het token geldig is (in UTC)