关注本人微信和易信公众号: 微软动态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. Redis数据结构简介

    Redis可以存储键与5种不同数据结构类型之间的映射,这5种数据结构类型分别为STRING(字符串).LIST(列表).SET(集合).HASH(散列)和ZSET(有序集合).有一部分Redis命令对 ...

  2. 【Quartz】持久化到数据库【五】

      前言 我们做到这里已经对Quartz定时器组件已经是学会了基本的使用了.但是我们有没有想过任务开启之后万一断掉了,当机了我们怎么办,你是否还想继续执行原先的任务.我们普通的创建是把任务放在内存中存 ...

  3. 最值得收藏的java技术博客(Java篇)

    第一个:java_my_life 作者介绍:找不到原作者信息.大概做了翻阅全部是2012年的博客. 博客主要内容:主要内容是关于Java设计模式的一些讲解和学习笔记,在相信对学习设计模式的同学帮助很大 ...

  4. JS/jquery实现鼠标控制页面元素显隐

    最近网站要上一个活动广告横幅,当用户鼠标划过时显隐二维码.像这种鼠标事件控制页面元素显隐的情况,码农们会经常遇到,可以通过javascript或jquery代码实现,下面就几种常见需求一起归纳一下. ...

  5. HTML5 CSS3 专题 :诱人的实例 3D旋转木马效果相册

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/32964301 首先说明一下创意的出处:http://www.zhangxinxu ...

  6. 一支烟的时间导致他错失女神,Python查看撤回消息,力挽狂澜!

    2011年1月21日 微信(WeChat) 是腾讯公司于2011年1月21日推出的一个为智能终端提供即时通讯服务的免费应用程序,由张小龙所带领的腾讯广州研发中心产品团队打造 .在互联网飞速发展的下.民 ...

  7. JAVA WEB项目中生成验证码及验证实例(附源码及目录结构)

    [我是一个初学者,自己总结和网上搜索资料,代码是自己敲了一遍,亲测有效,现将所有的目录结构和代码贴出来分享给像我一样的初学者] 作用 验证码为全自动区分计算机和人类的图灵测试的缩写,是一种区分用户是计 ...

  8. java面向对象中四种权限(private,protected,public,友好型)详解

    转自http://blog.csdn.net/a1237871112/article/details/50926975 及http://blog.csdn.net/blackmanren/articl ...

  9. MyBatis的增删改查。

    数据库的经典操作:增删改查. 在这一章我们主要说明一下简单的查询和增删改,并且对程序接口做了一些调整,以及对一些问题进行了解答. 1.调整后的结构图: 2.连接数据库文件配置分离: 一般的程序都会把连 ...

  10. 后端开发实践——Spring Boot项目模板

    在我的工作中,我从零开始搭建了不少软件项目,其中包含了基础代码框架和持续集成基础设施等,这些内容在敏捷开发中通常被称为"第0个迭代"要做的事情.但是,当项目运行了一段时间之后再来反 ...