SOAPに問題があります。私のシステムには、人が債務者であるかどうかをチェックする機能があります。それは長い間うまくいたが、突然停止した。 今、私は、この関数を呼び出すしようとすると、私はこのエラーを取得:ユーザー名パスワードトークンのSOAP認証に失敗しました
Error 500 com.sun.xml.wss.impl.WssSoapFaultException: Authentication of Username Password Token Failed; nested exception is com.sun.xml.wss.XWSSecurityException: com.sun.xml.wss.impl.WssSoapFaultException: Authentication of Username Password Token Failed
これは私のコントローラです:
public function actionQuery($client, $loan)
{
$client = Client::model()->findByPk($client);
$loan = Loan::model()->findByPk($loan);
list($success, $exists, $debtorsInfoPersonId) = $client->getDebtorInfo($loan->add);
if ($success) {
Report::set(Report::SUCCESS, Yii::t('app', 'Data received'));
}
if ($exists) {
Report::set(Report::NOTICE, Yii::t('app', 'Debtor exists'));
} else {
Report::set(Report::NOTICE, Yii::t('app', 'Debtor not exists'));
}
$url = Yii::app()->request->getParam('returnUrl', null);
$this->redirect($url != null ? base64_decode($url) : ['view', 'id' => $model->debtorPerson->getPrimaryKey()]);
}
そして、これは石鹸でコンポーネントです。私は問題があるcheckoにdie("error")
を使用する場合
private function generateWSSecurity($user, $password)
{
// Creating date using yyyy-mm-ddThh:mm:ssZ format
$tm_created = gmdate('Y-m-d\TH:i:s\Z');
$tm_expires = gmdate('Y-m-d\TH:i:s\Z', gmdate('U') + 180);
// Generating, packing and encoding a random number
$simple_nonce = mt_rand();
$encoded_nonce = base64_encode(pack('H*', $simple_nonce));
// Compiling WSS string
$passdigest = base64_encode(pack('H*',
sha1(pack('H*', $simple_nonce) . pack('a*', $tm_created) . pack('a*', $password))));
// Initializing namespaces
$ns_wsse = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd';
$ns_wsu = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd';
$password_type = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest';
//$password_type = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0.pdf';
$encoding_type = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary';
//$encoding_type = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0.pdf';
// Creating WSS identification header using SimpleXML
$root = new \SimpleXMLElement('<root/>');
$security = $root->addChild('wsse:Security', null, $ns_wsse);
$timestamp = $security->addChild('wsu:Timestamp', null, $ns_wsu);
$timestamp->addAttribute('wsu:Id', 'Timestamp-28');
$timestamp->addChild('wsu:Created', $tm_created, $ns_wsu);
$timestamp->addChild('wsu:Expires', $tm_expires, $ns_wsu);
$usernameToken = $security->addChild('wsse:UsernameToken', null, $ns_wsse);
$usernameToken->addChild('wsse:Username', $user, $ns_wsse);
$password = $usernameToken->addChild('wsse:Password', $passdigest, $ns_wsse);
$password->addAttribute('Type', $password_type);
$nonce = $usernameToken->addChild('wsse:Nonce', $encoded_nonce, $ns_wsse);
$nonce->addAttribute('EncodingType', $encoding_type);
$usernameToken->addChild('wsu:Created', $tm_created, $ns_wsu);
// Recovering XML value from that object
$root->registerXPathNamespace('wsse', $ns_wsse);
$full = $root->xpath('/root/wsse:Security');
$auth = $full[0]->asXML();
return $auth;
}
は、すべてがreturn $auth;
まで正常に動作します。この復帰後にエラーが表示されます。私は間違って何を手がかりですか?