我的JMeter / ADFS设置缺少什么?

时间:2019-01-03 19:32:45

标签: jmeter adfs

在Active Directory联合服务设置中,我无法让JMeter从Azure AD获得授权令牌

我的组织具有使用Azure AD的ADFS设置。我可以完成登录过程并获取MSISAuth和MSISAuthenticated cookie。以我的理解,下一步是获取一个“令牌”,并将其与我对服务提供商应用程序的下一个答复一起提交。当我使用JMeter记录时,这似乎是通过重定向(代码,id_token,状态,会话状态)使用4个变量完成的。我相信代码是FlowToken,session_state是sessionId,状态是我可以传递的先前请求中的变量(称为状态)。但是,我认为“代码”应该是名为“ ESTSWCTXFLOWTOKEN”的cookie的内容。当我在Fiddler中运行流程时,我能够看到此cookie。但是,JMeter似乎并未在调试采样器中注册此cookie。我已经尝试过在JMeter中使用Cookie策略(尝试的设置是标准和netscape),但是无论哪种情况,我都可以看到其他cookie,但找不到我想要的cookie。

通过Fiddler和Base64浏览ESTSWCTXFLOWTOKEN cookie的内容,我确信授权内容在此cookie中,但是JMeter似乎没有收到此cookie。

我尝试过的其他事情是在请求中设置Reg Ex提取器,以在Fiddler的“响应标题”中返回cookie。

非常感谢您的帮助。


编辑1:这是Fiddler中记录的cookie:

Cookie: ESTSSSOTILES=1;
 AADSSOTILES=1;
 wlidperf=FR=L&ST=1539195933861;
 stsservicecookie=ests;
 AADSSO=NA|NoExtension;
 ESTSSC=00;
 esctx=AQABAAAAAAC5una0EUFgTIF8ElaxtWjTTDkq2CH5PgAP0je6-RuVjdH_iStgCskVhi_rErqrj1tZ2uUin7y1uBwf2Gu2bPMwYuaaL03c-kfoiTfjyfNwfIFATiyvUgtU_4x-R0ugEbKddKU5pFMuoMyw4oiYDqTmMsSLd_PWbJrYhOq3FGv8srtpG3SC2cipDpBhn1a52rEgAA;
 CkTst=G1546370175959;
