[BC20] Oauth2 authenticatie gebruiken op webservices

Als je webservices met OAUTH2 wilt gebruiken (bijvoorbeeld omdat Microsoft de andere opties niet meer aanraadt) kun je het volgende doen:

In Azure AD maak je een nieuwe appregistratie aan.  Dat kun je door zoals beschreven in https://www.poelgeest.org/joomla/index.php/tips-a-trucs/127-bc20-gebruik-azure-ad-openid-om-te-authenticeren.html

Daarna ga je naar je app registration:

  • Klik op authentication
  • zet bij Mobile and desktop applications het vinkje bij https://login.microsoftonline.com/common/oauth2/nativeclient aan
  • Klik op save
  • Ga naar Certificates & Secrets en klik op + New Client Secret
  • Kopieer de Value die je krijgt: deze krijg je hierna niet meer te zien
  • Ga naar API permission
  • Klik op +Add a Permission, en voeg de volgende API/Permission Names toe:
    • Dynamics 365 Business Central
      • ReadWrite.All (Application)
      • ReadWrite.All (Application)
      • App_access (Application)
      • ReadWrite.All (Application)
      • ReadWrite.All (Delegated)
      • User_impersonation (Delegated)
    • Microsoft Graph
      • Read (Delegated)
    • Klik op Grant admin consent for <tenant>

 

Op de server moet ook een instelling worden gewijzigd. Bij Valid Audiences moet naast de bestaande audience (wat als het goed is je applicationID is) ook de audience https://api.businesscentral.dynamics.com worden toegevoegd

  • Set-navserverconfiguration -serverinstance <serverinstance> -keyname “ValidAudiences” -keyValue “<huidige waarde>;https://api.businesscentral.dynamics.com”

Daarna kun je als gebruiker al OAUTH2 gebruiken om aan te melden op de API/Webservices.

Wil je Service2Service gebruiken, dan moet je nog het volgende doen:

  • Log in in Business Central
  • Ga naar Azure Active Directory Applications
  • Klik op + New
  • Voer als Client ID je Application ID in
  • Geef als description een duidelijke beschrijving in.
  • Geef de juiste rollen die nodig zijn.
  • Klik op Grant Consent
  • Zet de State op Enabled

Nu kun je ook via S2S verbinding maken. Het tokenrequest moet de volgende keys bevatten:

Key grant_type, value client_credentials
Key client_secret, value <de Value die je hebt gemaakt bij Certificates & Secrets
Key client_id, value application ID
Key scope, value https://api.businesscentral.dynamics.com/.default

Je post dit naar https://login.microsoftonline.com/<tenantID>/oauth2/v2.0/token, waarmee je een token ontvangt. Dit token kun je dan weer gebruiken om een get-request te doen.

Daarmee kun je een token opvragen, en deze kun je dan gebruiken om een get request te doen op de odataURL.