Способ защиты данных определяется настройками интеграции. Для уточнения информации по настройке Вашей интеграции или запроса для установления нужных настроек необходимо написать на почту alfa_api@alfabank.ru. При запросе установления настроек необходимо сообщить способ защиты (подпись или подпись с шифрованием), а также алгоритм (RSA или ГОСТ).
Для подписания сообщения необходимо предварительно загрузить сертификат, используя следующий метод. Если Вы уже загружали сертификат, используя данный метод - повторно выполнять эту операцию не нужно.
Подписание XML
Сформируйте электронную подпись в cоответствии с XMLDsig. Необходимо использовать:
-
•
-
•метод канонизации: Canonicalization Method Algorithm
-
•алгоритм подписи:
urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256 -
•метод трансформации: Enveloped Signature Transform (Transform Algorithm)
-
•метод трансформации: Exclusive XML Canonicalization (Transform Algorithm)
-
•алгоритм хэширования:
urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256
1<?xml version="1.0" encoding="UTF-8"?>
2<Request>
3 <XmlElementName1>XmlElementValue1</XmlElementName1>
4 <XmlElementName2>XmlElementValue2</XmlElementName2>
5 <ds:Signature xmlns:ds="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="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256">
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="urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256"/>
19 </ds:DigestMethod>
20 <ds:DigestValue>q78yoPNf7grtP/yf9XNZwtxCnn9h80FvORe/Zu70Yvk=</ds:DigestValue>
21 </ds:Reference>
22 </ds:SignedInfo>
23 <ds:SignatureValue>ESXSfYUqFwMkngNQ54S4+qRNpomGuo62L8ufbZDcbgLzDgprGKi3N2PDzM8kS004MDpm+3Zjvnl/gk7uiqQCzw==</ds:SignatureValue>
24 <ds:KeyInfo>
25 <ds:X509Data>
26 <ds:X509Certificate>MIIPFzCCDsSgAwIBAgIRBpr44wAlsg6pTg7qS9+X8scwCgYIKoUDBwEBAwIwggELMRgwFgYFKoUDZAESDTEwMjc3MDAwNjczMjgxGjAYBggqhQMDgQMBARIMMDA3NzI4MTY4OTcxMQswCQYDVQQGEwJSVTEYMBYGA1UECAwPNzcg0JzQvtGB0LrQstCwMRUwEwYDVQQHDAzQnNC+0YHQutCy0LAxKjAoBgNVBAkMIdCj0LsuINCa0LDQu9Cw0L3Rh9C10LLRgdC60LDRjyAyNzEPMA0GA1UECwwG0KPQmNCRMSEwHwYDVQQKDBjQkNCeINCQ0JvQrNCk0JAt0JHQkNCd0JoxNTAzBgNVBAMMLNCi0JXQodCiINCj0KYgMi4wINCQ0J4gItCQ0JvQrNCk0JAt0JHQkNCd0JoiMB4XDTI0MTExMTEzNDAwMVoXDфTMyMDMxNTA4MjMwOFowggJjMRcwFQYFKoUDZAQMDDAwNzcyODE2ODk3MTE/MD0GA1UEKgw20KHQtdGA0YLQuNGE0LjQutCw0YIt0JLRgtC+0YDQvtC5INCh0L7RgtGA0YPQtNC90LjQutCwMSYwJAYDVQQEDB3QotC10YHRgtC+0LLRi9C5LdCS0YLQvtGA0L7QuTEWMBQGBSqFA2QDEgs0NzY3NzQ4NDE1ODFJMEcGA1UECQxAMTA3MDc4LCDQsy4g0JzQvtGB0LrQstCwLCDRg9C7LiDQmtCw0LvQsNC90YfQtdCy0YHQutCw0Y8sINC0LiAyNzEaMBgGCCqFAwOBAwEBEgw1MjQ0ODE3OTMzMTQxGDAWBgUqhQNkARINMTAyNzcwMDA2NzMyODFHMEUGA1UEDAw+0KHQuNGB0YLQtdC80L3Ri9C5INCw0YDRhdC40YLQtdC60YLQvtGAINC90LDQv9GA0LDQstC70LXQvdC40Y8xLDAqBgkqhkiG9w0BCQEWHXRydXN0Y29yZV9zdXBwb3J0QGFsZmFiYW5rLnJ1MQswCQYDVQQGEwJSVTEVMBMGA1UECAwM0JzQvtGB0LrQstCwMRUwEwYDVQQHDAzQnNC+0YHQutCy0LAxIzAhBgNVBAoMGtCQ0J4gItCQ0LvRjNGE0LAt0JHQsNC90LoiMVYwVAYDVQQLDE3QlNC10L/QsNGA0YLQsNC80LXQvdGCINGA0LDQt9GA0LDQsdC+0YLQutC4INGG0LjRhNGA0L7QstGL0YUg0YHQtdGA0LLQuNGB0L7QsjEXMBUGA1UEAwwOMnRydXN0Y29yZS0yNTYwZjAfBggqhQMHAQEBATATBgcqhQMCAiQABggqhQMHAQECAgNDAARAlBCZ9BS4/QF3WuEYP7kmjSQLJAbpYezzDOQZNLzZq/G/4FbAGC5dD00xJzzih6o/duyAFQkPFmKPPrhEfKacJKOCCp4wggqaMA4GA1UdDwEB/wQEAwID+DAfBgkrBgEEAYI3FQcEEjAQBggqhQMCAi4ACAIBAQIBADAdBgNVHQ4EFgQU1LPWWhT+ybiXm3qye09pvekYJ9YwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMCcGCSsGAQQBgjcVCgQaMBgwCgYIKwYBBQUHAwIwCgYIKwYBBQUHAwQwggPbBggrBgEFBQcBAQSCA80wggPJMD4GCCsGAQUFBzABhjJodHRwOi8vdGVzdC11YzIubW9zY293LmFsZmFpbnRyYS5uZXQvb2NzcC9vY3NwLnNyZjBhBggrBgEFBQcwAoZVaHR0cDovL3Rlc3QtdWMyLm1vc2Nvdy5hbGZhaW50cmEubmV0L2FpYS8yZGIyODJiMjUwODQzNjFlNDlhOGFmN2RlMTliZTcxZmFhMjQzNzFlLmNydDBiBggrBgEFBQcwAoZWaHR0cDovL250ZXN0LXVjMi5tb3Njb3cuYWxmYWludHJhLm5ldC9haWEvMmRiMjgyYjI1MDg0MzYxZTQ5YThhZjdkZTE5YmU3MWZhYTI0MzcxZS5jcnQwYgYIKwYBBQUHMAKGVmh0dHA6Ly9udGVzdC11YzIubW9zY293LmFsZmFpbnRyYS5uZXQvYWlhLzJkYjI4MmIyNTA4NDM2MWU0OWE4YWY3ZGUxOWJlNzFmYWEyNDM3MWUuY3J0MGUGCCsGAQUFBzAChllodHRwOi8vbnRlc3QtdWMyLm1vc2Nvdy5hbGZhaW50cmEubmV0L3JhL2FpYS8yZGIyODJiMjUwODQzNjFlNDlhOGFmN2RlMTliZTcxZmFhMjQzNzFlLmNydDBlBggrBgEFBQcwAoZZaHR0cDovL250ZXN0LXVjMi5tb3Njb3cuYWxmYWludHJhLm5ldC9jYS9haWEvMmRiMjgyYjI1MDg0MzYxZTQ5YThhZjdkZTE5YmU3MWZhYTI0MzcxZS5jcnQwYgYIKwYBBQUHMAKGVmh0dHA6Ly9udGVzdC11YzIubW9zY293LmFsZmFpbnRyYS5uZXQvYWlhLzJkYjI4MmIyNTA4NDM2MWU0OWE4YWY3ZGUxOWJlNzFmYWEyNDM3MWUuY3J0MGIGCCsGAQUFBzAChlZodHRwOi8vbnRlc3QtdWMyLm1vc2Nvdy5hbGZhaW50cmEubmV0L2FpYS8yZGIyODJiMjUwODQzNjFlNDlhOGFmN2RlMTliZTcxZmFhMjQzNzFlLmNydDBiBggrBgEFBQcwAoZWaHR0cDovL250ZXN0LXVjMi5tb3Njb3cuYWxmYWludHJhLm5ldC9haWEvMmRiMjgyYjI1MDg0MzYxZTQ5YThhZjdkZTE5YmU3MWZhYTI0MzcxZS5jcnQwYgYIKwYBBQUHMAKGVmh0d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</ds:X509Certificate>
27 </ds:X509Data>
28 </ds:KeyInfo>
29 </ds:Signature>
30</Request>
Если добавить заголовки Content-Type: application/xml + X-Request-ChannelSecurity: NO и отправить запрос, то подпись запроса не будет проверяться.
Если добавить заголовки Content-Type: application/xml + X-Request-ChannelSecurity: SIGNATURE и отправить запрос, то подпись запроса будет проверяться.
Если подпись валидна - запрос обрабатывается, если невалидна - Банк определяет запрос как неподлинный и возвращает ошибку.
Проверка подписи XML
Используйте открытый ключ сертификата Банка для проверки подписи, сравнивая вычисленное хеш-значение SignedInfo с декодированным значением подписи SignatureValue , используя алгоритм, указанный в SignatureMethod . Для получения сертификата напишите на почту alfa_api@alfabank.ru
1<?xml version="1.0" encoding="UTF-8"?>
2<Response>
3 <XmlElementName1>XmlElementValue1</XmlElementName1>
4 <XmlElementName2>XmlElementValue2</XmlElementName2>
5</Response>