【转】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

相关文章

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。

两个月冲刺软考——访问位与修改位的题型(淘汰哪一页);内聚的类型;关于码制的知识点;地址映射的相关内容

1.访问位与修改位的题型(淘汰哪一页) 访问位:为1时表示在内存期间被访问过,为0时表示未被访问;修改位:为1时表示该页面自从被装入内存后被修改过,为0时表示未修改过。 置换页面时,最先置换访问位和修改位为00的,其次是01(没被访问但被修改过)的,之后是10(被访问了但没被修改过),最后是11。 2.内聚的类型 功能内聚:完成一个单一功能,各个部分协同工作,缺一不可。 顺序内聚:

【Kubernetes】K8s 的安全框架和用户认证

K8s 的安全框架和用户认证 1.Kubernetes 的安全框架1.1 认证:Authentication1.2 鉴权:Authorization1.3 准入控制:Admission Control 2.Kubernetes 的用户认证2.1 Kubernetes 的用户认证方式2.2 配置 Kubernetes 集群使用密码认证 Kubernetes 作为一个分布式的虚拟

Android Environment 获取的路径问题

1. 以获取 /System 路径为例 /*** Return root of the "system" partition holding the core Android OS.* Always present and mounted read-only.*/public static @NonNull File getRootDirectory() {return DIR_ANDR

【Shiro】Shiro 的学习教程(三)之 SpringBoot 集成 Shiro

目录 1、环境准备2、引入 Shiro3、实现认证、退出3.1、使用死数据实现3.2、引入数据库,添加注册功能后端代码前端代码 3.3、MD5、Salt 的认证流程 4.、实现授权4.1、基于角色授权4.2、基于资源授权 5、引入缓存5.1、EhCache 实现缓存5.2、集成 Redis 实现 Shiro 缓存 1、环境准备 新建一个 SpringBoot 工程,引入依赖:

如何更优雅地对接第三方API

如何更优雅地对接第三方API 本文所有示例完整代码地址:https://github.com/yu-linfeng/BlogRepositories/tree/master/repositories/third 我们在日常开发过程中,有不少场景会对接第三方的API,例如第三方账号登录,第三方服务等等。第三方服务会提供API或者SDK,我依稀记得早些年Maven还没那么广泛使用,通常要对接第三方

系统架构师-ERP+集成

ERP   集成平台end:就懒得画新的页

Spring Boot集成Tess4J实现OCR

1.什么是Tess4j? Tesseract是一个开源的光学字符识别(OCR)引擎,它可以将图像中的文字转换为计算机可读的文本。支持多种语言和书面语言,并且可以在命令行中执行。它是一个流行的开源OCR工具,可以在许多不同的操作系统上运行。Tess4J是一个基于Tesseract OCR引擎的Java接口,可以用来识别图像中的文本,说白了,就是封装了它的API,让Java可以直接调用。 Tess