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

相关文章

Java覆盖第三方jar包中的某一个类的实现方法

《Java覆盖第三方jar包中的某一个类的实现方法》在我们日常的开发中,经常需要使用第三方的jar包,有时候我们会发现第三方的jar包中的某一个类有问题,或者我们需要定制化修改其中的逻辑,那么应该如何... 目录一、需求描述二、示例描述三、操作步骤四、验证结果五、实现原理一、需求描述需求描述如下:需要在

Debezium 与 Apache Kafka 的集成方式步骤详解

《Debezium与ApacheKafka的集成方式步骤详解》本文详细介绍了如何将Debezium与ApacheKafka集成,包括集成概述、步骤、注意事项等,通过KafkaConnect,D... 目录一、集成概述二、集成步骤1. 准备 Kafka 环境2. 配置 Kafka Connect3. 安装 D

Spring AI集成DeepSeek的详细步骤

《SpringAI集成DeepSeek的详细步骤》DeepSeek作为一款卓越的国产AI模型,越来越多的公司考虑在自己的应用中集成,对于Java应用来说,我们可以借助SpringAI集成DeepSe... 目录DeepSeek 介绍Spring AI 是什么?1、环境准备2、构建项目2.1、pom依赖2.2

TP-Link PDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务

《TP-LinkPDDNS服将于务6月30日正式停运:用户需转向第三方DDNS服务》近期,路由器制造巨头普联(TP-Link)在用户群体中引发了一系列重要变动,上个月,公司发出了一则通知,明确要求所... 路由器厂商普联(TP-Link)上个月发布公告要求所有用户必须完成实名认证后才能继续使用普联提供的 D

如何利用Java获取当天的开始和结束时间

《如何利用Java获取当天的开始和结束时间》:本文主要介绍如何使用Java8的LocalDate和LocalDateTime类获取指定日期的开始和结束时间,展示了如何通过这些类进行日期和时间的处... 目录前言1. Java日期时间API概述2. 获取当天的开始和结束时间代码解析运行结果3. 总结前言在J

java获取图片的大小、宽度、高度方式

《java获取图片的大小、宽度、高度方式》文章介绍了如何将File对象转换为MultipartFile对象的过程,并分享了个人经验,希望能为读者提供参考... 目China编程录Java获取图片的大小、宽度、高度File对象(该对象里面是图片)MultipartFile对象(该对象里面是图片)总结java获取图片

Java通过反射获取方法参数名的方式小结

《Java通过反射获取方法参数名的方式小结》这篇文章主要为大家详细介绍了Java如何通过反射获取方法参数名的方式,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、前言2、解决方式方式2.1: 添加编译参数配置 -parameters方式2.2: 使用Spring的内部工具类 -

Java如何获取视频文件的视频时长

《Java如何获取视频文件的视频时长》文章介绍了如何使用Java获取视频文件的视频时长,包括导入maven依赖和代码案例,同时,也讨论了在运行过程中遇到的SLF4J加载问题,并给出了解决方案... 目录Java获取视频文件的视频时长1、导入maven依赖2、代码案例3、SLF4J: Failed to lo

java如何通过Kerberos认证方式连接hive

《java如何通过Kerberos认证方式连接hive》该文主要介绍了如何在数据源管理功能中适配不同数据源(如MySQL、PostgreSQL和Hive),特别是如何在SpringBoot3框架下通过... 目录Java实现Kerberos认证主要方法依赖示例续期连接hive遇到的问题分析解决方式扩展思考总

本地搭建DeepSeek-R1、WebUI的完整过程及访问

《本地搭建DeepSeek-R1、WebUI的完整过程及访问》:本文主要介绍本地搭建DeepSeek-R1、WebUI的完整过程及访问的相关资料,DeepSeek-R1是一个开源的人工智能平台,主... 目录背景       搭建准备基础概念搭建过程访问对话测试总结背景       最近几年,人工智能技术