我试图让刮刀工作在双因素身份验证(Duo)到位的地方。每次我发送POST以尝试身份验证时,它都会失败并显示400(错误请求)。这是我尝试过的最新版代码:
use Goutte\Client;
$client = new Client();
$res = $client->request('POST', 'https://example.com/cosign.cgi', [
'body' => 'login=theuser&password=thepassword&service=theservice&passcode=8675309',
]);
返回的错误页面正文表明需要启用Cookie。然而,在$ client中启用了cookie。
答案 0 :(得分:1)
“https://example.com/cosign.cgi” - 可能是DSA(CoSign)API之上的包装器。请透露背后的代码。关于如何在登录时使用双因素身份验证:有关DSA API的完整信息,请参阅DSA Programmer Guide和DSA Developer Center。 RESTFull API是在DSA v8.2 +中引入的。这是一个例子:
<?php
$request = new HttpRequest();
$request->setUrl('https://cosign:8081/sapiws/v1/digital_signature');
$request->setMethod(HTTP_METH_PUT);
$request->setHeaders(array('postman-token' => 'c37705a2-4e8a-eb47-fcbe-62568507717b',
'cache-control' => 'no-cache',
'content-type' => 'application/json',
'authorization' => 'Basic YXZpdjoxMjM0NTY3OEFi'));
$request->setBody('{ "signField" : {"file":"BASE64PDFContent",
"FileType": "PDF",
"signPassword": "password",
"signPasswordType": "STRING"
}
}');
try {
$response = $request->send();
echo $response->getBody();
}
catch (HttpException $ex) {
echo $ex;
}
插入密码以登录基本授权标头中的DSA签名者帐户。将OTP插入正文“signPassword”字段。
将https://cosign:8081/sapiws/v1/digital_signature中的 cosign 占位符替换为正确公开的设备DNS。