OAuth (Single signon)
Door gebruik te maken van Single Sign-on kunnen gebruikers inloggen in de web applicatie middels hun reguliere domein gebruikersaccount.
Hiervoor ondersteund Universe de oAuth standaard.
Vereiste hiervoor is dat gebruik gemaakt wordt van AzureAD of AD FS 2019 of hoger.
OAuth Implementatie LogisP
De LogisP Universe web-applicatie is een Angular Single Page Application. De “angular-oauth2-oidc” package is geïmplementeerd, zie hier voor meer informatie: https://github.com/manfredsteyer/angular-oauth2-oidc .
Er wordt gebruik gemaakt van een PKCE flow.
AzureAD
Uit te wisselen informatie:
Redirect URL - deze ontvang je van Logis.P. Moet ingevoerd worden bij het aanmaken van de applicatie in AzureAD..
TenantID - Deze wordt tijdens de procedure gegenereerd. Doorgeven aan Logis.P.
ClientID - Deze wordt tijdens de procedure gegenereerd. Doorgeven aan Logis.P.
Configuratie:
In Azure moet er onder Microsoft Entra een Enterprise Application aangemaakt worden. Binnen deze Enterprise Application kunnen er 1 of meerdere redirectURI’s worden geconfigureerd.
Hierdoor kunnen een ontwikkel-, acceptatie- en productieomgeving van dezelfde Enterprise Application gebruik maken.
De Enterprise Application kan middels de volgende stappent aangemaakt worden (let op: Microsoft veranderd regelmatig hoe deze pagina’s er uit zien):
Ga naar Microsoft Entra ID > Manage > Enterprise Applications

Kies ‘New application’:

Kies ‘Create your own application’:

Geef de applicatie een passende naam, bijvoorbeeld “CassControl”, “Universe“ of “LogisP“. Registreer de applicatie met Entra ID integratie:

Kies welke typen accounts gebruik mogen maken van de applicatie (meestal zal het single tenant zijn). Geef bij de Redirect URI aan dat het een Single Page Application betreft. De in te voeren URI zal vanuit LogisP aangeleverd worden:

Ga vervolgens via EntraID > Enterprise Applications naar de nieuw aangemaakte applicatie (in dit voorbeeld 'UniverseTEST'):
Ga naar Manage > Single sign-on en kies ‘Go to application’ bij ‘Configure application properties’:

Ga vervolgens naar Manage > Authentication. Zet het vinkje aan bij ‘ID tokens (used for implicit and hybrid flows)’:

Ga nu naar Manage > Token configuration:

Klik op Add optional claim. Kies hier voor Token type ID en vink UPN aan.

Er zal gevraagd worden om API permissions voor 'Profile' toe te voegen. Bevestig dat.
Deze kun je controleren on 'API permissions':

Na het aanmaken van de applicatie hebben we gegevens uit de Overview nodig:.
Geef de Application (client) ID en de Directory (tenant) ID door aan LogisP.

AD FS
Uit te wisselen informatie:
Redirect URL - deze ontvang je van Logis.P. Moet ingevoerd worden in AD FS.
Provider URL - De ADFS-endpoint. Doorgeven aan Logis.P.
ClientID - Deze wordt tijdens de procedure gegenereerd. Doorgeven aan Logis.P.
Configuratie
Voeg een applicationgroup toe met de juiste naam, bijvoorbeeld Casscontrol of Universe. Binnen de application group voeg je dit toe:
'Native application'. Deze bevat:
Client Id (guid)
Redirect URL
‘Web application’. Deze bevat:
Relying party identifier: zelfde guid als Client Id
Issuance Transform Rules:
LDAP-kenmerk verzenden als claims
Regeltaal:
CODEc:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"] => issue(store = "Active Directory", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn"), query = ";userPrincipalName;{0}", param = c.Value);
Client Permission: All clients: profile
De juiste ADFS response headers moeten worden geconfigureerd:
X-Frame-Options:
Set-AdfsResponseHeaders -SetHeaderName "X-Frame-Options" -SetHeaderValue "allow-from https://adfs.servervandeklant.nl"
Content-Security-Policy: (ten bate van CORS indien nodig, deze regel is de default configuratie)
Set-AdfsResponseHeaders -SetHeaderName "Content-Security-Policy" -SetHeaderValue "Content-Security-Policy: default-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' data:;"
CORS:
Set-AdfsResponseHeaders -EnableCORS $true
Set-AdfsResponseHeaders -CORSTrustedOrigins https://casscontrolurl.klant.nl
X-XSS-Protection:
Set-AdfsResponseHeaders -SetHeaderName "X-XSS-Protection" -SetHeaderValue "<0/1/1; mode=block/1; report=<reporting-uri>>"
Als de configuratie werkt moet er uiteindelijk /universe/auth/oauth worden aangeroepen met een Identitytoken die de UPN van de gebruiker bevat.