我正致力于与Dynamic365集成,并遵循Web示例(C#)。虽然这是可行的,但我想了解如何处理这个示例有两个问题。
首先,示例使用了Microsoft.IdentityModel.Clients.ActiveDirectory包的旧版本,并解释说这是因为:
这个示例依赖于在没有单独的Azure登录对话框的情况下传递用户凭据的能力,这个对话框在这个库的3.x版本中是不可用的。
其次,示例使用了来自微软的硬编码clientId:
// Azure Active Directory registered app clientid for Microsoft samples
string clientId = "51f81489-12ee-4a9e-aaae-a2591f45987d";考虑到我使用的是Office365帐户,而且我根本看不出Azure是如何融入到图片中的,那么在没有上述问题的情况下,实现与Dynamics365连接的最佳方法是什么呢?
发布于 2019-07-12 04:32:14
使用C#使用Dynamics365扩展的一种快速方法是使用SDK,这可以在通过NuGet (XrmTooling)中获得--通过这种方式,您可以使用授权类型ClientSecret使用带有客户端和秘钥的连接串,下面是使用WhoAmIRequest的代码示例。这需要使用应用程序用户以下是如何做这件事。
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
var urlMask = "RequireNewInstance=True;SkipDiscovery=True;AuthType=ClientSecret;LoginPrompt=Never;ClientSecret={0};ClientId={1};Url={2};AppId=51f81489-12ee-4a9e-aaae-a2591f45987d;RedirectUri=app://58145b91-0c36-4500-8554-080854f2ac97/";
var fullUrl = string.Format(urlMask, clientSecret, clientId, d365Url);
var conn = new CrmServiceClient(fullUrl);
var _orgService = conn.OrganizationWebProxyClient ?? (IOrganizationService)conn.OrganizationServiceProxy;
WhoAmIRequest req = new WhoAmIResquest();
WhoAmIResponse resp = _orgService.Execute(req) as WhoAmIResponse;
Console.Write(resp.UserId);https://stackoverflow.com/questions/56441999
复制相似问题