
Technikai részletek
A webszolgáltatással kapcsolatos technikai részletek leírása
A teszt és éles rendszerre nem kell regisztrálni, a bizosító webszolgáltatásait
a felhasználó üzletkötő (JUST) kódjával lehet használni.
1. tesztelés a teszt környezetben - 11111111 kód régóta létezik tesztelésre,
ill. saját KozvetitoKod is használatható - tetszés szerint használható adatellenőrzésre,
minta tanúsítvány készítésre és biztosítás megkötés tesztelésére - csak néhány kötés
történjen egyszerre, mert gyenge vason fut (tehát sok ezres hívást nem tud kiszolgálni)
2. valós biztosítás kötés az éles környezetben - saját közvetítő kóddal történő
biztosítás kötés, melyben az ügyfél tényleges adatai (többek között valós email
címe) szerepeljen
Tűzfal authentikációs, és soap aláírás példák
C#
Visual Studio-ban Web-referenciaként hozzáadjuk a
https://testcalculate.generali.hu/CalculateService.svc-t.
Használat:
using SimpleUniversalCaller.CalculateService;
using System.Security.Cryptography.X509Certificates;
using System.Xml;
namespace SimpleUniversalCaller
{
internal class Program
{
private static string JustCode = "11111111";
static void Main(string[] args)
{
CallUniversal();
}
/// <summary>
/// Universal hívás
/// </summary>
/// <returns></returns>
private static XmlNode CallUniversal()
{
var calculateService = new CalculateServiceClient();
//Kliens oldani tanúsítvány betöltése pl. tanúsítvány tárolóból
calculateService.ClientCredentials.ClientCertificate.SetCertificate(StoreLocation.LocalMachine, StoreName.My, X509FindType.FindBySubjectName, "testcalculate");
var document = new XmlDocument();
document.Load("1_Kalkulacio_auto_ffi-request.xml");
//Meghívjuk a szolgáltatást
var response = calculateService.UniversalWithXmlDocument(JustCode, document);
return response;
}
}
}
Java
public static void main(String [] args)
{
String alias = Alias to my PK;
char[] pass = MyPassword.toCharArray();
try
{
KeyStore ks = KeyStore.getInstance(Windows-MY);
//ks.load(null, null); //így is
meghívható
ks.load(null, pass);//a passwordot prompt
ablakban fogja kérni
Provider p = ks.getProvider();
Signature sig = Signature.getInstance(SHA1withRSA,p);
PrivateKey key = (PrivateKey) ks.getKey(alias,
pass);
sig.initSign(key);
sig.update(Testing.getBytes());
sig.sign();
}
catch (Exception e)
{
System.err.println(e.toString());
}
}
PHP
I. Certificate készítése
openssl.exe pkcs12 -in alkusz.pfx -out
alkusz.pem
II. Szükséges PHP kiterjesztések
extension=php_curl.dll extension=php_openssl.dll extension=php_soap.dll extension=php_xmlrpc.dll
III. PHP mintakód
Include fileok:
XMLSecurityKey.php
XMLSecurityDSig.php
XMLSecEnc.php
XPath.php
WSASoap.php
WSSESoap.php
WSSESoapServer.php
client.php
<?php
$libs_dir = dirname(__FILE__) . '/lib/';
require $libs_dir . '/XMLSecurityKey.php';
require $libs_dir . '/XMLSecurityDSig.php';
require $libs_dir . '/XMLSecEnc.php';
require $libs_dir . '/Utils/XPath.php';
require $libs_dir . '/WSASoap.php';
require $libs_dir . '/WSSESoap.php';
require $libs_dir . '/WSSESoapServer.php';
use RobRichards\WsePhp\WSSESoap;
use RobRichards\XMLSecLibs\XMLSecurityKey;
define('PRIVATE_KEY', 'D:\\tanusitvany.pem'); //Saját tanúsítványt kell megadni
define('PRIVATE_KEY_PASSWORD', '12345678'); //Tanúsítványhoz tartozó jelszót kell megadni
define('USER_ACCOUNT', '11111111'); //JUST kód - teszt környezetben használható az '11111111'
class XMLSOAP extends SOAPClient {
function __doRequest($request, $location, $action, $version, $one_way = FALSE) {
$doc = new DOMDocument('1.0');
$doc->loadXML($request);
$objWSSE = new WSSESoap($doc, false);
$objWSSE->signBody = false;
$objWSSE->addTimestamp();
$objKey = new XMLSecurityKey(XMLSecurityKey::RSA_SHA1, array('type' => 'private'));
$objKey->passphrase = PRIVATE_KEY_PASSWORD;
$objKey->loadKey(PRIVATE_KEY, true);
$options = array("insertBefore" => false);
$objWSSE->signSoapDoc($objKey, $options);
$token = $objWSSE->addBinaryToken(file_get_contents(PRIVATE_KEY));
$objWSSE->attachTokentoSig($token);
$xml = $objWSSE->saveXML();
print $xml;
return parent::__doRequest($xml, $location, $action , $version, $one_way);
}
}
try {
$url = 'https://testcalculate.generali.hu/CalculateService.svc?wsdl';
$client = new XMLSOAP($url,
array(
'trace' => true,
'exceptions' => true,
'encoding'=> 'UTF-8'
)
);
//HelloWorld meghívása
print_r($client->HelloWorld());
//Kérés összeállítása
$params = array(
"UserAccount" => USER_ACCOUNT,
"Request" => array(
"UniversalDocument" => array(
"HEAD" => array("PRODUCTNAME" => "CASCO_KOMPLETT"),
"INPUTS" => array(
"VARIABLE" => array(
"id" => "JarmuFajtaKod",
"VALUE" => "1"
)
),
"OUTPUTS" => array(
"VARIABLE" => array(
"id" => "ExtraKod",
"function" => "CHOICE",
"VALUE" => null
)
)
)
)
);
//UniversalWithXmlDocument hívása az összeállított kéréssel
print_r($client->UniversalWithXmlDocument($params));
}
catch (SoapFault $fault) {
print_r('Hiba! ' . $fault);
}
?>