В данной статье описывается принцип работы информационной системы «Контроль доступа к персональным данным» Министерства цифрового развития, инноваций и аэрокосмической промышленности Республики Казахстан (далее – КДП) посредством информационной системы АО «Государственное кредитное бюро» (далее - ГКБ), методы запроса данных, примеры входных и выходных SOAP-запросов, возможные ошибки.
Обратите внимание!
Для ознакомления с правилами функционирования государственного сервиса КДП просим загрузить файл ниже:
Правила функционирования государственного сервиса контроля доступа к персональным данным.
Описание сервиса PersonalDataAccessControl
При вызове веб-сервиса обязательно указываются следующие параметры:
1. Отличительное имя пользователя и пароль (организации) в HTTP Header, необходимые для базовой аутентификации. Так как коммуникация с веб-сервисами системы идет по защищенному протоколу HTTPS, то базовая аутентификация представляется безопасным решением.
2. Отличительное имя пользователя, от имени которого будет выполнена запрашиваемая операция в SOAP Header:
Http Headers: {Authorization=[Basic Отличительное имя пользователя]
SOAP Message: [Показать ответ]
1. <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:data="http://data.mtszn.scb.kz/">
2. <soapenv:Header>
3. <userId>xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</userId>
4. </soapenv:Header>
5. <soapenv:Body>
6. <data:getPersonDataAccessControl/>
7. </soapenv:Body>
8. </soapenv:Envelope>clinet
Метод getPersonDataAccessControl
Метод getPersonDataAccessControl сервиса PersonalDataAccessControl предназначен для получения уникального токена от ИС КДП – электронного ключа в виде набора определённого количества цифр и букв, предназначенного для обеспечения информационной безопасности субъекта.
Таблица 1. Состав данных запроса на получение информации [Показать ответ]
№
|
Наименование
|
Поле
|
Формат
|
Обязательность
|
Примечание
|
1
|
Номер запроса
|
requestNumber
|
xs:string
|
Да
|
Значение поля должно быть уникальным и не должно повторяться при каждом запросе.
|
2
|
ИИН субъекта
|
uin
|
xs:string
|
Да
|
Значение должно содержать 12 цифр
|
3
|
Наименование организации
|
company
|
xs:string
|
Да
|
Наименование Получателя, запрашивающего доступ к персональным данным субъекта
|
4
|
БИН/ИИН организации
|
company_bin
|
xs:string
|
Да
|
БИН/ИИН Получателя, запрашивающего доступ к персональным данным субъекта
|
5
|
Наименование организации, у которой запрашиваются данные
|
company_responsible
|
xs:string
|
Да
|
Наименование организации, у которой запрашиваются данные (Например, База мобильных граждан)
|
6
|
ФИО сотрудника из организации
|
employee_name
|
xs:string
|
Да
|
ФИО сотрудника Получателя, запрашивающего персональные данные субъекта
|
7
|
Перечень сервисов
|
access_name
|
xs:string
|
Да
|
Перечень сервисов (необходимо указывать id сервиса – MCDB_SERVICE)
|
8
|
Наименование персональных запрашиваемых по субъекту персональных данных
|
personal_data_name
|
xs:string
|
Да
|
Указывается номер мобильного телефона субъекта, который зарегистрирован на портале egov.kz в «Базе мобильных граждан».
|
9
|
Срок действия кода в миллисекундах
|
expiresIn
|
xs:int
|
Да
|
10
|
Запрос персональных данных
|
omit-sms
|
xs:boolean
|
Да
|
Запрос персональных данных полученных иным путем (при значении "true" поле "ovt"становится обязательным).
|
11
|
Токен верификации в формате JWT
|
ovt
|
xs:string
|
Да
|
заполняется если omit-sms=true
|
Таблица 2. Состав данных ответа на запрос получения информации [Показать ответ]
№
|
Наименование
|
Поле
|
Формат
|
Обязательность
|
Примечание
|
Возвращаемая информация по токену, который используется в методе сервиса «ГБД РН» getLackOfAvailabilityOfProperty
(responseData/data)
|
1
|
Статус запроса
|
status
|
xs:string
|
Да
|
Возвращаемые значения:
VALID – Доступ предоставлен;
INVALID – В доступе отказано;
PENDING – Ожидание ответа субъекта персональных данных;
TIMEOUT – Время ожидания ответа субъекта персональных данных истекло;
NOT_FOUND – По указанному в запросе ИИН отсутствует номер телефона в Базе мобильных граждан;
ERROR – Ошибка, полученная при отправке SMS.
|
2
|
Код верификации
|
code
|
xs:string
|
Да
|
Код верификации, представленный в JWT-формате (если статус VALID)
|
3
|
Публичный ключ
|
public-key
|
xs:string
|
Да
|
Публичный ключ, необходимый для проверки валидности кода
|
Пример вызова метода getPersonDataAccessControl
Если субъект дает согласие через подтверждение СМС- сообщение (по номеру 1414) в запросе из примера ниже указывается следующее: [Показать ответ]
<omit-sms>false</omit-sms>
<ovt></ovt>
Если согласие субъекта берется иным способом (Система биометрии организации, Электронно-цифровая подпись, Одноразовый пароль OTP, Бумажный носитель информации, Система Digital ID), в запросе из примера указывается следующее: [Показать ответ]
<omit-sms>true</omit-sms>
<ovt>Токен верификации в формате JWT</ovt>
Пример вызова метода getPersonDataAccessControl сервиса PersonalDataAccessControl с помощью SOAP запроса имеет следующий вид: [Показать ответ]
1. <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:data="http://data.gbd.chdb.scb.kz/">
2. <soapenv:Header>
3. <userId>xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</userId>
4. </soapenv:Header>
5. <soapenv:Body>
6. <data:getPersonDataAccessControl>
7. <requestNumber>xxxx</requestNumber>
8. <uin>БИН/ИИН</uin>
9. <company>xxxxxxxx</company>
10. <company_bin> xxxxxxxxxxxx </company_bin>
11. <company_responsible>Наименование организации</company_responsible>
12. <employee_name>ФИО</employee_name>
13. <access_name>Наименование госуслуги</access_name>
14. <personal_data_name>Номер телефона</personal_data_name>
15. <expiresIn>0</expiresIn>
16. <omit-sms>false</omit-sms>
17. <ovt></ovt>
18. </data:getPersonDataAccessControl>
19. </soapenv:Body>
20. </soapenv:Envelope>
Пример ответа на вызов метода getPersonDataAccessControl
Пример ответа на вызов метода getPersonDataAccessControl сервиса PersonalDataAccessControl с помощью SOAP запроса имеет следующий вид: [Показать ответ]
1. <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
2. <soap:Body>
3. <ns2:getPersonDataAccessControlResponse xmlns:ns2="http://data.gbd.chdb.scb.kz/" xmlns:ns3="http://bip.bee.kz/SyncChannel/v10/Types">
4. <return>
5. <response>
6. <responseInfo>
7. <messageId>xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</messageId>
8. <responseDate>2021-11-24T14:24:45.675</responseDate>
9. <status>
10. <code>1</code>
11. <message>SUCCESS</message>
12. </status>
13. </responseInfo>
14. <responseData>
15. <data xsi:type="ns3:getUserDataResponse" xmlns:ns2="http://bip.bee.kz/SyncChannel/v10/Types" xmlns:ns3="http://service.2fa-chain.kz/ns/kdp" xmlns:ns4="http://sms.egov.inessoft.kz/common/v10/Types" xmlns:ns5="http://smartbridge.b10.kz" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
16. <ns3:status>VALID</ns3:status>
17. <ns3:code>eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE2Mzc3NjM4NzEsImV4cCI6MTYzNzc2Mzg3MSwiYmluYyI6IjEyMDk0MDAxMTU3NyIsImR0cyI6IjIwMjEtMTEtMjRUMTQ6MjQ6MzEiLCJkdGUiOiIyMDIxLTExLTI0VDE0OjI0OjMxIiwidWluIjoiODUwNDE0MzAwMjY1Iiwic2lkIjoiTUNEQl9TRVJWSUNFIn0.AkZMws- CM471fVvRJfiiZxl2fWDlnKo1PAZpxpLknXkyRa0q6F5-ciQf-TjQQoIkS1DdC287r57Ac64m-0lVEhziG7ExNo9hFvrVrqXSttUQ</ns3:code>
18. <ns3:public-key>-----BEGIN CERTIFICATE-----MIIG6zCCBNOgAwIBAgIUb6w9cFeIv32H/2Yr+zwRsL7sescwDQYJKoZIhvcNAQELBQAwUjELMAkGA1UEBhMCS1oxQzBBBgNVBAMMOtKw0JvQotCi0KvSmiDQmtCj05jQm9CQ0J3QlNCr0KDQo9Co0Ksg0J7QoNCi0JDQm9Cr0pogKFJTQSkwHhcNMjEwMzEwMTExNDU3WhcNMjIwMzEwMTExNDU3WjCCASExJjAkBgNVBAMMHdCW0JXQotCf0JjQodCe0JIg0J3Qo9Cg0JHQldCaMRkwFwYDVQQEDBDQltCV0KLQn9CY0KHQntCSMRgwFgYDVQQFEw9JSU45MTA4MTAzNTAwODMxCzAJBgNVBAYTAktaMXgwdgYDVQQKDG/ =-----END CERTIFICATE-----</ns3:public-key>
19. </data>
20. </responseData>
21. </response>
22. </return>
23. </ns2:getPersonDataAccessControlResponse>
24. </soap:Body>
25. </soap:Envelope>
Возвращаемые статусы метода getPersonDataAccessControl: [Показать ответ]
Статус
|
Описание статуса
|
INVALID
|
В доступе отказано
|
PENDING
|
Ожидание ответа субъекта персональных данных;
|
TIMEOUT
|
Время ожидания ответа субъекта персональных данных истекло;
|
NOT_FOUND
|
По указанному в запросе ИИН отсутствует номер телефона в Базе мобильных граждан;
|
ERROR
|
Ошибка, полученная при отправке SMS
|
ERROR_TV_NOTRETRIEVED
|
Ошибка, невозможно извлечь данные из токена верификации (jwt)
|
ERROR_TV_BIN_NOTMATCH
|
Ошибка, значение параметра cbin в токене верификации не соответствует значением поля company_bin запроса
|
ERROR_TV_NOTFOUND
|
Ошибка, значение параметра mcheck в токене верификации не равно одному из следующих значений: Bio, Ds, Otp, DID, PC
|
ERROR_TV_MORECDATE
|
Ошибка, значение параметра iat в токене верификации больше текущей даты
|
Обработка исключений метода getPersonDataAccessControl
При обработке запроса метод getPersonDataAccessControl сервиса может возвращать следующие виды ошибок/исключений/сообщений: [Показать ответ]
Код/Текст ошибки/сообщения
|
Описание ошибки/сообщения
|
SBF-VE-8
|
Номер "ИИН" должен содержать 12 цифр
|
VAL-JSR-001
|
Значение обязательного поля "%s" не должно быть пустым
|
VAL-JSR-001
|
Обязательное поле "%s" отсутствует
|
ScbSystemFault
|
Пользователь %s не имеет прав для выполнения действия
|
FAULT-015
|
Сервис на стороне ГБД не доступен
|
Инструкция по выпуску токена верификации в формате JWT:
Инструкция по выпуску токена верификации : [Показать ответ]
1. Для получения JWT токена оператору (Компании) необходимо зарегистрироваться (быть аттестованным) в КИБ для возможности передавать согласия субъектов иным путем (Система биометрии организации, Электронно-цифровая подпись, Одноразовый пароль OTP, Бумажный носитель информации, Система Digital ID)
2. Выпустить JWT токен и подписать его ключом авторизации AUTH RSA (структура приложена ниже).
Структура JWT токена верификации:
Блок header (algorithm & token type):
{
"alg": "RS256",
"typ": "JWT"
}
Блок payload (data):
{
"cbin": <БИН_организации>,
"mcheck": <способ_получения_подтверждения_Bio/Ds/Otp/DID/PC>,
"iat": <дата_время_создания_токена>,
"exp":<дата_время_окончания_действия_токена>
}
где:
1) cbin – БИН организации запросившая доступ к персональных данным (должен соответствовать полю company_bin запроса (Request));
2) mcheck – способ которым организация получила подтверждение на доступ к персональным данным у субъекта персональных данных.
Возможные значения:
a. Bio (Система биометрии организации);
b. Ds (Электронно-цифровая подпись);
c. Otp (Одноразовый пароль OTP);
d. DID (Система Digital ID);
e. PC (Бумажный носитель информации).
3) iat – дата время создания токена верификации организации в формате Unix Time Stamp (обязательное поле JWT стандарта);
4) exp – дата время окончания действия токена верификации организации в формате Unix Time Stamp (обязательное поле JWT стандарта) (значение должно быть больше iat на один час).
Для проверки структуры JWT токена можно воспользоваться сайтом jwt.io.
Справочник ГБД (serviceID)
Ниже приведен список сервисов, которые работают с КДП: [Показать ответ]