Способ защиты данных определяется настройками интеграции. Для уточнения информации по настройке Вашей интеграции или запроса для установления нужных настроек необходимо написать на почту alfa_api@alfabank.ru. При запросе установления настроек необходимо сообщить способ защиты (подпись или подпись с шифрованием), а также алгоритм (RSA или ГОСТ).
Для подписания сообщения необходимо предварительно выпустить сертификат в УЦ Альфа-Банка, используя сервис "Электронная подпись". Если Вы уже выпускали сертификат - повторно выпускать не нужно.
Подписание XML
Сформируйте электронную подпись в cоответствии с XMLDsig. Необходимо использовать:
-
•
-
•метод канонизации: Canonicalization Method Algorithm
-
•алгоритм подписи: Signature Method Algorithm
-
•метод трансформации: Enveloped Signature Transform (Transform Algorithm)
-
•метод трансформации: Exclusive XML Canonicalization (Transform Algorithm)
-
•алгоритм хэширования: Digest Method Algorithm
1<?xml version="1.0" encoding="UTF-8"?>
2<Request>
3 <XmlElementName1>XmlElementValue1</XmlElementName1>
4 <XmlElementName2>XmlElementValue2</XmlElementName2>
5 <ds:Signature xmlns="http://www.w3.org/2000/09/xmldsig#" Id="sigID1">
6 <ds:SignedInfo>
7 <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
8 </ds:CanonicalizationMethod>
9 <ds:SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256">
10 </ds:SignatureMethod>
11 <ds:Reference URI="">
12 <ds:Transforms>
13 <ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature">
14 </ds:Transform>
15 <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
16 </ds:Transform>
17 </ds:Transforms>
18 <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#sha384">
19 </ds:DigestMethod>
20 <ds:DigestValue>PFofJkUS6p/00mh0rGBsixzt/IrT0VOQRD3kvQkD3TyPEle2o1Ba7NCMR/ATvzQF</ds:DigestValue>
21 </ds:Reference>
22 </ds:SignedInfo>
23 <ds:SignatureValue>wxBWAIhbSFENVHMdLJ051lZGlhEUbIPPo9W/4BrBjOtNo/cfu9MxCLv7GSqVz0Kr6g6L6+k9q+hu
24CVAebijxjUmub3KUTx7GPq6SjQsrFo5sZmZg73eyLqiEM3LFux4PJEXeVSadzOpQGBg0ygDZ83gU
25OXY/YJcwSRcBEQpNp+62ot1ua90QBJzNApZkWtxwSlBvGS0SYmh+6vg0yFbc60h231Q4bBSdWJcD
26vaAIIayCwbt3oUm2simOGvc/adfz4vn6xiLQCAEDsyD0iK9m9WssqIZKepe8wI0kJCC9CwHx6Zxg
27Geys+G77rQvskKmN13EX3sokbLAnzb4cWnwZVQ==
28</ds:SignatureValue>
29 <ds:KeyInfo>
30 <ds:X509Data>
31 <ds:X509Certificate>MIIGATCCBLWgAwIBAgITYQADiqqgHk1/OTmNhAABAAOKqjBBBgkqhkiG9w0BAQowNKAPMA0GCWCG
32SAFlAwQCAwUAoRwwGgYJKoZIhvcNAQEIMA0GCWCGSAFlAwQCAwUAogMCAUAwWzELMAkGA1UEBhMC
33UlUxEjAQBgNVBAoTCUFsZmEtQmFuazELMAkGA1UECxMCSVQxKzApBgNVBAMTIkFsZmEtQmFuayBJ
34c3N1aW5nIFN1Ym9yZGluYXRlIENBIDEwHhcNMjMwNzI4MTUxMTE0WhcNMjUwNjE5MTE0ODA2WjCB
35pzEXMBUGA1UEKgwO0JXRgNC80L7Qu9Cw0LkxGzAZBgNVBAQMEtCa0YPQtNGA0Y/QstGG0LXQsjEL
36MAkGA1UEBhMCUlUxOzA5BgNVBAMMMtCa0YPQtNGA0Y/QstGG0LXQsiDQldGA0LzQvtC70LDQuSDQ
37mNCz0L7RgNC10LLQuNGHMSUwIwYJKoZIhvcNAQkBFhZVc2VyNTA0QHBvY2h0b2Noa2EuY29tMIIB
38IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ZM3Ztf+Ro4e64R8yI4qDV/zLdJjUCx5WNBx
396gcp1pJ4uhQixw+ASy4Oxu0Xp7OxmpXtvDJFi4kr6QymtzMNYqJA3GZk85p+Iobkwo5zHKyBf0tX
405HwmFWjJx9CqZKp8iZAFw9nqz1uqronxyzTgULPL6eE9igVSzaVf5msV8sXXfl87guVHF+Ph18hs
41dng1WiCJ7Mi14ETdI9O0R5eJiPZztLIHRnXuBtB1Oa1YiiWtvkZNnpLKONwxljdTZlH7h7KfaXUw
42W3kX8r0p7jvO7gNhMXvOSK1JPXWevmBHrjONVlG2atWoxT2IHs2ZDz+BLxgSwLc9NIQK+qKhIMfA
431wIDAQABo4ICBzCCAgMwJQYDVR0RBB4wHIILZXhhbXBsZS5jb22CDSouZXhhbXBsZS5jb20wHQYD
44VR0OBBYEFGbczU3B6IZhHwKsC8ODg8r4xi3nMB8GA1UdIwQYMBaAFMkXMx6bqZSglhhLbnFMgdvp
45c/5lMIG7BgNVHR8EgbMwgbAwga2ggaqggaeGOWh0dHBzOi8vdGVzdGptYi5hbGZhYmFuay5ydS9k
46aXN0cnBvaW50L0FsZmEtQmFua19TQ0ExLmNybIYwaHR0cDovL3Zsa3dzNjo5MDgxL2Rpc3RycG9p
47bnQvQWxmYS1CYW5rX1NDQTEuY3JshjhodHRwOi8vdGVzdGptYi5hbGZhYmFuay5ydS9kaXN0cnBv
48aW50L0FsZmEtQmFua19TQ0ExLmNybDCB2wYIKwYBBQUHAQEEgc4wgcswRQYIKwYBBQUHMAKGOWh0
49dHBzOi8vdGVzdGptYi5hbGZhYmFuay5ydS9kaXN0cnBvaW50L0FsZmEtQmFua19TQ0ExLmNydDA8
50BggrBgEFBQcwAoYwaHR0cDovL3Zsa3dzNjo5MDgxL2Rpc3RycG9pbnQvQWxmYS1CYW5rX1NDQTEu
51Y3J0MEQGCCsGAQUFBzAChjhodHRwOi8vdGVzdGptYi5hbGZhYmFuay5ydS9kaXN0cnBvaW50L0Fs
52ZmEtQmFua19TQ0ExLmNydDBBBgkqhkiG9w0BAQowNKAPMA0GCWCGSAFlAwQCAwUAoRwwGgYJKoZI
53hvcNAQEIMA0GCWCGSAFlAwQCAwUAogMCAUADggEBAHTjDmxldqWkRgpT5gXKuIzyqIHjlDZMMfah
54cWBxqWV9XC46bcPx8gvlpzb8N+oK+X6AqDt3+vneAiGQn8iNs9ajDKtes9ulZzMUJBwzwv26DsiI
553s4/0phypAcqQVHJQxvU+rdrh5FgqJcNZsuOtOaJhiO/i/3J7hoL/oxVwSk+lX4m+X5u76/Vdqk9
56ydKXNNnzMi12F4FvD+igTrezzLjPHQRx5vLY0cWwLEdBxLJmBwd1u7EBT3j+v9Pyh0pTzXsJC0BY
571BIt6VOh6QGKGTKT3cBB6zbIOrY7UTOkYdCqtyB9vhayAyti3aO37PANUQ7dUwUEZyf64/D4/HRl
58hqI=
59</ds:X509Certificate>
60 </ds:X509Data>
61 </ds:KeyInfo>
62 </ds:Signature>
63</Request>
Если добавить заголовки Content-Type: application/xml + X-Request-ChannelSecurity: NO и отправить запрос, то подпись запроса не будет проверяться.
Если добавить заголовки Content-Type: application/xml + X-Request-ChannelSecurity: SIGNATURE и отправить запрос, то подпись запроса будет проверяться.
Если подпись валидна - запрос обрабатывается, если невалидна - Банк определяет запрос как неподлинный и возвращает ошибку.
Проверка подписи XML
Используйте открытый ключ сертификата для проверки подписи, сравнивая вычисленное хеш-значение SignedInfo с декодированным значением подписи SignatureValue , используя алгоритм, указанный в SignatureMethod .
1<?xml version="1.0" encoding="UTF-8"?>
2<Response>
3 <XmlElementName1>XmlElementValue1</XmlElementName1>
4 <XmlElementName2>XmlElementValue2</XmlElementName2>
5</Response>