利用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方面 ...
随机推荐
- ZooKeeper(五):事务处理之更新数据逻辑解析
通过前些文章,我们已经完全从整体架构和数据接入方面理解了ZK的前情工作.接下来,我们就来看ZK的正式工作吧. 本文以 setData /a data 这个命令作为出发点,来观察zk是如何处理来自客户端 ...
- Flask 教程 第九章:分页
本文翻译自The Flask Mega-Tutorial Part IX: Pagination 这是Flask Mega-Tutorial系列的第九部分,我将告诉你如何对数据列表进行分页. 在第八章 ...
- JMeter压测“java.net.SocketException: Socket closed”解决方法
报错详情: java.net.SocketException: Socket closed at java.net.SocketInputStream.socketRead0(Native Metho ...
- 高强度学习训练第十四天总结:HashMap
HashMap 简介 HashMap 主要用来存放键值对,它基于哈希表的Map接口实现,是常用的Java集合之一. JDK1.8 之前 HashMap 由 数组+链表 组成的,数组是 HashMap ...
- SQLi-LABS Page-3 (order by injections) Less-46-Less-53
关于order by 注入原理讲解 注入原理 1. 测试 ?sort=1 desc--+?sort=1 asc--+ 显示结果不同,说明可以注入 desc是 descend 降序意思 asc 是 as ...
- Jupyter Notebooks 配置
重装了三遍(破音) 一.首先进行Anaconda的下载 然后安装,将环境配置到系统变量上,如下 然后,打开 windows 的终端,检查是否配置成功 conda -V 然后就可以开始 Jupyter ...
- VirtualBox创建的Debian虚拟机与Windows宿主共享文件
术语: 1.VM:虚拟机 步骤: 1.在Windows10上下载并安装VirtualBox6.0.8(时间:2019/5/30),下载地址:https://download.virtualbox.or ...
- C#后台架构师成长之路-高阶知识体系核心
了解了这些东西,熟悉了运用基本都是高工级别的了,其他修修补补就行了.... 1.三种预定义特性:attributeUsage.Conditional.obsolete,允许创建自定义特性,派生自Sys ...
- 如何判断Linux系统安装在VMware上?
如何判断当前Linux系统是否安装在VMware上面呢? 因为公司大部分服务器位于VMware上,也有小部分系统部署在物理机上面.今天老大要求统计一下VMware和物理机上服务器的数量,个人简单测试. ...
- 利用phpqrcode二维码生成类库合成带logo的二维码并且用合成的二维码生成海报(二)
前期准备 引入phpqrcode类库(下载地址:https://download.csdn.net/download/weixin_37557729/11891240:支持彩色二维码的下载地址:htt ...