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

不是在Web资源中调用Web API怎么进行认证呢?如果不认证就会返回 HTTP/1.1 401 Unauthorized ,反正我的IFD环境是这样。有时候真的想用Fiddler等工具来模拟调用看看效果,然后再写代码?怎么办?我这里提供一个不是很聪明的办法,那就是通过OAuth认证后拿到access token,带上这个token来调用Web API就没问题了。首先你的环境要做面向Internet的部署,也就是IFD,可以参考我的好几篇文章:Dynamics CRM 2013 IFD部署之一 ,然后还需要配置OAuth 2.0,可以参考我的这篇文章  Dynamics CRM 2 配置 OAuth 2.0 。其余的就是本文要讲解的内容了。可以通过PowerShell命令 Get-AdfsClient 来获取配置的ClientId 值为ba106265-fb3b-49e0-a0e8-6840b3d71ac2和 RedirectUri 值为http://localhost/callback ,如下所示,这两个参数后面会用到的。
 
 
注意这个URL中的前面部分是你的STS服务器的URL,我这里监控的是444端口,client_id换成前面的ClientId参数值,redirect_uri换成前面获取的RedirectUri参数值,resource参数是你访问的CRM的URL。打开的页面如下:
输入用户名和密码,点击登录后界面如下:
出错是因为我让它跳转的页面是localhost,我这里没有这个给他访问,这是我之前做得CRM混合移动App的Client,执行OAuth认证后需要跳转到本地。关键的是URL,URL值如下:
 
可以看到URL中有个code参数,这个参数就是OAuth认证中的authorization code,需要拿这个authorization code来换取access token。然乎我使用Fiddler来做一个POST请求,POST的URL是 https://sts.luoyong.me:444/adfs/oauth2/token ,Request Body的内容是:
 
grant_type=authorization_code&code=CU1uSwt_n06291OeFrRuWg.myb1WpoE1AgDAF8t1cL752tMQLE.IATP5vl8HO_sdv8OMs0bPACQSXLPb11zMN48-tmSRwkZ9xOy7uoWLBk0652_1v_aIqxuhngQS6zuxaaMRCJ-ppi663TnBhK7LYe-N3jwRcLlDy8fYYDO4eSMKhAo3wNRKiTH4JlGuubMGbB1lHSmU4Ku_Hx4SQnUwj9-XIrgvorWJbVzvqiZjXfZd6UulPJO9x4WuO1aLJzC7wPhlhvu9v8bMu3iSFiPKhg3hegiZFVlPsmXuaXC4vVpFSFv3Fd9Y-JnUVP2DkIU6elZjKA0aNxLj97ecgn7ZdnzFP9JPW0DA7lSRTc_6PXcJl5V-fvmhbXW0jYAK1rcsSCenMWUqA&redirect_uri=http://localhost/callback&client_id=ba106265-fb3b-49e0-a0e8-6840b3d71ac2
 
涉及到的code参数的值就是前面获取的authorization code,redirect_uri是前面获取的RedirectUri ,client_id是前面获取的ClientId参数值,Fiddler界面如下:
 
请求后返回的数据如下,这个 access_token的值是我们需要的,请记载下来。

然后我就可以去调用CRM的Web API了,Fiddler模拟如下,我用Get方法请求 https://demo.luoyong.me/api/data/v8.1/accounts?$select=name

Request Header中使用了如下参数:
Accept: application/json
Content-Type: application/json; charset=utf-8
OData-MaxVersion: 4.0
OData-Version: 4.0
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IlRBRzN5S3hrZW04eHppQmpmS3RSUFBoQ1liWSJ9.eyJhdWQiOiJodHRwczovL2RlbW8ubHVveW9uZy5tZS8iLCJpc3MiOiJodHRwOi8vc3RzLmx1b3lvbmcubWUvYWRmcy9zZXJ2aWNlcy90cnVzdCIsImlhdCI6MTQ3ODI1NDAzNiwiZXhwIjoxNDc4MjgyODM2LCJ1cG4iOiJjcm1hZG1pbkBsdW95b25nLm1lIiwicHJpbWFyeXNpZCI6IlMtMS01LTIxLTY1Mzc0MDc5OC0yNDUxMzM4NTMyLTMwMjU3ODY3ODktMTEwNCIsInVuaXF1ZV9uYW1lIjoiTFVPWU9OR1xcY3JtYWRtaW4iLCJhdXRoX3RpbWUiOiIyMDE2LTExLTA0VDEwOjA3OjE2LjIzMloiLCJhdXRobWV0aG9kIjoidXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFjOmNsYXNzZXM6UGFzc3dvcmRQcm90ZWN0ZWRUcmFuc3BvcnQiLCJ2ZXIiOiIxLjAiLCJhcHBpZCI6ImJhMTA2MjY1LWZiM2ItNDllMC1hMGU4LTY4NDBiM2Q3MWFjMiJ9.B5H6VN-mZjechKo9AJuaD0tSaEo4SSr6hk7bjXyuwQuYqC4HX38SHxx0rSRQudpIZae372EdSPyjl-g_ziGT3nRZN0eEC0_hcEWKUYQY3B028-NZH8Z9oicJBnS9KlpGe678az3MtqHpclUSdQ8VdN-MjPoAFDcVh5CQW1jJpes_q7whuxx9_96R900QB5NqlcClPEt2UtOvDDJ9_qm_zdS-bWeFPnKitDc3S4SdRNhoasA2qT4bql50EgkWAJ3g34Kby7baPzE-KKtVF_u_oXt8fRF8z1vGD1_Tg4qlzNezgC1dKrjk9xF_c2MNbSkVsq5ug66t8AHlHEoNauhwkg
 
