【转】D365 FO第三方集成(二)---访问认证(获取访问令牌)

D365 FO 在github上发布了第三方访问D365 FO的示例代码,里面包含了各种调用示例,代码很清晰。
https://github.com/microsoft/Dynamics-AX-Integration
这篇blog简单分析一下代码中获取访问令牌的部分代码。
与获取访问令牌相关的代码有两个类ClientConfiguration和OAuthHelper。
ClientConfiguration是用来配置获取访问令牌的参数,因为获取令牌有两种方式 提供D365 FO的用户名和密码和提供访问客户端密码(应用程序密码,就是上文创建的那个密码。)
这两种对应不同的应用场景,第一种是用于跟用户有交互的场景,用户可以通过输入用户名和密码的方式请求访问令牌。
第二种是用于系统后台交互,没有用户参与的场景。
所以代码里分了两个部分useWebAppAuthentication 为false对应第一种场景,为true对应第二种场景。
我现在做的应用是用于系统后交互,没有用户参与,所以知道应用程序密钥就可以了。

  一定要注意示例代码里的地址是https://login.windows.net对应的是global的AZure,国内的AZure跟global的AZure是物理隔离的,AD域认证都是完全分开的。

所以地址一定要写成https://login.chinacloudapi.cn,要不然会找不到对应的AD,https://login.chinacloudapi.cn后面跟的是租户ID(TenantID),上文有提到过,从那边复制粘贴过来即可。
至于ClientAppId和ClientAPPSccret上文也提到过,从AZure Portal上面复制粘贴过来就可以了。
获取令牌的代码很简单,是通过.NET类库Microsoft.IdentityModel.Clients.ActiveDirectory相应的方法实现的。
当然不用这个.NET类库也可以很容易通过http请求获取访问令牌。
用fiddler跟踪一下就可以知道获取令牌的过程了,示例代码里的PHP部分,也可以很容易看出.NET类库做的事情。
把一些请求信息通过http post请求发送给AZure认证的URL来获取访问令牌。
http post的URL的地址是
https://login.chinacloudapi.cn/{租户ID}/oauth2/token
post的body内容是
resource=https%3A%2F%2Fusnconeboxax1aos.cloud.onebox.dynamics.cn&client_id={应用程序ID}&client_secret={url编码后的密钥}&grant_type=client_credentials

请求的结果

所以任何平台都可以用http请求,拼接出请求字符串,得到访问令牌,如果是.NET平台就更简单了,直接用.NET里的类库就行了,省得自己拼接字符串了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/437631.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【转】D365 FO第三方集成(三)---服务实现

D365 FO的Custom Service的实现比AX2012简单了很多。 AX2012服务方法要用属性SysEntryPointAttribute标记,添加到Services以后,还要发布服务并在系统管理入站端口添加操作,服务运行在CIL下,所以每次改动服务方法的代码都要增量生成…

PHP连接sql seaver数据库

我的PHP版本7.0 通过sqlsrv系列函数,需要下载安装Microsoft Drivers for PHP for SQL Server驱动: 地址:https://msdn.microsoft.com/library/dn865013.aspx。 根据自己需求下载安装,安装地址php下ext目录下,我的是4.0…

NoSql理解+传统关系型数据库ACID+Nosql的CAP+BASE的理解

1)什么是Nosql NoSQL(NoSQL Not Only SQL ),意即“不仅仅是SQL”, 泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显…

ztree 点击重载 layui table

ztree 点击重载 layui table <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <HTML> <HEAD><TITLE> ztree_demo </TITLE><meta http…

数据结构与算法 - 稀疏数组(理解+代码实现案例)

