动态AX的移动应用程序



在我们的组织中,我们正在尝试开发一个移动应用程序/网站作为Dynamics AX 2012的前端。我们遵循MICROSOFT(https://technet.microsoft.com/en-us/library/dn155874.aspx(建议的架构。

尽管 ACS 现已在 AZURE 中弃用,但Microsoft建议的体系结构迫使我们使用我在请求 Azure 团队后创建的 ACS。

Dynamics AX Architecture 由 Microsoft 支持

按照文档遵循的步骤:

我们已经设置了以下项目,目前我们被困在一个地方:

  1. 设置在单个域上运行的三台 Windows 2012 R2 服务器 - 第一个用于 AX 和 DC,第二个用于 ADFS 服务器,第三个用于中间层 WCF 服务 -单独完成和测试

  2. 使用 AIF 服务设置 Dynamics AX 2012 服务器,该服务在 Inboud 端口中公开 - 完成 设置 ADFS 服务器并创建少量用户 -完成、根据事件日志侦听服务总线和使用 Powershell 控制台测试身份验证。

  3. 创建一个示例控制台应用程序,用于调用 ADFS 以获取令牌并将其传递给 Azure 服务总线 -ADFS 返回令牌,ACS 返回令牌

  4. 设置中间层服务,该服务将位于 AX 2012 和移动客户端之间 -安装完成,服务总线引发 404 错误

我已经完成了所有步骤,当我尝试使用两个令牌联系服务总线时失败。以前有没有人这样做过,我想知道缺少什么?

对服务总线的后调用:

发布网址:

https://xxxxx.servicebus.windows.net/ExpenseRest/Expense?Action=Create

头:

Content-Type: application/json; charset=utf-8
Authorization: WRAP access_token="net.windows.servicebus.action=Send&http%3a%2f%2fschemas.microsoft.com%2faccesscontrolservice%2f2010%2f07%2fclaims%2fidentityprovider=http%3a%2f%2fFQDN.COM%2fadfs%2fservices%2ftrust&Audience=http%3a%2f%2finvmobile.servicebus.windows.net%2f&ExpiresOn=1503321191&Issuer=https%3a%2f%2fxxxxxxx-sb.accesscontrol.windows.net%2f&HMACSHA256=SS%SSS%SSSS%3d&wrap_access_token"
Host: xxxxxx.servicebus.windows.net
Content-Length: 4382
Expect: 100-continue

身体:

{"adfstoken":"adfs_encoded_token","expenseData":{"Amount":"100","Comments":"Expense of 100 INR","CurrenyCode":"EUR","Date":"08/18/2017"}

错误:

404,指定地址上没有托管任何服务

因此,如果要使用 ACS,则基本上需要通过支持请求将该功能列入白名单。新的推荐连接方式是通过 SAS。现在,您上面引用的文档建议构建 WCF 服务和/或服务总线侦听器,它本质上是 .Net 代码。有一些图表,但我提到的也是在第27页左右。

因此,如果您使用.Net代码,您基本上也可以立即实现SAS,这比尝试使ACS工作更具有前瞻性。

关于SAS的一些有趣的附加数据,如何实现它,通过防火墙打开哪些端口等。

需要打开的端口取决于您使用的是任何客户端还是 SB rest API。从文档中可以看出,这些是必要的端口: https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-amqp-protocol-guide

Azure 服务总线要求始终使用 TLS。它支持通过 TCP 端口 5671 的连接,即在进入 AMQP 协议握手之前首先使用 TLS 覆盖 TCP 连接,并且还支持通过 TCP 端口 5672 的连接,服务器立即使用 AMQP 规定的模型强制升级到 TLS 的连接。AMQP WebSockets 绑定通过 TCP 端口 443 创建一个隧道,该隧道等效于 AMQP 5671 连接。

两个新式客户端都应使用 AMQP。有一个较旧的客户端版本,埃森哲不太可能使用: 较旧的 .NET 库曾经在某些时候有一个基于 WCF 的自定义协议,该协议使用 TCP 而不是 9354(称为 SBMP,SB 消息传递协议(,并且在某些时候可能使用了称为 WebStream 的旧技术

如果您单独使用将使用我们的 rest api,他们可能只能使用 443。 有关 SAS 的更多数据 https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-sas

相关内容

最新更新