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

根据官方建议,不要再使用Dynamics 365 Customer Engagement的SOAP终结点,也就是组织服务,而应该使用Web API. 那么Web API如何通过认证呢?这就是本文要讲的内容.

本文使用的Dynamics 365 Customer Engagement 版本 1612 (9.0.3.7) (DB 9.0.3.7) (本地),服务器操作系统是Windows Server 2016 Datacenter,特别说明的是Windows Server 2016以前的版本是不支持的,本文主要是 HOW TO DO A DYNAMICS 365 WEB API REQUEST USING OAUTH2 ACCESS TOKEN RETRIEVED FROM ADFS 2016 文章的内容的翻译与实践,也加上了自己的探索与思考.

首先打开 AD FS Management,选中左边的 Application Groups,然后点击右边的 Add Application Group ... 这个Action。

新建Application Group的名字我这里设置为 OAuth 2 Server Application,Template请选择 【Server Application accessing a web API】。

添加一个Redirect URI,记下这个页面的 Client Identifier 备用。

在下一步的界面中选中 【Generate a shared secret】,将自动生成后的secret复制下来备用,也就是点击旁边的 【Copy to clipboard】按钮,再点击【Next】按钮。

在Identifier中输入【https://demo.luoyong.me/api/data/v9.0/】然后点击旁边的【Add】按钮,再点击【Next】按钮。

这个页面保持不变,直接点击【Next】按钮。

默认情况下这里只选中了 【openid】,保持不变点击【Next】按钮。

创建完成后还需要修改其属性,双击,选择 Web API那个条目,然后点击【Edit】按钮。

切换到【Issuance Transform Rules】这个Tabpage,点击【Add Rule...】按钮,添加如后图所示的三个rule。

第一个rule如下:

添加的第二个rule如下:

添加的第三个rule如下:

然后就可以用来获取Access Token了,根据 Password Grant 的请求说明,我这里先用Fiddler来模拟,发起一个POST请求到 https://demo.luoyong.me:444/adfs/oauth2/token ,grant_type=password&client_id=06e7a1c2-f0e5-4782-a801-32ef21c7abf1&client_secret=Wf87BDgy9G1-_FidM_upf08KkfNoZb7D-SuXR7eH&username=crmadmin%40luoyong.me&password=Pass%40wordXXXXXX&resource=https%3A%2F%2Fdemo.luoyong.me%2Fapi%2Fdata%2Fv9.0%2F 。

请求返回的内容是JSON格式如下:

