使用双因素身份验证进行goutte抓取(duo)

时间:2017-05-13 02:45:21

标签: php cookies guzzle goutte cosign-api

我试图让刮刀工作在双因素身份验证(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。

1 个答案:

答案 0 :(得分:1)

https://example.com/cosign.cgi” - 可能是DSA(CoSign)API之上的包装器。请透露背后的代码。关于如何在登录时使用双因素身份验证:有关DSA API的完整信息,请参阅DSA Programmer GuideDSA 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。