CRM 2016, OAuth and OData API



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

在对此进行调查后,我似乎需要使用 OAuth 进行身份验证,这反过来又需要安装 AD 联合身份验证服务。

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

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

如果您的桌面应用程序基于 .NET 框架构建,并且与 CRM 服务器在同一本地网络中运行,则可以改用 XRM 工具 SDK。

https://learn.microsoft.com/en-us/previous-versions/dynamicscrm-2016/developers-guide/dn689057%28v%3dcrm.8%29

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

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

是的,这是使其与CRM内部部署配合使用的方法。

您必须安装和配置 ADFS(根据文档,ADFS 3.0 是支持的最新版本(。设置完所有内容后,整个过程与使用 AAD 联机执行时的过程非常相似:

  1. 注册申请

Add-AdfsClient -ClientId <CLIENT_ID> -Name <APP_NAME> -RedirectUri <REDIRECT_URI>

  1. >向 CRM 授予应用程序权限

Grant-AdfsApplicationPermission -ClientRoleIdentifier <CLIENT_ID> -ServerRoleIdentifier <CRM_URI>

  1. 使用授权代码授予进行连接

授权代码是 ADFS 3.0 中实现的唯一流(这就是我之前提到它的原因(,所以不要像我:(那样浪费 4 到 5 个小时来尝试使用Implicit。ADFS 4.0 实现了它(以及Client CredentialResource Owner Password Credentials但理论上不受支持(尽管我已经看到它可以工作(。

正如您所说,该过程没有很好的文档记录,但您会在论坛或一些博客文章中找到一些对您有所帮助的问题。我发现这个非常有帮助,即使与动态无关。

最新更新