微软动态CRM专家罗勇 ,回复337或者20190521可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me.

配置Dynamics 365 & PowerApps 支持OAuth 2 Client Credentials认证参考我前面的博文:Dynamics 365 Online通过OAuth 2 Client Credential授权(Server-to-Server Authentication)后调用Web API 。编程方法可以参考这篇博文,为了方便不同的编程语言明白如何通过这个认证后调用调用Dynamics 365 & PowerApps的Web API,我这里用Fiddler来模拟。

首先是认证,请参考 Client Credentials ,值得注意的是,请求body中需要增加传递参数resource,否则后续调用Web API会返回401(未认证) .我这里直接上Fiddler请求截图如下:

简单解释下上面请求。是发起POST请求,请求的URL是: https://login.windows.net/{{tenantid}}/oauth2/token ,请求URL中的 {{tenantid}} 请替换为Azure Tenant的Id。

请求的Body是 grant_type=client_credentials&client_id={{clientid}}&client_secret={{clientsecret}}&resource={{resourceurl}} ,请将 {{clientid}} 替换为注册App时候生成的Application (client) ID,{{clientsecret}}替换为注册App时候生成的Client Secret,{{resourceurl}}请换成你要访问的Dynamics 365 或者PowerApps的URL,比如 https://CRM244271.crm.dynamics.com/ ,注意用要urlencode一下,若用javascript的话,就用 encodeURIComponent 函数对这个URL进行处理,如下图所示。

可以看到截图,请求成功,请求返回内容如下:

我格式化一下返回内容如下:

{    "token_type":"Bearer",    "expires_in":"3600",    "ext_expires_in":"3600",    "expires_on":"1558408667",    "not_before":"1558404767",    "resource":"https://CRM244271.crm.dynamics.com/",    "access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IkhCeGw5bUFlNmd4YXZDa2NvT1UyVEhzRE5hMCIsImtpZCI6IkhCeGw5bUFlNmd4YXZDa2NvT1UyVEhzRE5hMCJ9.eyJhdWQiOiJodHRwczovL0NSTTI0NDI3MS5jcm0uZHluYW1pY3MuY29tLyIsImlzcyI6Imh0dHBzOi8vc3RzLndpbmRvd3MubmV0L2IxOGQzYzZmLTM4YzYtNDkyZC1hMDcwLThiNzUyZjA5ZjBkZS8iLCJpYXQiOjE1NTg0MDQ3NjcsIm5iZiI6MTU1ODQwNDc2NywiZXhwIjoxNTU4NDA4NjY3LCJhaW8iOiI0MlpnWURDVHVDLzRKK1RvamJoOW04NVZILzd3R0FBPSIsImFwcGlkIjoiZjUwMTM0NmMtNGQzMi00MWI5LWIyOTAtMzNmN2JlYTRlYzZhIiwiYXBwaWRhY3IiOiIxIiwiaWRwIjoiaHR0cHM6Ly9zdHMud2luZG93cy5uZXQvYjE4ZDNjNmYtMzhjNi00OTJkLWEwNzAtOGI3NTJmMDlmMGRlLyIsIm9pZCI6IjU0YWNmNzczLWNhNDAtNGY0Zi04ZTBlLTc1ZjM3M2M5OTU3NiIsInN1YiI6IjU0YWNmNzczLWNhNDAtNGY0Zi04ZTBlLTc1ZjM3M2M5OTU3NiIsInRpZCI6ImIxOGQzYzZmLTM4YzYtNDkyZC1hMDcwLThiNzUyZjA5ZjBkZSIsInV0aSI6ImNaY25nRUJKbEUyYWV2X1pUUTBJQUEiLCJ2ZXIiOiIxLjAifQ.EGK7DMpm_L9TnTREdw5EVhB6WAPNxGmhhodHm7mJsVtmabrL4UXrupQV8Dy6bq6reCGU3v2uA3mtbJ6HXkSbdL7hbEXnDQ_Iw0TD5a-pnmqz7I27_5D40Ia0ctQJPioo7o5bDhtkn3ppC6a6fXssWglUOwtiu-rZH9Ui_CMkz5azq_SIb4o5rbMrApAbxSsv0F60MIKO3s5zUJS7HSYAk4p6LYtrVLDcAQXEHHGHr-7FjvOn-H42Olg1Ro_EudWgo1zLBLrBJ7lMxK2D48SYvQmPYeueJDmVOCpUWdBubF52oSL6y6rVaFzkegNOJSXPE6m2VGDCe3_gNrMke8_jSg"}

重要的内容是access_token的值,还有就是expires_in,可以知道这个access token获取后3600秒也就是一个小时后过期。

拿到access token后就可以请求了,我发起一个GET请求如下:

