我正在尝试在 SustainSys 存根 IDP 页面上提交表单数据,作为自动化测试套件的一部分,该套件在不涉及浏览器的情况下模拟 SAML 登录。
我正在提交表单数据 POST 请求,但表单数据中似乎未提交表单所需的重复键。 请求如下所示:
request({
method: 'POST',
url: 'https://stubidp.sustainsys.com/{id}',
form: true,
body: {
"AssertionModel.AttributeStatements.Index": "0",
"AssertionModel.AttributeStatements[0].Type": "urn:oid:2.5.4.10",
"AssertionModel.AttributeStatements[0].Value": "Test 123",
"AssertionModel.AttributeStatements.Index": "1",
"AssertionModel.AttributeStatements[1].Type": "https://some-url.com",
"AssertionModel.AttributeStatements[1].Value": "001",
"AssertionModel.AttributeStatements.Index": "2",
"AssertionModel.AttributeStatements[2].Type": "https://some-url.com",
"AssertionModel.AttributeStatements[2].Value": "Open",
"AssertionModel.AttributeStatements.Index": "16",
"AssertionModel.AttributeStatements[16].Type": "urn:oid:2.5.4.4",
"AssertionModel.AttributeStatements[16].Value": 'Admin-Smith'
}
})
问题出在"AssertionModel.AttributeStatements.Index"
属性上,因为我用于请求的 JS 库只发送了最后一个值为16
的属性。因此,返回的 SAML 响应不正确。如何发送这些属性,以便端点正确解析它们?
看起来实际上不需要"AssertionModel.AttributeStatements.Index"
属性。 没有这些,请求就可以工作。