{    "access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IlRMUW52dDNxa2YtYVNIVDFkV0t0bkFMLUZGQSJ9.eyJhdWQiOiJodHRwczovL2RlbW8ubHVveW9uZy5tZS9hcGkvZGF0YS92OS4wLyIsImlzcyI6Imh0dHA6Ly9kZW1vLmx1b3lvbmcubWUvYWRmcy9zZXJ2aWNlcy90cnVzdCIsImlhdCI6MTU2MTI2MjY2NSwiZXhwIjoxNTYxMjY2MjY1LCJ1cG4iOiJjcm1hZG1pbkBsdW95b25nLm1lIiwicHJpbWFyeXNpZCI6IlMtMS01LTIxLTMwNTg2MDQxMDktMjU4NzIzMTYtMTIyNjc2ODE3NS01MDAiLCJ1bmlxdWVfbmFtZSI6IkxVT1lPTkdcXGNybWFkbWluIiwiYXBwdHlwZSI6IkNvbmZpZGVudGlhbCIsImFwcGlkIjoiMDZlN2ExYzItZjBlNS00NzgyLWE4MDEtMzJlZjIxYzdhYmYxIiwiYXV0aG1ldGhvZCI6InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOlBhc3N3b3JkUHJvdGVjdGVkVHJhbnNwb3J0IiwiYXV0aF90aW1lIjoiMjAxOS0wNi0yM1QwNDowNDoyNS4xOTVaIiwidmVyIjoiMS4wIn0.MPLyid3G26pKnZnoWuoIcZ9wCRNION1Ks4th90ul8KSeU0ZXQ491VBZfqbdww7du_l8nM-EvUsUMDHxp-HpgPb_YVqMSzEVhl13qmmXr1vAApBqISV7JUnsZe9E2bDN4pbty8kIjBnFgV-BM6SYlBwGEK6WCbZcCVorSE8sz6Q_HD80AFKiWvop9bHT5UU-jupFSn7nvCCuQinw1Co1ipBCEWL3iJS3v-umLPyy-Scmiyh2eVywAt3o8lfRGgr1rTcpQWlPOO36vPVQ9yN2j2EwnoPo-XJuIpIsb66CqyhAarZyMgnCidddps-YB_kx2kR0THX3AbURLVuS1VSeAFw",    "token_type":"bearer",    "expires_in":3600,    "resource":"https://demo.luoyong.me/api/data/v9.0/",    "refresh_token":"IpaVCVc-VCTx4P3bfnORIOFTai8E4eWGKlz4QsxpQnsAAQAAEVgUKdY2COgdNh7QF5tUdUerc1QeRtyCVwjkRuc9XsDoBC-k0In7NrvywbKLCOGAqavKh2NYUDuw-HqJgwpXXg5PdV7MMOTfsIuOjBlG3qGgYrm64MH6sNtHGIbGqZbEML5MFTD2OjjdK4cL2KTMy8Pr_pfPmrS6yOGYPu409EzBn9qkoRhBiR0UzEssOYT0kvmQAwSz5PUnoPsKp3DwPpRRW7Gy0Ww0GGDYYhDYKXgj1Yf2-MYnJCqryt8XD3t5yx9IgjJDEjv8kzApDGzIi6Bd1365ddtVMtvd_z2AwNeG3dA8kBREgrnAgtYwd3Zl8t9UeLfMLD-CLGkpDmm0DwAGAAA5i-4WbFH6mSgAoTYdW8-RdJICj1ojXFzBESwb5wcKLtWzJdthM8Cqs6CNC93_hPWBGu-zq3ygJgsgQluhsEItx7wDG7_jBH_Vp95_jWpCRZFJOAkj8da2yQSSxasjJAqK88yXANDn5LbuqQ08Rh5nK952zERlCX9uqNtig3E--fKUEk1v9r4I_Rz6wxxH_DY2TxvbVqlTwWG2M-dNS56yYJnSltUXY9rpPVpA5Pqkt9tyCJbKcmryCLSn276jeHd1iGFo6OJHwqoKQDHJypglBtUtkhtSOgbJLq1PU40lyjIduzatrnvCjzdewx921CWldFuAq2Z1s-n19I-OmVeb7RrtNxsKMP2MLQGLg9SXFutAAuO5UcigA7swqESVs0dM8cYz2okokL87fTcWpaWJSVKiR0s2ms6WtW2akmQN67fRGhg9MqoxGLsnh50TwpL5Est9MNKa-c7dllMCvXOR6xeUZmHVdE4Sd3DveuwyDruCJp8Ca0y5ozxy6IS8OcbBRnF3_PGuC9eg5zQnsvysJV5BJttfKJUd3_cWa5zWtnV896eEeXO-8m3PhTAdAeazQy_BB4ohs_-IqTSjZcScX57oTNLJ5i-8WCQtB85nk44yljsEuToeEwHuVhP7z7VDc3CUu0m__-ojA_GAqukN7ySiTPh9XM4AivGtY7j_SqcecD4i219vm7IRikbM3EqGyb5-R6pFsHaaUvh940dg_RAxAqmzBJn82AbTUUkqUtTuLig9VV1U52C9Xzk1cKOjdlbae4P1Snyn_ADK2QVv4C_8L8YCWZssbYBP1uG9WjsUmGNVlUVkAnUhSAp12uVfD_5sYt2peIBfDWO_4c9Lr2nsfXW8igNYa0Ex7-nVk5bQIhSWbRqPGTF6rMFtuJnH80WARIHxL3oWfuzDC9w8e-vObn890fTYuoizubfD4QIHOQZidYhc9o9gmWRfec_hbXBZfBoG6Euw58jdluwHvtfo1LxylLPK7AfGPvbl0Yd1pcOX-y8CfmoVZrkLGAkjGQ9zkmnBTUkNmp9UYAUU5XzMcxqNnZDN-uYgvnT-XK9mxNh_KYuevljS52RlgV4oTwO_PfkVeNtEahbuv6uAfwCR_XRVhR3GPINNnmrsf9IsMq3nwQlamXcKWKug2vXfZk4qZ3b9TBLhEcm4b_f952cfbXuF35AC06hE3TCqSMnqEQYE_5ngJ4ExI4-2bkK3lJz5Fm0iZNJNpOmNnc_hEK229BoqATlhQGDmaaZIURUw-i86xrUNmWltFSlbhUxDkwOTLq8r7Q8yr1hkCG8qzEKOgGipVj8smb8vmd6_udSVTANUViANbj5kpbRZOeepp4Y6YgfdjOKjzZjOTF0JqH7WK8mjzSv8Mx2NS1sAlpD3bxJLxZI9PTwDmAc-dTCwWNalVLiOlezTXeF3dGIiHNf4sfW2i4oGPaUL1i8Apfa1rmDAS-xqxZhZUHJ7s13a8pXhfNMCzjJAkhisJYSCxpxBMQvQ7ZA0DgOXZr6HP7BkSIhUzrQnl7x07Hue9HnSTKnO2nC2hihmbluFvFEB_rL0l3MtT_IJZkTKoZHcUeehyrbS9aiS9jG2sprOtp-AyFwv8CXjF0fBPKRC_VcX0zj-Vpr_QLnGqLtWDsPZynK_-kxuGS_AwG08YHQ6VGI2_qJ2S5d7TqxO3G72fl2-4RpA6FL5BHcFZeEQOGtKWMe6ErhRsYJ243_iwmzm5Q_Uzix9YeF9Rg7OzZpMj1l0L9NEskuyBfxdtH720NZacp7Wtafl2v08jyfAG0HtRBUlFLghjmGEXpoZ-bstO0Wa-7bKB-3PIjNaHj9NnLNQOcrgrbXOfPceDf-T0GlEwL6Wtbvw9fy2GwJZW2RgxnKO5uk-wleJzuqwNQ2AZGjyzniFwl9z67V61wLaSCK8HQtLbwQLZCX5d94fRGwQ5ZDiAqO8NtVNm7H7opRUaA0OzperiR_Eu_FD3QaF7s7KUV6oTSBeCMcoEIm2wLFHY7AI2DDm-jNkS8dCQ8UAKQqiWhZxIrhIYIyPO5tLVT9bXQI.GUvzkNLUD-GrSwBoCYDQIcLuwY2qGnqGuDAuhbfkid1DKK5p3Jk--shF-dNimJuLzfC29poRc7fRiH85xC8LQkuSjQc2_3pmKcwMGMTg4ypt3vrIfmbfANBh_qTa4sU456QbPCViSGdp4dnELkzq9b1y21CYRkKXrqe1BYsEqGKiq-0o3NexQEB2woTddo_Z6j2WE6Dfn9bda6O8Dq-83qFRyfVAMM8LknZn5WPRhCcoR7b5zsa1g52wyyLtAGkJqRmVnBdJa0wvM0Tc9iQwo-5FnBBoGDNBIbtYspMjhQeGhOiQe6Bq2FUivJ4zxYcbIYDpvZBvQBovQUgQP_rLDw",    "refresh_token_expires_in":28800,    "id_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IlRMUW52dDNxa2YtYVNIVDFkV0t0bkFMLUZGQSIsImtpZCI6IlRMUW52dDNxa2YtYVNIVDFkV0t0bkFMLUZGQSJ9.eyJhdWQiOiIwNmU3YTFjMi1mMGU1LTQ3ODItYTgwMS0zMmVmMjFjN2FiZjEiLCJpc3MiOiJodHRwczovL2RlbW8ubHVveW9uZy5tZS9hZGZzIiwiaWF0IjoxNTYxMjYyNjY1LCJleHAiOjE1NjEyNjYyNjUsImF1dGhfdGltZSI6MTU2MTI2MjY2NSwic3ViIjoibERQeWlZdGV5elhXLzRaYlRXTHJCTGtjNG1MWS9jbE9Tb1cwSkVrTzIxQT0iLCJwd2RfZXhwIjoiMzM2NzQ2OSIsInNpZCI6IlMtMS01LTIxLTMwNTg2MDQxMDktMjU4NzIzMTYtMTIyNjc2ODE3NS01MDAiLCJ1cG4iOiJjcm1hZG1pbkBsdW95b25nLm1lIiwidW5pcXVlX25hbWUiOiJMVU9ZT05HXFxjcm1hZG1pbiIsInByaW1hcnlzaWQiOiJTLTEtNS0yMS0zMDU4NjA0MTA5LTI1ODcyMzE2LTEyMjY3NjgxNzUtNTAwIiwiYXBwdHlwZSI6IkNvbmZpZGVudGlhbCIsImFwcGlkIjoiMDZlN2ExYzItZjBlNS00NzgyLWE4MDEtMzJlZjIxYzdhYmYxIiwiYXV0aG1ldGhvZCI6InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDphYzpjbGFzc2VzOlBhc3N3b3JkUHJvdGVjdGVkVHJhbnNwb3J0IiwidmVyIjoiMS4wIn0.jFIqKwAlr1xDVoREAggQPfgGEupiqLo4Ns8wrYwu8AANB0gGZTZsSdR-j0_VvUaaT8ZFLoOCBGcefDvAE_8x8MldAqlVVipBZOcn_uZFR00v5ZulT1jU2JRv7Bilq78RhaQVS4WxU0U7IAHogJ35yB0aAaqq524k_aWrqajXhK1bIf1Ywz529YY8rhoB_PT4Xa7Ne8xICUtd1ljycmzBVUlODSMMhKRhMvWR-VPeiPvhaZ2jUixJS-3AOWdRvNmGozoQVJLn5B3IqmV3NJj6OEqkbij9RLYoPFmBGcN-ibVhJQcARUesJiNyK_vEpGzH48Dcma9j1zCASRRpbj24vw"}

