SUPPORT-8592. Проверка подписи маркера доступа

This commit is contained in:
Наиля Алашкова 2024-11-14 12:16:55 +03:00
parent 9e85e4e8de
commit 4fa45a1f5e
46 changed files with 1970 additions and 250 deletions

View file

@ -1,6 +1,10 @@
## Краткое описание
Модуль предназначен для подписи данных.
В модуле реализованы следующие функции:
- подпись данных
- проверка подписи маркера доступа
### Подпись данных
Приложение принимает POST-запрос по протоколу FastCGI (Content-Type: text/plain).
Подписывает строку, полученную в теле запроса.
@ -28,6 +32,35 @@ $ curl -v http://127.0.0.1:8080/sign -H "Content-Type: text/plain" -d "test"
urlSafeBase64_of_signed_string_test
```
### Проверка подписи маркера доступа
Приложение принимает POST-запрос по протоколу FastCGI (Content-Type: text/plain).
Проверяет подпись маркера доступа, полученного в теле запроса.
В ответе возвращает один из следующих статус-кодов:
- 200 OK - подпись валидна
- 401 Unauthorized - подпись невалидна (в теле ответа возвращается код ошибки от криптопровайдера)
- 500 Internal Server Error - внутренняя ошибка сервера
Пример выполнения запроса:
```
$ curl -v http://127.0.0.1:8080/verify -H "Content-Type: text/plain" -d "some_valid_access_token"
* Trying 127.0.0.1:8080...
* Connected to 127.0.0.1 (127.0.0.1) port 8080
> POST /sign HTTP/1.1
> Host: 127.0.0.1:8080
> User-Agent: curl/8.4.0
> Accept: */*
> Content-Type: text/plain
> Content-Length: 4
>
< HTTP/1.1 200 OK
< Server: nginx/1.24.0
< Date: Wed, 16 Oct 2024 09:55:46 GMT
< Transfer-Encoding: chunked
< Connection: keep-alive
<
```
## Сборка из исходников
Инструкции по сборке из исходников см. "Инструкция по сборке.md"
@ -46,8 +79,9 @@ cmake -DCONFIG_NAME=/opt/ervu-sign-module.conf ..
Приложение настраивается в конфигурационном файле, заданном на этапе сборки (по умолчанию, /etc/ervu-sign-module.conf).
- В секции **\[main\]** задать количество воркеров
worker_processes = 10 *\# значение по умолчанию: 10*
- В секции **\[main\]** задать общие настройки:
worker_processes = 10 *\# количество воркеров (значение по умолчанию: 10)*
cp_file = libcapi20.so *\# путь до файла библиотеки криптопровайдера*
- В секции **\[fcgi\]** задать настройки fcgi-сервера:
fcgi_listen_port = 9009 *\# значение по умолчанию: 9009, должно совпадать со значением в nginx.conf*
@ -55,8 +89,10 @@ fcgi_listen_host = 127.0.0.1 *\# значение по умолчанию: 127.0
fcgi_thread_pool_size = 1 *\# значение по умолчанию: 1*
- В секции **\[sign\]** задать настройки модуля подписания:
location = /sign *\# значение по умолчанию: /sign, должно совпадать со значением в nginx.conf*
cp_file = libcapi20.so *\# путь до файла библиотеки криптопровайдера*
signer_subject = signer@example.ru *\# email, ИНН, СНИЛС или любая другая строка из свойства контейнера «Субъект»*
pin = \*\*\*\* *\# пароль от контейнера*
location = /sign *\# значение по умолчанию: /sign*
sign_cert_thumbprint = sha1_thumbprint_of_signer_cert *\# SHA1 отпечаток сертификата, которым ИС подписывает секрет*
sign_cert_password = \*\*\*\* *\# пароль от контейнера*
- В секции **\[verify\]** задать настройки проверки подписи маркера доступа:
location = /verify *\# значение по умолчанию: /verify*
esia_cert_thumbprint = sha1_thumbprint_of_esia_cert *\# SHA1 отпечаток сертификата ЕСИА*