我正在与Dynamics 365集成并遵循Web API Sample (C#)。在这种情况下,我想了解如何处理示例中的两个问题。
首先,该示例使用了Microsoft.IdentityModel.Clients.ActiveDirectory
包的旧版本,这说明这是因为:
此示例取决于传递用户凭据的能力而无需单独的Azure登录对话框,该对话框在该库的3.x版本中不可用。
第二,该示例使用来自Microsoft的此硬编码的clientId:
// Azure Active Directory registered app clientid for Microsoft samples
string clientId = "51f81489-12ee-4a9e-aaae-a2591f45987d";
鉴于我正在使用Office365帐户,而根本看不到Azure如何适应情况,在没有上述问题的情况下与Dynamics365实现连接的最佳方法是什么?
答案 0 :(得分:1)
使用C#进行Dynamics 365扩展的快速方法是使用SDK,通过NuGet(XrmTooling)可以使用此方法,您可以使用connection string代替Azure AD提供的客户端ID和密钥,这是使用WhoAmIRequest
的代码示例ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
var urlMask = "AuthType=Office365;Username={1}; Password={2};Url={0};RequireNewInstance=True";
var fullUrl = string.Format(urlMask, url, user, pass);
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);