举例 稀疏数组第一行是原数据几行几列和几个有效数据的个数 下面的行是各个有效数组的行列与具体值 稀疏数组实现 代码实现 package DataStructures.sparsearray;/*** 二维数组转稀疏数组 与 稀疏数组转成二维数组*/ public class SparseArray {public static void main(Stri…

数据结构 - 队列(非环形队列,以及优化成环形队列)

1&#xff09;队列的定义与实现形式-方式 2&#xff09;队列实现思路&#xff08;非环形&#xff0c;下面进行优化&#xff09; 3&#xff09;代码实现&#xff08;注意并不是环形&#xff09; package DataStructures.queue;import java.util.Scanner;/*** 使用数组模拟队列*…

爬取网易云音乐歌曲特色榜单信息

网易云音乐(iframe内的歌单) 刚开始学习做下记录 需要先下载好所需浏览器内核 我时谷歌&#xff0c;下载地址 http://chromedriver.storage.googleapis.com/index.html 然后没了&#xff0c;自己F12扒拉下就行了 运行&#xff1a; 左侧随便点击一个榜单后&#xff0c;复制ur…

数据结构 - 单链表(Linked List)实现在内存中实现数据以链表形式生成并根据序号排序

下面实现一个例子来进行学习 1&#xff09;介绍 单链表的逻辑结构 在内存中的实际结构 具体创建示意图&#xff1a; 2&#xff09;代码实现 例子 1。第一个程序在添加的时候并没有按照序号排序&#xff0c;如果在添加的时候把位置改变输出的时候序号会改变 package DataStr…

Mysql count() 语句

百万数据测试 select count(主键) from table 执行效率&#xff1a; select count(*) AS AGGREGATE from table 以上测试均再 navicat 工具进行 由于各种原因&#xff0c;sql执行时间可定存在一定误差&#xff0c;但最终结果不变。

phpStydy+wordpress 安装部署

1、先准备工具包 下载phpstudy&#xff0c;下载地址&#xff1a;https://www.xp.cn/ 下载wordpress &#xff0c;下载地址&#xff1a;https://cn.wordpress.org/download/ 2、安装phpStudy&#xff0c;下一步操作即可 3、安装完成后&#xff0c;检测环境配置&#xff0c;php、…

java数据结构 - 单链表(腾讯面试题实现单链表反转)

直接上实现代码 //单链表的反转public static void reverseList(HeroNode head){//如果当前链表为空&#xff0c;或只有一个节点&#xff0c;无需反转if (head.next null || head.next.next null){return ;}//定义一个辅助变量&#xff0c;帮助我们遍历HeroNode cur head.n…

数据结构 - 链表(双向链表学习)

程序里有几个注释的地方还是需要特别注意的&#xff0c;根据单链表自己的逻辑来写一遍双向链表&#xff0c;可能有几个细节处理的不到位。 package DataStructures.LinkedList;public class DoubleLinkedListDemo {public static void main(String []args){System.out.println…

【转】Mac下 如何配置虚拟机软件Parallel Desktop--超详细

Mac下 如何配置虚拟机软件Pparallel Desktop--超详细 Mac 的双系统解决方案有两种&#xff0c;一种是使用Boot Camp分区安装独立的Windows&#xff0c;一种是通过安装Parallels Desktop一类的虚拟机软件运行Windows。采用虚拟机的方式优势更明显&#xff0c;可以灵活的在两个系…

数据结构 - 链表(单向环形链表)(约瑟夫问题)

问题如下&#xff08;与分析&#xff09; 构建思路 输入一个数&#xff0c;数到这个数的小孩出圈&#xff0c;出圈顺序的思路 代码实现 根据图解&#xff0c;来一步一步实现 //根据用户输入&#xff0c;计算小孩出圈顺序/**** param startNo 表示从第几个小孩开始数数* param …

【转】什么是ERP、SCM、CRM?

ERP、SCM、CRM的区别 &#xff08;1&#xff09;从管理理念上来说&#xff0c;ERP的管理理念是提高企业内部资源的计划和控制能力&#xff0c;讲究的是在满足客户、及时交货的同时最大限度地降低各种成本&#xff0c;通过提高内部运转效率来提高对客户的服务质量&#xff0c;是…

【转】理解OAuth 2.0

作者&#xff1a; 阮一峰 日期&#xff1a; 2014年5月12日 OAuth是一个关于授权&#xff08;authorization&#xff09;的开放网络标准&#xff0c;在全世界得到广泛应用&#xff0c;目前的版本是2.0版。 本文对OAuth 2.0的设计思路和运行流程&#xff0c;做一个简明通俗的解…

数据结构- 栈(实现综合计算器)(一位数计算 扩展到 多位数计算)

思路 代码&#xff08;可以看到这里的数字只能是单位数字&#xff0c;那么如何改成可以是多位数呢&#xff1f;&#xff01;往下看&#xff09; package stack;public class Calculator {public static void main(String[] args) {//完成表达式运算String expression "7…

数据结构 - 栈(数组模拟栈操作)

数组模拟栈操作 package stack;import java.util.Scanner;public class ArrayStackDemo {public static void main(String[] args) {//测试ArrayStack//创建栈ArrayStack arrayStack new ArrayStack(4);String key "";boolean loop true;Scanner sc new Scanner…

【转】visual studio 2019 (vs) 显示右侧缩略图_缩略图_滚动条

1. 工具 -> 选项 2. 文件编辑器 -> 选项对应的语言(Basic, C#, C/C....) -> 行为 -> 使用垂直滚动条的缩略图模式&#xff08;M&#xff09; 效果&#xff1a;

数据结构 - 栈 (逆波兰计算器)(栈的三种表达式)(前缀、中缀和后缀表达式,后缀也叫逆波兰表达式)(中缀表达式转后缀表达式实现步骤及完整代码)

栈的三种表达式&#xff1a;前缀、中缀和后缀表达式&#xff0c;后缀也叫逆波兰表达式 前缀&#xff08;波兰表达式&#xff09; 中缀&#xff08;对人来讲很好理解&#xff0c;对于计算机来讲就方便了&#xff0c;一般会把中缀表达式转换成后缀表达式&#xff09; 后缀&#…