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

2024-01-01 23:38

本文主要是介绍【转】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里的类库就行了,省得自己拼接字符串了。

这篇关于【转】D365 FO第三方集成(二)---访问认证(获取访问令牌)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/560807

相关文章

springboot集成easypoi导出word换行处理过程

《springboot集成easypoi导出word换行处理过程》SpringBoot集成Easypoi导出Word时,换行符n失效显示为空格,解决方法包括生成段落或替换模板中n为回车,同时需确... 目录项目场景问题描述解决方案第一种:生成段落的方式第二种:替换模板的情况,换行符替换成回车总结项目场景s

SpringBoot集成redisson实现延时队列教程

《SpringBoot集成redisson实现延时队列教程》文章介绍了使用Redisson实现延迟队列的完整步骤,包括依赖导入、Redis配置、工具类封装、业务枚举定义、执行器实现、Bean创建、消费... 目录1、先给项目导入Redisson依赖2、配置redis3、创建 RedissonConfig 配

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

SpringBoot 获取请求参数的常用注解及用法

《SpringBoot获取请求参数的常用注解及用法》SpringBoot通过@RequestParam、@PathVariable等注解支持从HTTP请求中获取参数,涵盖查询、路径、请求体、头、C... 目录SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数以下是主要的注解及其用法:1

SpringBoot集成XXL-JOB实现任务管理全流程

《SpringBoot集成XXL-JOB实现任务管理全流程》XXL-JOB是一款轻量级分布式任务调度平台,功能丰富、界面简洁、易于扩展,本文介绍如何通过SpringBoot项目,使用RestTempl... 目录一、前言二、项目结构简述三、Maven 依赖四、Controller 代码详解五、Service

springboot2.1.3 hystrix集成及hystrix-dashboard监控详解

《springboot2.1.3hystrix集成及hystrix-dashboard监控详解》Hystrix是Netflix开源的微服务容错工具,通过线程池隔离和熔断机制防止服务崩溃,支持降级、监... 目录Hystrix是Netflix开源技术www.chinasem.cn栈中的又一员猛将Hystrix熔

MyBatis-Plus 与 Spring Boot 集成原理实战示例

《MyBatis-Plus与SpringBoot集成原理实战示例》MyBatis-Plus通过自动配置与核心组件集成SpringBoot实现零配置,提供分页、逻辑删除等插件化功能,增强MyBa... 目录 一、MyBATis-Plus 简介 二、集成方式(Spring Boot)1. 引入依赖 三、核心机制

SpringBoot集成P6Spy的实现示例

《SpringBoot集成P6Spy的实现示例》本文主要介绍了SpringBoot集成P6Spy的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录本节目标P6Spy简介抛出问题集成P6Spy1. SpringBoot三板斧之加入依赖2. 修改

通过配置nginx访问服务器静态资源的过程

《通过配置nginx访问服务器静态资源的过程》文章介绍了图片存储路径设置、Nginx服务器配置及通过http://192.168.206.170:8007/a.png访问图片的方法,涵盖图片管理与服务... 目录1.图片存储路径2.nginx配置3.访问图片方式总结1.图片存储路径2.nginx配置

springboot项目中集成shiro+jwt完整实例代码

《springboot项目中集成shiro+jwt完整实例代码》本文详细介绍如何在项目中集成Shiro和JWT,实现用户登录校验、token携带及接口权限管理,涉及自定义Realm、ModularRe... 目录简介目的需要的jar集成过程1.配置shiro2.创建自定义Realm2.1 LoginReal