首页 > 解决方案 > 绕过 Dynamics CRM 中的登录

问题描述

我目前正在尝试使用 Web API 查询方法从 Dynamics CRM (Office 365 - E5) 获取数据,例如api.crm.dynamics.com/api/data/v8.2/accounts?$select=accountid,name,new_gl_exp,new_autol_exp

我将把这个 api 包含在外部应用程序中(使用 HTML 和 Javascript 开发)并托管在本地 IIS 中

我已经在 CRM 和 Azure 中完成了基本设置,并在登录后获得了令牌login.microsoft.com

问题

  1. 我们如何在不输入用户名和密码的情况下进行身份验证login.microsoftonline.com

有没有办法绕过这个登录(比如将客户端、信条、客户端秘密 ID 作为参数传递给login.microsoft.com)或任何 REST API?

我们为应用程序使用单独的登录名,因此我们将不得不使用两个登录名

  1. 应用登录
  2. login.microsoft.com对于动态 CRM

标签: dynamics-crmmicrosoft-dynamics

解决方案


Web API 身份验证模式 使用 Web API 时,可以通过三种不同的方式来管理身份验证。

在 Web 资源中使用 JavaScript 当您在 HTML Web 资源、表单脚本或功能区命令中使用带有 JavaScript 的 Web API 时,您不需要包含任何验证代码。在上述每种情况下,用户都已通过应用程序的身份验证,并且身份验证由应用程序管理。

使用本地部署 当您使用 Web API 进行本地部署时,您必须包含用户的网络凭据。以下示例是一个 C# 函数,它将返回为给定用户的网络凭据配置的 HttpClient:

private HttpClient getNewHttpClient(string userName,string password,string domainName, string webAPIBaseAddress)
{
    HttpClient client = new HttpClient(new HttpClientHandler() { Credentials = new NetworkCredential(userName, password, domainName) });
    client.BaseAddress = new Uri(webAPIBaseAddress);
    client.Timeout = new TimeSpan(0, 2, 0);
    return client;
}

使用 Microsoft Dynamics 365(在线)或面向 Internet 的部署 当您使用适用于 Dynamics 365(在线)的 Web API 或面向 Internet 的本地部署 (IFD) 时,您必须使用 OAuth,如使用连接到 Microsoft Dynamics 365 Web 服务中所述认证。

如果您使用 JavaScript 创建单页应用程序 (SPA),则可以使用 adal.js 库,如使用 OAuth 和跨域资源共享中所述将单页应用程序连接到 Microsoft Dynamics 365。

https://msdn.microsoft.com/en-us/library/mt595798.aspx


推荐阅读