AWRPC 令牌(CRM Dynamics)和 JMeter

AWRPC Token (CRM Dynamics) and JMeter

我正在尝试使用 jmeter 在 CRM 动态中编写场景脚本。

  1. main.aspx 生成了 awprc 令牌,供 crm 中其他(网络)服务发出的进一步请求使用,例如;

_aWrpcTokens['\x2fVEH\x2fAPPWEBSERVICES\x2fRECENTLYVIEWEDWEBSERVICE.ASMX']={Token: '5ZqnYysbEeeA6gBQVpxYnwkYlUcIWHa0JWMJtmBDIkwZyiV\x2fK0NSb6F6hk9A1ZlT', Timestamp: "636310419198725996"}; _aWrpcTokens['\x2fVEH\x2fAPPWEBSERVICES\x2fLOOKUPMRUWEBSERVICE.ASMX']={Token: '5ZqnYysbEeeA6gBQVpxYn3eC\x2fEZXZ6r9iAxsyhDxcpth6OF7TBmFH\x2b3Ou9OKvX8k', Timestamp: "636310419198725996"}; _aWrpcTokens['\x2fVEH\x2fAPPWEBSERVICES\x2fMESSAGEBAR.ASMX']={Token: '5ZqnYysbEeeA6gBQVpxYn5X70v4ruaTNpxnKJZlYT84W1iutepmMFXTA8fhDdYxh', Timestamp: "636310419198725996"}; _aWrpcTokens['\x2fVEH\x2fAPPWEBSERVICES\x2fLOOKUPSERVICE.ASMX']={Token: '5ZqnYysbEeeA6gBQVpxYn\x2b0bSqvJ\x2fxc2Q8H3A7B55FhJPVopqiTNSqLlKEyZDOTy', Timestamp: "636310419198725996"}; _aWrpcTokens['\x2fVEH\x2fAPPWEBSERVICES\x2fSCRIPTERROR.ASMX']={Token: '5ZqnYysbEeeA6gBQVpxYnweJlDnx6biwmhKg4EGQyTUo7qqUSv\x2b1Eo90DeJXLytL', Timestamp: "636310419198725996"};

例如RECENTLYVIEWEDWEBSERVICE.ASMX,生成的token为:5ZqnYysbEeeA6gBQVpxYnwkYlUcIWHa0JWMJtmBDIkwZyiV\x2fK0NSb6F6hk9A1ZlT

.. 但是当我检查 header 中此服务 POST 的内容时,看起来令牌的最后部分是用 some[=35 重新编码的=] 我无法弄清楚的编码。我已经看到我只需要替换特定字符(例如 \ 和 + 等)的实现,但这看起来很不一样。

生成:<strong>5ZqnYysbEeeA6gBQVpxYnwkYlUcIWHa0JWMJtmBDIkwZyiV\x2fK0NSb6F6hk9A1ZlT</strong>

post'ed:<strong>5ZqnYysbEeeA6gBQVpxYn1AODXVDsrilvonK6nxRNB9oBkgxDhOXjgINDkEVusHB</strong>

问:令牌的最后一部分在 5ZqnYysbEeeA6gBQVpxYn... 之后发生了什么?是否可以使用 beanshell/jsr 等在 JMeter 中使用相同类型的编码?

根据 Key management in Microsoft Dynamics CRM 文章:

Key regeneration and renewal

CRM ticket keys are automatically generated and renewed and then distributed, or deployed, to all computers running Microsoft Dynamics CRM or running a specific Microsoft Dynamics CRM Server 2013 role. These keys are regenerated periodically and, in turn, replace the previous keys. By default, key regeneration occurs every 24 hours.

因此请确保您的录制和重播在 24 小时内完成。

或者,您可以要求您的 CRM 管理员 temorarily disable this token check 通过将以下注册表项的值更改(或创建)为 1:

HKLM>Software>Microsoft>MSCRM>IgnoreTokenCheck (Dword)=1

使用 JMeter

查看 How to Load Test CSRF-Protected Web Sites article for more information on load testing XSRF protected applications