0

我正在尝试让刮板在两个因素身份验证(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。

4

1 回答 1

1

https://example.com/cosign.cgi ” - 可能是 DSA (CoSign) API 之上的包装器。请揭示背后的代码。关于如何在登录时使用 2 因素身份验证:有关 DSA API 的完整信息,请参阅DSA 程序员指南DSA 开发人员中心。DSA v8.2+ 中引入了 RESTFull API。这是一个例子:

<?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 签名者帐户。在正文“signPassword”字段中插入 OTP。

将https://cosign:8081/sapiws/v1/digital_signature中的cosign占位符替换为您正确公开的设备 DNS。

于 2017-05-14T08:57:01.437 回答