使用 Angular 2 (TypeScript) 验证和查询 Dynamics CRM Web API
Authenticate and query the Dynamics CRM Web API using Angular 2 (TypeScript)
如何在使用 Angular 2 (TypeScript) 构建的 SPA 中对 Dynamics CRM Web API 进行身份验证和查询?
迄今为止的研究表明:
- Dynamics CRM(2016 或 365 版)实例必须在 Azure 中注册为应用程序。
- 用户可以通过 Azure AD 使用 Azure 注册的应用程序进行身份验证。 Azure 有一个名为 ADAL 的客户端身份验证库,用 JavaScript.
编写
到目前为止,我的尝试涉及克隆各种 Angular 2 个使用 ADAL 构建的存储库,例如 this one, and editing their configuration files to point towards my Azure application. These attempts have all resulted in 401 (Unauthorized) cross-domain
errors which is detailed in my 。
在 this JavaScript Microsoft 演练中使用相同的配置(例如 cliendId
)成功。
此 Access-Control-Allow-Origin 问题更多地与服务器端有关。使用 Angular 1 或 Angular 2.
进行开发并不重要
您可以确认此问题手动发送选项请求以验证您的域是否被允许请求。例如,我们可以使用以下请求检查是否允许来自 http://localhost:3000
的 AJAX 请求:
OPTIONS: https://xxxx.crm.dynamics.com/api/data/v8.0/accounts
Authorization: Bearer {accessToken}
Origin: http://localhost:3000
Host: xxxx.crm.dynamics.com
Access-Control-Request-Headers: authorization
Access-Control-Request-Method: GET
如果域被允许,它会 return 如下响应(参考 Access-Control-Allow-Origin):
要解决这个问题,您需要检查服务器是否支持CORS。如果不允许,您可以创建一个网络 API 作为解决方法的代理。
Fei Xue 提供的代码示例发布 here on GitHub 已证明可以成功地使用 Azure 中托管的 Dynamics CRM 应用程序进行身份验证并查询 Web API。
我使用过的类似代码示例导致 401 Unauthorized
HTTP 错误。为什么此样本有效而其他样本无效的原因目前仍未得到解答。
如何在使用 Angular 2 (TypeScript) 构建的 SPA 中对 Dynamics CRM Web API 进行身份验证和查询?
迄今为止的研究表明:
- Dynamics CRM(2016 或 365 版)实例必须在 Azure 中注册为应用程序。
- 用户可以通过 Azure AD 使用 Azure 注册的应用程序进行身份验证。 Azure 有一个名为 ADAL 的客户端身份验证库,用 JavaScript. 编写
到目前为止,我的尝试涉及克隆各种 Angular 2 个使用 ADAL 构建的存储库,例如 this one, and editing their configuration files to point towards my Azure application. These attempts have all resulted in 401 (Unauthorized) cross-domain
errors which is detailed in my
在 this JavaScript Microsoft 演练中使用相同的配置(例如 cliendId
)成功。
此 Access-Control-Allow-Origin 问题更多地与服务器端有关。使用 Angular 1 或 Angular 2.
进行开发并不重要您可以确认此问题手动发送选项请求以验证您的域是否被允许请求。例如,我们可以使用以下请求检查是否允许来自 http://localhost:3000
的 AJAX 请求:
OPTIONS: https://xxxx.crm.dynamics.com/api/data/v8.0/accounts
Authorization: Bearer {accessToken}
Origin: http://localhost:3000
Host: xxxx.crm.dynamics.com
Access-Control-Request-Headers: authorization
Access-Control-Request-Method: GET
如果域被允许,它会 return 如下响应(参考 Access-Control-Allow-Origin):
要解决这个问题,您需要检查服务器是否支持CORS。如果不允许,您可以创建一个网络 API 作为解决方法的代理。
Fei Xue 提供的代码示例发布 here on GitHub 已证明可以成功地使用 Azure 中托管的 Dynamics CRM 应用程序进行身份验证并查询 Web API。
我使用过的类似代码示例导致 401 Unauthorized
HTTP 错误。为什么此样本有效而其他样本无效的原因目前仍未得到解答。