【发布时间】:2016-03-22 17:04:11
【问题描述】:
我正在修改一个内部管理应用程序以连接到我们在线托管的 Dynamics 2016 实例。
根据一些在线教程,我一直在使用 SDK 中的 Microsoft.Xrm.Sdk.Client 中的 OrganizationServiceProxy。
这似乎需要用户名和密码才能连接,效果很好,但我想以某种不需要特定用户帐户详细信息的方式进行连接。我认为我看到的 OAuth 示例不合适,因为没有 UI,也没有实际的人来显示 OAuth 请求。
public class DynamicsHelper
{
private OrganizationServiceProxy service;
public void Connect(string serviceUri, string username, string password)
{
var credentials = new ClientCredentials();
credentials.UserName.UserName = username;
credentials.UserName.Password = password;
var organizationUri = new Uri(serviceUri);
this.service = new OrganizationServiceProxy(organizationUri, null, credentials, null);
}
}
有没有办法连接应用程序令牌或 API 密钥?
【问题讨论】:
-
我从未见过不需要凭据的连接代码,但我会从 SDK 中查看这两个页面:msdn.microsoft.com/en-us/library/gg334502.aspx 和 msdn.microsoft.com/en-us/library/mt595799.aspx
-
第二个并不真正相关 - 正如我所说,这不是网页或任何可以向用户呈现 OAuth 请求的东西。我想最坏的情况是我们必须为管理服务创建一个虚拟用户,尽管这会产生相关成本。
-
如果没有用户,您将无法访问 CRM 中的任何内容;此外,应该至少有一个与用户相关联的角色被视为活动角色。当您创建一个连接到将在单个 Active Directory 中工作的 CRM 的应用程序时,您将不需要在连接字符串中指定密码,因为该应用程序将代表添加到 CRM 的用户之一运行系统。所以,即使在这里,你仍然需要用户。问:你为什么不想拥有他?
-
这是一个自动服务器服务,在后台运行以集成到 Dynamics。通常,我过去创建的这些类型的集成不使用“真实”用户帐户,因为该帐户可能会过期,用户可以离开或更改他们的密码等。通常有一个服务帐户的工具,或者API 密钥或其他一些非人工凭据。如果我需要创建一个完全许可的用户,我可以,这似乎值得确认,因为这不是我必须为任何其他网络服务做的事情。
-
您能找到解决方案吗?我遇到了同样的问题,如果您能够弄清楚并将解决方案作为答案发布,那就太好了!
标签: c# dynamics-crm dynamics-crm-2016