请求的URL根据你的操作而定,一般是类似 https://CRM244271.crm.dynamics.com/api/data/v9.1/ 开头

值得注意的是要在请求头中添加认证信息,这里是类似:Authorization: Bearer {{access token}} 。

可以看到调用成功,返回了数据:

转载于:https://www.cnblogs.com/luoyong0201/p/Dynamics_365_OAuth2_Client_Credentials_Fiddler_Simulate.html

利用Fiddler模拟通过Dynamics 365的OAuth 2 Client Credentials认证后调用Web API相关推荐

  1. 【转】!Dynamics 365 Online通过OAuth 2 Client Credential授权(Server-to-Server Authentication)后调用Web API

    微软动态CRM专家罗勇 ,回复332或者20190505可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me! 本文很多内容来自 John Towgood 撰写的Dynamic ...

  2. Dynamics 365本地部署版本配置OAuth 2 Password Grant以调用Web API

    微软动态CRM专家罗勇 ,回复330或者20190504可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me! 根据官方建议,不要再使用Dynamics 365 Custome ...

  3. Dynamics CRM中跨域调用Web API 2

    关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复224或者20160611可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong. ...

  4. 在ASP.NET中基于Owin OAuth使用Client Credentials Grant授权发放Token

    OAuth真是一个复杂的东东,即使你把OAuth规范倒背如流,在具体实现时也会无从下手.因此,Microsoft.Owin.Security.OAuth应运而生(它的实现代码在Katana项目中),帮 ...

  5. 利用Fiddler模拟POST请求

    写后台服务器的时候,常用到模拟请求.一般GET请求可以直接利用浏览器进行模拟. 但post请求则一般不行(FireFox可以) 我们常用的抓包工具Fiddler就可以模拟post请求 操作流程如下: ...

  6. Dynamics 365 JS调WEB API 报missing privilege ae5c41f0-e823-4cb9-b25a-8ef020201973

    JS中调用web api报missing privilege ae5c41f0-e823-4cb9-b25a-8ef020201973的权限问题,是你的调用请求头部加了"MSCRMCalle ...

  7. 使用经过oauth验证后的github API,避免调用频次超标的问题

    今天我打算开发一个小工具,使用github Restful API获取我一个仓库里的所有issues: https://api.github.com/repos/i042416/KnowlegeRep ...

  8. ASP.NET Web API与Owin OAuth:使用Access Toke调用受保护的API(二)

    在前一篇博文中,我们使用OAuth的Client Credential Grant授权方式,在服务端通过CNBlogsAuthorizationServerProvider(Authorization ...

  9. ASP.NET Web API与Owin OAuth:使用Access Toke调用受保护的API

    在前一篇博文中,我们使用OAuth的Client Credential Grant授权方式,在服务端通过CNBlogsAuthorizationServerProvider(Authorization ...

最新文章

  1. CountVectorizer 统计文本重复率 sklearn API
  2. zillow房价预测
  3. java plat停止_击按钮就停止运行,大牛帮我看看
  4. 济南市软件测试工程师的工资水平,软件测试工程师工资怎么样?高吗?
  5. [BOI2007] Mokia
  6. Nexus-配置vPC 实验三
  7. 菜鸟读jQuery 2.0.3 源码分析系列(1)
  8. php 获取 body json,从PHP中的JSON POST读取HTTP请求正文的问题
  9. 如何在Windows 10上安装MySQL数据库服务器8.0.19
  10. 计算机信息管理自荐信个人简历,计算机信息专业英文自荐信
  11. 二值图像分析—轮廓发现
  12. 数据投毒攻防对抗技术-2.推荐系统中的数据投毒
  13. 电脑城 Ghost XP SP3 笔记本专用版 2012.10
  14. 利用Python对淘宝用户行为进行分析
  15. JavaScript专题(一)变量提升与预编译,一起去发现Js华丽的暗箱操作
  16. Python实操笔记(2)——海龟绘图法绘制有层次感的奥运五环
  17. 消除WSL中ls Windows文件夹时背光配色的方法
  18. ggplot2-条形图和折线图
  19. 视频通话 - 时信魔方教程
  20. 人均年薪50万以上,docker到底是什么?为什么这么火?

热门文章

  1. Delphi 105错误
  2. leetCode刷题第一天--求两数之和
  3. ffmpeg函数调用失败--在编译自己的ffmpeg函数的时候显示ffmpeg函数undefined reference to `av_log_set_level(int)‘
  4. 面向对象编程--之二
  5. 【CyberSecurityLearning 附】DNS复习演示所有实验
  6. Linux 读取文件n行并删除方法
  7. 用双向链表实现一个栈
  8. 使用BIOS进行键盘输入和磁盘读写---汇编学习笔记
  9. 字节(byte)简介
  10. 深度学习利器: TensorFlow系统架构及高性能程序设计