利用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方面 ...
随机推荐
- 一起学SpringMVC之入门篇
本文属于SpringMVC的入门篇,属于基础知识,仅供学习分享使用,如有不足之处,还请指正. 什么是SpringMVC ? SpringMVC是一个基于Spring的MVC框架,继承了Spring的优 ...
- 【C#】学习笔记 abstract、virtual、interface使用的一些栗子
上
- LeetCode刷题191117
博主渣渣一枚,刷刷leetcode给自己瞅瞅,大神们由更好方法还望不吝赐教.题目及解法来自于力扣(LeetCode),传送门. 算法: 题目: 给出一个 32 位的有符号整数,你需要将这个整数中每位上 ...
- 用函数模拟简单的购物车(Python)
""" 购物车功能: a.引导用户输入金额 b.给用户展示所有的商品 c.引导用户输入需要进行的操作[添加 删除 结算购物车 退出] d.引导用户选择商品 e.引导用户输 ...
- WebAPI的使用
后台API的代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; using ...
- mysql-installer-community-8.0.17.0.msi安装教程
1.官网 https://dev.mysql.com/downloads/file/?id=488055 我选择自定义安装 注意这里是可以设置路径的,否则是默认地址 然后一直下一步就好 也是一路下一步 ...
- 【hdu4045】Machine scheduling(dp+第二类斯特林数)
传送门 题意: 从\(n\)个人中选\(r\)个出来,但每两个人的标号不能少于\(k\). 再将\(r\)个人分为不超过\(m\)个集合. 问有多少种方案. 思路: 直接\(dp\)预处理出从\(n\ ...
- Vue中的导航守卫(路由守卫)
当做Vue-cli项目的时候感觉在路由跳转前做一些验证,比如登录验证,是网站中的普遍需求. 对此,vue-router 提供的 beforeEach可以方便地实现全局导航守卫(navigation-g ...
- 16.输入密码查看 flag
直接进行burpsuite 的 intruder 爆破模块进行爆破, 得到密码为 13579. 输入进去得到flag
- matlab键盘快捷键无法使用的解决办法
打开matlab,在主页里点击 预设/preferences 左栏找 键盘/keyboard 点开键盘点击 快捷方式/shortcuts 在右边 活动设置 /Active settings 里选择 W ...