注意 Authorization: Bearer的后面加上一个空格,再加上前面获取的access token的值。得到的请求返回如下:
可以看到没有说未经授权了,调用成功。当然也可以做其他调用,比如新增记录,Get改成POST,请求的URL是https://demo.luoyong.me/api/data/v8.1/ly_tests,请求的Request Body是 {'ly_name':'单行文本','ly_bool':true},返回的结果如下,可以看到创建记录成功了。
 

Dynamics CRM模拟OAuth请求获得Token后在外部调用Web API的更多相关文章

  1. Dynamics CRM 配置 OAuth 2.0

    关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复124或者20140324可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me! 本博文主要参考但不限于如下资料: ...

  2. ASP.NET Web API与Owin OAuth:调用与用户相关的Web API

    在前一篇博文中,我们通过以 OAuth 的 Client Credential Grant 授权方式(只验证调用客户端,不验证登录用户)拿到的 Access Token ,成功调用了与用户无关的 We ...

  3. Token Based Authentication in Web API 2

    原文地址:http://www.c-sharpcorner.com/uploadfile/736ca4/token-based-authentication-in-web-api-2/ Introdu ...

  4. Dynamics 365 CE的插件/自定义工作流活动中调用Web API示例代码

    微软动态CRM专家罗勇 ,回复325或者20190428可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me! 现在Web API越来越流行,有时候为了程序更加健壮,需要在插件 ...

  5. [转] JSON Web Token in ASP.NET Web API 2 using Owin

    本文转自:http://bitoftech.net/2014/10/27/json-web-token-asp-net-web-api-2-jwt-owin-authorization-server/ ...

  6. JSON Web Token in ASP.NET Web API 2 using Owin

    In the previous post Decouple OWIN Authorization Server from Resource Server we saw how we can separ ...

  7. 基于JWT(Json Web Token)的ASP.NET Web API授权方式

    token应用流程 初次登录:用户初次登录,输入用户名密码 密码验证:服务器从数据库取出用户名和密码进行验证 生成JWT:服务器端验证通过,根据从数据库返回的信息,以及预设规则,生成JWT 返还JWT ...

  8. ASP.NET Web API与Owin OAuth:调用与用户相关的Web API(非第三方登录)

    授权完成添加属性 ClaimsIdentity oAuthIdentity = await CreateAsync(user/*userManager*/, OAuthDefaults.Authent ...

  9. 利用Fiddler修改请求信息通过Web API执行Dynamics 365操作(Action)实例

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

随机推荐

  1. Rocketmq 集群

    写在前面 Rocketmq采用apache rockemq 4.2.0release版本. 源码路径(http://mirrors.shu.edu.cn/apache/rocketmq/4.2.0/r ...

  2. TensorFlow-谷歌深度学习库 文件I/O Wrapper

    这篇文章主要介绍一下TensorFlow中相关的文件I/O操作,我们主要使tf.gfile来完成. Exists tf.gfile.Exists(filename) 用来判断一个路径是否存在,如果存在 ...

  3. Linux集群服务 LVS

    linux虚拟服务器(LVS)项目在linux操作系统上提供了最常见的负载均衡软件. 集群定义: 集群(cluster)技术是一种较新的技术,通过集群技术,可以在付出较低成本的情况下获得在性能.可靠性 ...

  4. PAT1029:Median

    1029. Median (25) 时间限制 1000 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue Given an incr ...

  5. 并发库应用之九 & 到时计数器CountDownLatch应用

    申明:CountDownLatch好像倒计时计数器,调用CountDownLatch对象的countDown方法就将计数器减1,当到达0时,所有等待者就开始执行. java.util.concurre ...

  6. VMware Workstation 的安装和使用

    https://blog.csdn.net/lamp_yang_3533/article/details/53136474   VMware Workstation 是一个虚拟PC的软件,利用VMwa ...

  7. capwap学习笔记——初识capwap(四)(转)

    2.5.7 CAPWAP传输机制 WTP和AC之间使用标准的UDP客户端/服务器模式来建立通讯. CAPWAP协议支持UDP和UDP-Lite [RFC3828]. ¢ 在IPv4上,CAPWAP控制 ...

  8. 前端面试题总结二(js原型继承)

    今天这篇文章整理了JS原型和继承的一些知识点,面试的时候  基!本!都!会!问!还不快认真阅读下文,看看你还有哪些知识点需要掌握吧~ 1.原型链 基本思想:利用原型让一个引用类型继承另外一个引用类型的 ...

  9. LoadRunner 11 中Analysis分析

    原文:http://www.cnblogs.com/Chilam007/p/6445165.html analysis简介 分析器就是对测试结果数据进行分析的组件,它是LR三大组件之一,保存着大量用来 ...

  10. 《javascript语言精粹》读书笔记 Item1 精华与语法

    第一章 精华 任何语言都有其精华的部分和鸡肋的部分,javascript也不例外,而且鸡肋的部分还很多.但javascript的流行却不受他的质量影响. javascript为何如此流行?因为他是we ...