Som en fortsättning på mitt tidigare blogginlägg "Connect MFA Enabled D365 CDS Programamatically", där vi anslöt till D365 med ClientSecret programmatiskt, ska vi lära oss hur vi kan använda certifikat för samma sak. Certifikatbaserad autentisering är ett säkrare sätt att uppnå s2s (server-till-server) autentisering och upprätta anslutningen till D365 Dataverse/CDS.
Så låt oss börja.
Steg1 : Konfigurera certifikat
Vi behöver ett självsignerat eller CA-utfärdat certifikat för att fortsätta. Du kan antingen generera certifikaten enligt nedan med Azure Key Vault eller använda det tidigare genererade certifikatet. Jag kommer att lista ned steg för att generera samma sak med Azure Key Vault (självsignerat).
- Anslut till Azure Admin Portal
Logga in på https://portal.azure.com
Klicka på Key Vaults
Klicka på Skapa
Du kan antingen använda en befintlig resursgrupp eller skapa en ny.
Följ stegen och skapa ett nytt nyckelvalv.
- Generera certifikat
Klicka på Certifikat under Inställningar i detta nyskapade nyckelvalv
Klicka på Generera/Importera. (Generera är att skapa ett nytt certifikat, medan Importera är att importera ett tidigare skapat certifikat)
När certifikatet är aktiverat öppnar du certifikatet och laddar ner det i båda formaten (CER- och PFX/PER-format).
Steg 2: Få program-ID och ladda upp certifikat med Azure Active Directory
- Anslut till Azure Admin Portal
Logga in på https://portal.azure.com
Klicka på Azure Admin Directory
Klicka på App Registrations
Klicka på Ny registrering
- Ange ett lämpligt namn på din app som kommer att ansluta till D365 CDS programmatiskt. Klicka på Registrera.
Kopiera genererat applikations-ID
- Klicka nu på Certifikat och hemligheter för din app.
Klicka på "Ladda upp certifikat" och ladda upp CER-certifikatet som du laddade ner från steg nyckelvalv.
Kopiera Thumbprint Value när det har lagts till.
Steg 3: Ladda upp certifikat på servern eller i ditt lokala certifikatarkiv
Importera det ovan genererade certifikatet från steg 1 till din server eller ditt lokala certifikatarkiv. Använd certifikat i PFX/PEM-format här. Om du använder ett tidigare genererat certifikat exporterar du det certifikatet utan "Private Key" och importerar det sedan till ditt arkiv.
Steg 4 : Lägg till programanvändare i D365 CDS-miljön
- Logga in i D365 CDS-miljön
- Gå till Inställningar -> Säkerhet -> Användare
- Ändra vyn till "Användare av program" och klicka på Ny. Se till att formuläret är ett formulär för ansökningsanvändare.
- Lägg till uppgifter och applikations-ID som genererades i steg 2 ovan.
Steg 5 : Lägg till anslutningssträngen i din c#-kod på följande sätt:
Format
String connectionString = “AuthType=Certificate; url=<your organization URL>; AppID=<your application id>; Thumbprint=<certificate thumbprint>”;
Exempel
string connectionString = “AuthType=Certificate; url=https://cdsinctrial.crm.dynamics.com/main.aspx; AppID=40c95818-9306-437a-85c1-0db96ba277ae; Thumbprint=416E548D592BD93B2578TE80D72BCA9E055390BB”;
Kodutdrag: (Ändra värdena enligt de värden som din organisation har ställt in)
Vanligt fel:
- Fel: Microsoft.Powerplatform.Cds.Client.Utils.CdsConnectionException: Det gick inte att ansluta till Common Data Service -> System.Exception: Det gick inte att hitta eller läsa certifikat från godkänt tumavtryck. -> System.Exception: Det gick inte att hitta certifikat med tumavtryck: XXXXXXXXXXXXXXXXXXXXXX.
- Lösning: Kontrollera om du har importerat certifikatet till ditt lokala certifikatarkiv.
Referenser:
Jag hoppas att detta hjälper dig att nå ditt mål. Dela gärna med dig av dina kommentarer eller låt oss veta om du har några frågor.