CCState=Q2xzS1MyRnVhM1Z5TG1Sb1lYZGhiaTFqYjI1MGNtRmpkRzl5UUdSemN5NWpZUzVuYjNaOFlYQndPak5sWVdWbVlqYzRMVFkwWm1VdE5HUXlZeTFpTkdJMkxUQTRaRE15TjJVeFpqTm1OQklCQUJvSkNVRnhaRzVpY3RaSUVoSUtFRTZtYWhsbzhmQkJteGZvM2YxRVFnMGFDUWxCenpRaFkzTFdTQT09;
 x-ms-gateway-slice=prod;
 SignInStateCookie=CAQABAAIAAAC5una0EUFgTIF8ElaxtWjTVF9AufyV08LEZ2xQxBiACiowK6kS3t9ij-1TgW1ZxKKWb-RQa60RKNOJxlPY1kuDB1daVGkjSy0FOWTXt5l74CAA;
 ESTSAUTHLIGHT=+;
 ESTSLOGOUTREDIRECT=MDtOQTtUcnVl;
 ESTSAUTHPERSISTENT=AQABAAQAAAC5una0EUFgTIF8ElaxtWjTzpprE-kUh2_NGHt3R3PUdiQLdju2ib1Zrp5m9o2lCrcNH8rIXzaaRQLsbrohpBFtGMsr8S02Szhu254f7dg1StCZWPKW-AoDMvoQ-uNCLzjuiEh_jRA7FekpQnpVfgwudXIzybINM19iHSxRBgOUpfwUMCr8OPOqXC2he_Q1q_bmd0OGoRbh9-L3QYw-aISL52cOhJAEDXKru_BprqoDUhXArAQ-UG4Vrkqzlzylz0F__8Pz__CYio4GmyFjDeMv4ak1l6znB_5YELZXsvYwGM-v27ynQ04FMjmGsK8G2sVC4A43aUiomsKtaTYVz5Xk1GgZeLnsKDfA-nHF1nmx85FZOX-CNI6IoQf30xx7ulcrpVW3myNtkhEA-49RAlkc03eQnxWcmNyYZY7CBoXHamor0Lftf4ceoWgQsWdWcNFvmN3J-duWSJ1NMD_gggclFZhqvzfNPk93-Q08q9WuEZE2uDJEddHm-Q9KnXhu0BsiiNCLhaIh7-mpGUBTJ0022QWdz2fJihNr9N5tegbAs7mKspDw6EmGOHsincVYuXSb35l669bWI7QcKyBDF-ZKCiowPrEg9aLaxx3MkF5pW8asiUEJiATWmyiirdQIPI3QXsp3Zqg8rnVckrpK5AAibmyqDa8g-QO_VcVv9ud7ZNrvBn6THnSblhITa9JEfDwtLmrk14-lN41RUHxZBczHjPws6IQs4cKlkSdc2B7_AFLefWk6u6eh-rzFLo29mAha6KONol57C0vYifIPrPlUS05GXdYUwLehrPfTMbfcmKYKQI-7lcR8LUFA3FFywnNi7e-p2WqjVlHaaunbgs7tUm0IDaMgJDcqpyaYNjF67pq1oXBZhuu3CyA2QFdwVVsgACAAQAAQAgAA;
 ESTSAUTH=AQABAAQAAAC5una0EUFgTIF8ElaxtWjTZ-qXDh00r1SNg9EnuNoKCV9INgj2RokuKa-kB7FuKmFt38i57Ul5C6ug4S0T6DwlsYjQgyi3iXbabJpLS-le29w5JMMzjNS9hc_TgJlyHCHuu0xkVKKyN7BZTTN-zgkBfJfW-8nDwfDM3FRLUWNQ1cKjYz17Q-dfvb0UNEU-_uIpsE4ejvQGEEbLugUax_uBZXIZYGXWPqRHB5hqbM-J0yAAIABAACAAAAA;
 buid=AQABAAEAAAC5una0EUFgTIF8ElaxtWjTFwK_PjmSKn6e7dFnjsY0ExcPKgwr76peeUbi0x9Mo4qu2WmVuQEo3JnQzBRdBmU-kEMxLQABLZnpXbx9w4zWzINPYAsyb2aNtAl_1rI_0LPlU4PNRMs9Qp75tJrpcm2NO5uBas5kUWz90czXmqrb5DaQX_insNi_QEFgFg93ZncgAA;
 fpc=ATuJtRJ2OaFJuQS3QicZ6etdyZR6AQAUbJAwY3LWCA;
 ESTSWCTXFLOWTOKEN=AQABAAEAAAC5una0EUFgTIF8ElaxtWjTl2xrzdxreg0klb7F7e5-ZnQPSWLczT4ujAuKCsyn-7-E_ArakdCZFQaMR4-RXDXbfXjOXC45fPPrR-aANusp8ytnDJSRUCSMEr80hwCbD2Yrp72LYfHZGRytvkvU5AxubKmZMooYp9sNIOnuyzfTAQ34E4ytOdbDFkJ4HYfec2_5coDrE0WMNPuveo8Au0haqqbYqM7PVqdkaafH72Og3jApeY5N_pN_sh3KauaiiJOHWnE8WrJmEQl-FF2SEux2bjQJzCwnzzNg_ZF4wc7eMtUdpfrm6JxMT1lLdAokSNXLHLEW_0VivncRwkjdZHrZB3Iu-6MCGZtNZVXwO8sD6c5I5l83bHD24j8a_AunW8qkJgb142mSCcBE0v0mBDUBIAA

来自JMeter的相同请求: 0个饼干!

1 个答案:

答案 0 :(得分:0)

我不认为您会得到ADFS can have many faces这样的全面答案:

,并且至少在不执行相关操作的情况下,它们实际上都无法记录和重放。您需要确定应用程序的底层身份验证实现,然后根据此信息配置JMeter进行授权,说明将有所不同。


关于您自己的问题(JMeter不在Cookie管理器中存储某些cookie),我可以想到2种可能的选择:

  1. cookie格式错误,并且由于某些不一致,JMeter只是拒绝了它。如果是这种情况,您可以使用以下两种变体:

    • 提出产品问题以在应用程序侧进行修复。可以通过您的项目issue tracking system
    • 完成
    • 告诉JMeter不要检查cookie,而无论standard compliance是如何“信任”它们。可以通过在 user.properties 文件

      中添加下一行来完成
      CookieManager.check.cookies=false
      

      需要重新启动JMeter才能拾取该属性。请参阅HTTP Cookie Manager Advanced Usage - A Guide文章,以了解有关在JMeter测试中管理cookie的更多信息。

  2. 该Cookie是在客户端端生成的(它并非真正来自服务器)。在这种情况下-您将必须根据这些codeid_tokenstatesession_state生成Cookie,并使用__base64Encode() function(函数不是JMeter发行版的一部分,您需要使用JMeter Plugins Manager

  3. 进行安装