Als je gebruik maakt van Business Central 20 of hoger kun je beter Azure AD OpenID gebruiken. De beschrijving kun je hier vinden
Op deze link vind je een handleiding hoe een app aan te maken en te gebruiken voor Dynamics NAV/Business Central. Echter klopt deze niet helemaal meer... Vooral het aanmaken van de app is anders geworden.
Om een app aan te maken doe je het volgende:
Login op https://portal.azure.com, en ga naar Azure Active Directory
Klik op App Registrations Klik op New Registration
Tik bij Name een duidelijke naam in.
Kies bij Supported Account Types voor "Accounts in this organizational directory only"
De Web Redirect URl moet ingevuld worden. Als er geen webclient is, maakt het echter niet uit wat er staat, en zelfs niet of het adres ook echt bestaat. Ik gebruik als adres "https://ditiseenwillekeurigadres.xyz"(1). Als er wel een webclient is, gebruik je uiteraard dat adres, gevolgd door Signin. Dat mag ook gewoon in intern adres zijn, dus https://localhost/<servicenaam>/Signin is ook prima geldig. Als je een RoleTailored Client gebruikt dan moet je https://dynamicsnavwinclient/ er ook bij zetten
Als Public Client Redirect URl gebruik je DynamicsNAV://<adres van de service>
Klik op Register. Je komt nu op een nieuw scherm met daarin een aantal guid's.
Klik op "Expose an API".
De Application ID URl is nu nog leeg.
Klik op Set. Er wordt nu een Application ID URl getoond wat begint met API:// De guid is dezelfde ID als de Application (client) ID.
Verander de tekst in https://<tenantname>/guid. Je mag voor guid ook zelf een (unieke!) waarde gebruiken. Je kunt dan bijvoorbeeld de waarde https://bedrijfsnaam.onmicrosoft.com/0d3ab297-a6c1-492e-8179-b4ed5fe3643e gebruiken of https://bedrijfsnaam.onmicrosoft.com/ditiseentest (2). Deze waarde gaan we later gebruiken.
Je mag ook ook gewoon api://guid kunt gebruiken, dus zonder veranderingen. Je vult dan deze waarde (inclusief api://) in in plaats van de aangepaste waarde)
Bij de API permissions moet je "Grant admin permissions for <bedrijf> aanzetten.
In je eigen (on prem) omgeving ga je naar de instellingen van de service. Het Credential type moet AccessControlService worden. Bij Azure Active Directory moeten twee instellingen worden aangepast
de WS-Federation Login Endpoint:
https://login.microsoftonline.com/bedrijfsnaam.onmicrosoft.com/wsfed?wa=wsignin1.0%26wtrealm=https://bedrijfsnaam.onmicrosoft.com/ditiseentest(2)%26wreply=https://ditiseenwillekeurigadres.xyz(1)/. Eventueel mag het laatste stuk (dus vanaf %26reply) worden weggelaten. Gebruik bij de realm de waarde die je bij de de Application ID URl hebt ingevuld (dus bijvoorbeeld: https://login.microsoftonline.com/bedrijfsnaam.onmicrosoft.com/wsfed?wa=wsignin1.0%26wtrealm=api://guid)
De WS-Federation Metadata Location:
https://login.microsoftonline.com/bedrijfsnaam.onmicrosoft.com/FederationMetadata/2007-06/FederationMetadata.xml.
Zet het vinkje bij Disable Token-Signing Certificate Validation aan.
De (eventuele) Webclient moet ook aangepast worden. In de inetpub\wwwroot\<webclient> directory vind je een navsettings.json bestand. In dit bestand moet het ClientServicesCredentialType op "AccessControlService" staan.
Als je Business Central 20 gebruikt, moet je de regel "UseLegacyACSAuthentication": "true", toevoegen. Deze regel bestaat niet, dus je kunt 'm direct onder de ClientServicesCredentialType zetten. Als je dat niet doet, dan krijg je bij het verbinden via de webclient foutmeldingen in het applicationlog dat het AadApplicationId niet leeg mag zijn.
De (eventuele) RoleTailored Client moet ook aangepast worden. Dat doe je door de ClientUserSettings.config bestanden aan te passen
De key ClientServicesCredentialType moet de value "AccessControlService" krijgen
De key ACSUri moet dezelfde waarde krijgen als de WS-Federation Metadata Location van de service. Alleen is de %26wreply= gedeelte hier wel verplicht, en daar kun je https://dynamicsnavwinclient/ voor gebruiken.
Als je de webclient op een aparte server hebt draaien waar geen NAV server op staat moet je je delegation ook nog goed instellen. Daarvoor kun je terecht bij https://docs.microsoft.com/en-us/dynamics365/business-central/dev-itpro/deployment/configure-delegation-web-server. Een ding wat daarin niet wordt genoemd is de waarde DNSIdentity in het NAVsettings.json bestand. Die is standaard leeg, en die kun je je aanpassen, zodat daarin de DNSnaam staat die ook in je certificaat wordt gebruikt.
Als je dit hebt ingesteld, zou het geen probleem moeten zijn om met je Azure Active Directory account aan te melden binnen Business Central - mits de gebruiker uiteraard is aangemaakt in Business Central...
bron: https://docs.microsoft.com/en-us/dynamics-nav/authenticating-users-with-azure-active-directory
bron: https://docs.microsoft.com/en-us/dynamics365/business-central/dev-itpro/deployment/configure-delegation-web-server
bron: https://docs.microsoft.com/en-us/dynamics365/business-central/dev-itpro/administration/authenticating-users-with-azure-active-directory