将这个acccess_token的内容放到 https://jwt.io/ 去解析,可以看到详情如下图:

然后我就可以用这个access token去调用Dynamics 365 Customer Engagement 的Web API了,可以看到调用成功:

Dynamics 365本地部署版本配置OAuth 2 Password Grant以调用Web API相关推荐

  1. 利用Fiddler模拟通过Dynamics 365的OAuth 2 Client Credentials认证后调用Web API

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

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

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

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

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

  4. Dynamics 365 on-premises9.0版本开放下载,附上8.2升级9.0过程

    官网终于在11月2号放出了9.0 on-premises的下载链接,有人关心说这次会不会像8.2那样是一个升级补丁,显然不是,是有独立安装包的,从下载页面看到需要的操作系统是windows serve ...

  5. Dynamics 365 设置SMTP邮箱配置时凭据为灰色无法编辑的解决方法

    在配置邮箱时,服务器类型用了SMTP,凭据那用的是发件人的凭据,也就是在发件人的邮箱设置中设置 但如果你没有启用https,那么你打开发件人的邮箱设置时会发现凭据那块是灰色的,你无法编辑 解决方法就是 ...

  6. Dynamics 365(online) V9.0 new features for developers(二:JavaScript Web 资源依赖性)

    本篇是9.0版本针对开发者新变化系列的第二篇,JavaScript Web 资源依赖性,初看标题可能看不出所以然来,看下web资源的界面,会看到多了一个依赖项. 其中又分为两部分,一是web资源的依赖 ...

  7. Dynamics 365 App for Outlook 与 Dynamics 365 for Outlook(已被弃用)

    在最新的版本中Dynamics 365 for Outlook(Outlook 客户端)已被弃用 随 Dynamics CRM 2016(版本 8.0)引入的 Dynamics 365 App for ...

  8. 给Dynamics 365 on-premises版本 配置Exchange Server 2016邮件服务器

    给Dynamics 365 on-premises版本 配置Exchange Server 2016邮件服务器 前提条件 配置邮件服务器 配置邮箱用户 测试邮箱 前提条件 Dynamics365 本地 ...

  9. 介绍Dynamics 365的OrgDBOrgSettings工具

    摘要: 微软动态CRM专家罗勇 ,回复320或者20190320可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . 有时候会需要 ...

