Archive for the ‘php’ tag
Развертывание Symfony приложения с Capistrano и Subversion
Одним важных процессов в разработке web-приложений, в том числе и написанных с использованием фреймворка Symfony, является деплоймент или разворачивание и обновление проекта на удаленном сервере. Для выполнения подобных действий существует множество средств и одним из самых популярных является Capistrano. Он достаточно прост в освоении, очень гибок в настройке и функциональный богат, но по-умолчанию настроен для Ruby on Rails приложений.
Настроить Capistrano для развертывания Symfony приложений не составляет особого труда, так как все этапы стандартного процесса с легкостью можно переопределить.
В корне проекта запускаем capify . и начинаем настраивать config/deploy.rb.
PHP Soap client и WS-Security
Для того, чтобы отправить soap-запрос с цифровой подписью, можно конечно использовать extension WSF и переделывать все свои запросы, основанные на SoapClient.
Но есть и вариант попроще с использованием библиотеки soap-wsse:
class SecuredSoapClient extends SoapClient {
public function __doRequest($request, $location, $action, $version, $one_way = 0) {
$doc = new DOMDocument('1.0');
$doc->loadXML($request);
$pem = file_get_contents('client.pem'); // файл с сертификатом и private ключом
$wsse = new WSSESoap($doc);
// добавляем в запрос сертификат
$bin_token = $wsse->addBinaryToken($pem);
// получаем private ключ для подписи
$sec_key = new XMLSecurityKey(XMLSecurityKey::RSA_SHA1, array('type' => 'private'));
$sec_key->loadKey($pem);
// добавляем цифровую подпись в запрос
$wsse->signSoapDoc($sec_key);
// добавляем в цифровую подпись ссылку на сертификат
$wsse->attachTokentoSig($bin_token);
return parent::__doRequest($wsse->saveXML(), $location, $action, $version, $one_way);
}
}
Используя класс SecuredSoapClient вместо SoapClient, запросы будут отправляться уже с цифровой подписью.