Dynamics crm CRM 2016、OAuth和OData API

Dynamics crm CRM 2016、OAuth和OData API,dynamics-crm,dynamics-crm-2016,Dynamics Crm,Dynamics Crm 2016,我有一个使用Active Directory的内部CRM 2016系统,当我尝试使用网络凭据从桌面应用程序访问OData API时,会收到一条未经授权的消息 在研究这一点之后,我似乎需要使用OAuth进行身份验证,而OAuth又需要安装AD Federation服务 在走这条路之前,我想知道这是否是正确的方法 关于如何使用CRM online/Azure广告实现这一点,我已经找到了很多例子,但对于2016年的内部部署来说,这些例子并不多。是的,这是让内部部署CRM发挥作用的方法 您必须安装和配置

我有一个使用Active Directory的内部CRM 2016系统,当我尝试使用网络凭据从桌面应用程序访问OData API时,会收到一条未经授权的消息

在研究这一点之后,我似乎需要使用OAuth进行身份验证,而OAuth又需要安装AD Federation服务

在走这条路之前,我想知道这是否是正确的方法


关于如何使用CRM online/Azure广告实现这一点,我已经找到了很多例子,但对于2016年的内部部署来说,这些例子并不多。

是的,这是让内部部署CRM发挥作用的方法

您必须安装和配置ADFS(根据支持的最新版本ADFS 3.0)。一旦一切就绪,整个过程与您使用AAD在线操作时非常相似:

  • 添加AdfsClient-ClientId-Name
    
    授予AdfsApplicationPermission-ClientRoleIdentifier-ServerRoleIdentifier

  • 使用连接
  • 授权代码是ADFS 3.0中实现的唯一流程(这就是我之前提到它的原因),所以不要像我那样浪费4到5个小时尝试使用隐式(.ADFS 4.0实现了它(以及客户端凭据资源所有者密码凭据),但在理论上不受支持(尽管我看到它在工作)


    正如您所说,该过程没有很好的文档记录,但您会在论坛或博客上发现一些问题,这些问题将对您有所帮助。我发现其中一个问题非常有用,尽管它与动力学无关。

    如果您的桌面应用程序构建在.NET framework上,并且与CRM服务器在同一本地网络中运行,那么您可以使用XRM Tooling SDK

    此SDK允许您使用配置文件中的连接字符串创建CrmServiceClient对象。此对象实现IOrganization接口,这意味着它具有可用于CRM的CRUD方法

    CrmServiceClient service = new CrmServiceClient(ConfigurationManager.ConnectionStrings["mycrmconnstr"].ConnectionString);
    

    1.您的桌面应用程序是否构建在.NET framework上?您好,Federico。我已成功注册客户端,检索访问令牌并授予根CRM URL的权限。但是,当我访问OData API时,我仍然收到“未经授权的”即使在将访问令牌添加到授权标头时也会出错。我可以检查的唯一不同的选项是CRM中的OAuthClaimsSetting。您是否检查了该响应的标头?您应该在那里获得授权url,与您从HTTP/1.1 401 Unauthorized WWW Authenticate:Bearer author获取令牌时使用的相同吗uri=uri,Params=string