利用Fiddler模拟通过Dynamics 365的OAuth 2 Client Credentials认证后调用Web API
微软动态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}} 。

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

利用Fiddler模拟通过Dynamics 365的OAuth 2 Client Credentials认证后调用Web API的更多相关文章
- Dynamics 365 CE的插件/自定义工作流活动中调用Web API示例代码
微软动态CRM专家罗勇 ,回复325或者20190428可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me! 现在Web API越来越流行,有时候为了程序更加健壮,需要在插件 ...
- Dynamics 365 Online通过OAuth 2 Client Credential授权(Server-to-Server Authentication)后调用Web API
微软动态CRM专家罗勇 ,回复332或者20190505可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me! 本文很多内容来自 John Towgood 撰写的Dynamic ...
- 利用fiddler模拟发送json数据的post请求
fiddler是调试利器,有许多好用的功能,这里简单的介绍一下利用fiddler模拟发送post请求的例子 先简单介绍一下失败的例子,最后给出正确的方法
- 通过重复运行的Microsoft Flow由OAuth认证后获取Access Token并将其更新到实体记录
我是微软Dynamcis 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...
- Dynamics 365本地部署版本配置OAuth 2 Password Grant以调用Web API
微软动态CRM专家罗勇 ,回复330或者20190504可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me! 根据官方建议,不要再使用Dynamics 365 Custome ...
- 利用Azure虚拟机安装Dynamics 365 Customer Engagement之一:准备工作
我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...
- 利用Azure虚拟机安装Dynamics 365 Customer Engagement之十二:新增SQL Server可用性副本
我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...
- 利用Azure虚拟机安装Dynamics 365 Customer Engagement之六:安装后端服务器
我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...
- 利用Azure虚拟机安装Dynamics 365 Customer Engagement之十三:从可用性组中移除副本然后重新添加
我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...
随机推荐
- 池化HttpClient,拿去就能用
import lombok.extern.slf4j.Slf4j; import org.apache.http.HttpEntity; import org.apache.http.HttpResp ...
- CRM第一篇
2.1搭建前提 我们在搭建CRM开发环境之前,需要明确2件事情: a.我们搭建环境采用基于注解的配置. b.搭建环境需要测试,我们以客户的保存和列表查询作为测试功能. 2.2搭建步骤 2.2.1导入S ...
- Dynamics 365 CE Update消息PostOperation阶段Image的尝试
我是微软Dynamics 365 & Power Platform方面的工程师罗勇,也是2015年7月到2018年6月连续三年Dynamics CRM/Business Solutions方面 ...
- 解决Xcode10 Library not loaded: /usr/lib/libstdc++.6造成的crash及报错
关键字1:dyld: Library not loaded: /usr/lib/libstdc++.6.dylib Referenced from: 关键字2:Reason: no suitabl ...
- Violet音乐社区设计文档
目录 Violet音乐社区设计文档 一.引言 1.1 编写目的 1.2 开发背景 二.用例图设计 2.1游客实例设计 2.2 管理员实例设计 2.3 普通用户实例设计 三.类图设计 3.1 歌手类 3 ...
- 【tf.keras】tf.keras使用tensorflow中定义的optimizer
Update:2019/09/21 使用 tf.keras 时,请使用 tf.keras.optimizers 里面的优化器,不要使用 tf.train 里面的优化器,不然学习率衰减会出现问题. 使用 ...
- python(leetcode)498. 对角线遍历
这题难度中等,记录下思路 第一个会超时, 第二个:思想是按斜对角线行进行右下左上交替遍历, def traverse(matrix): n=len(matrix)-1 m=len(matrix[0]) ...
- Java之Random类
什么是Random类 此类的实例用于生成伪随机数,使用此类中的方法能够得到一个随机数. Random使用步骤 查看类 java.util.Random :该类需要 import导入使后使用. 查看构造 ...
- 浅谈C++ STL list 容器
浅谈C++ STL list 容器 本篇随笔简单讲解一下\(C++STL\)中\(list\)容器的使用方法和使用技巧. list容器的概念 学习过\(C++STL\)的很多同学都知道,\(STL\) ...
- 简单App项目的运行
我和我的同伴两个人从网上下载一个仿微信登录源码,导入到eclipse中,两人结队练习这个源代码的操作, 运行项目到Android虚拟器上,显示效果为 我们还运行这个项目到手机设备上,显示效果为 接 ...