/
Program.cs
58 lines (54 loc) · 2.14 KB
/
Program.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
using Microsoft.Crm.Sdk.Messages;
using Microsoft.Xrm.Tooling.Connector;
using System;
using System.Security.Cryptography.X509Certificates;
using static System.Configuration.ConfigurationManager;
namespace msdyn365_cert_auth
{
class Program
{
static void Main(string[] args)
{
// Environment variables
var thumbPrint = AppSettings["CertificateThumbPrint"];
var crmUrl = new Uri(AppSettings["DynamicsUrl"]);
var clientId = AppSettings["ClientId"];
var redirectUri = new Uri(AppSettings["RedirectUri"]);
// Retrieve certificate from personal store
var myCertStore = new X509Store(StoreName.My, StoreLocation.CurrentUser);
myCertStore.Open(OpenFlags.ReadOnly);
var cert = myCertStore.Certificates.Find(X509FindType.FindByThumbprint, thumbPrint, false)[0];
myCertStore.Close();
CrmServiceClient client;
if (cert == null)
{
// Authenticate with physical certificate
client = new CrmServiceClient(
certificate: cert,
certificateStoreName: new StoreName(), // any value will do
certificateThumbPrint: null,
instanceUrl: crmUrl,
useUniqueInstance: true,
orgDetail: null,
clientId: clientId,
redirectUri: redirectUri,
tokenCachePath: "c:\\cache");
}
else
{
// Authenticate with store certificate
client = new CrmServiceClient(
certificate: null,
certificateStoreName: StoreName.My,
certificateThumbPrint: thumbPrint,
instanceUrl: crmUrl,
useUniqueInstance: true,
orgDetail: null,
clientId: clientId,
redirectUri: redirectUri,
tokenCachePath: "c:\\cache");
}
var result = client.Execute(new WhoAmIRequest());
}
}
}