最新文章

  1. 使用静态URL片段 URL路由 精通ASP-NET-MVC-5-弗瑞曼
  2. 边缘加速创新和AI应用,Xilinx推出Kria自适应系统模块产品组合
  3. [教程] MacBook Pro 开机密码忘记解决方法
  4. 三阶矩阵的lu分解详细步骤_数学 - 线性代数导论 - #4 矩阵分解之LU分解的意义、步骤和成立条件...
  5. Eclipse的基本设置
  6. python拼图游戏_乐趣无穷的Python课堂
  7. 【心情】最近实在是太忙了,没有心情写东西!
  8. python语_Python 基本语法
  9. 400多个开源项目以及43个优秀的Swift开源项目-Swift编程语言资料大合集
  10. Git利用命令行提交代码步骤
  11. 空间四点定位原理及应用
  12. 华为al00的计算机在哪,(详细)华为畅享8 LDN-AL00的USB调试模式在哪里开启的流程...
  13. python远程聊天_Python实现多人在线匿名聊天的小程序
  14. mysql自定义变量比较大小_MySQL 自定义变量@ 常用案例
  15. H.264 NALU分隔Annex B和avcC
  16. 入侵检测与防御技术基础
  17. AndroidiOS崩溃情况总结
  18. 《Cocos Creator游戏实战》虚拟摇杆实现
  19. 传感器课程实验:传感器静态特性研究-电涡流传感器位移特性实验
  20. Autoit v3的介绍

热门文章

  1. esp32 + DHT11温湿度传感器+阿里云物联网平台实时数据显示 实现设备上云
  2. JVM内存中的年轻代,老年代
  3. Installation failed due to: ‘-99‘ OPPO手机
  4. 深度学习中的偏差和方差
  5. 计算机专业扬大vs兰州大学,复试奇怪景象:兰州大学初试前五(400+)都被刷!扬州大学唯一上线也被刷!...
  6. python表示倍数的英语句型_用英语表示倍数的方法有哪些?有哪些常用句型?
  7. 学习篇 | 浮点数的表示规则
  8. 数据库保存表情符号(emoji)
  9. QCC304X/QCC514X DFU/OTA升级精讲
  10. Python读书笔记第五章:运算符与表达式