Сценарий физлица и VC
Этот сценарий показывает новый слой Identity для физического лица. Мы создаем Person, сервис сам выпускает DID для этого человека, затем на этот DID выпускается PersonCredential.
Сценарий важен тем, что проверяет связку бизнес-сущности и уже реализованных DID/VC сервисов. Физлицо хранится как отдельная запись, DID служит публичным идентификатором, а VC подтверждает данные физлица без подключения криптографической подписи.
Откройте Swagger:
http://localhost:8081/swagger
Для проверки деактивации DID также откройте DID Swagger:
http://localhost:8080/swagger
1. Создать физлицо
В VC Swagger откройте POST /v1/persons.
Тело запроса:
{ "lastName": "Иванов", "firstName": "Иван", "patronymic": "Иванович", "snils": "123-456-789-01", "inn": "123456789012" }
Ожидаемый результат:
201 Created result.id заполнен result.did начинается с did:i:fl: result.systemDid заполнен
Сохраните значения:
personId = result.id personDid = result.did
2. Получить физлицо
Откройте GET /v1/persons/{id}.
Значение:
personId
Ожидаемый результат:
200 OK ответ содержит того же Person и тот же DID
3. Получить список физлиц
Откройте GET /v1/persons.
Параметры:
limit = 10 offset = 0
Ожидаемый результат:
200 OK persons содержит созданное физлицо
4. Изменить данные физлица
Откройте PATCH /v1/persons/{id}.
Тело запроса:
{ "patronymic": "Петрович" }
Ожидаемый результат:
200 OK info.patronymic изменился did остался прежним
5. Выпустить PersonCredential
Откройте POST /v1/persons/{id}/credentials.
Значение:
personId
Ожидаемый результат:
201 Created credential.type содержит PersonCredential credential.credentialSubject.id равен personDid status равен active
Сохраните:
credentialId = result.credential.id
6. Проверить credential
Откройте POST /v1/credentials/{id}/verify.
Значение:
credentialId
Ожидаемый результат:
200 OK result равен registry_valid subjectDid равен resolved cryptographicallyVerified равен false и checks.proof равен missing — без IDENTITY_SYSTEM_KEY cryptographicallyVerified равен true и checks.proof равен valid — с IDENTITY_SYSTEM_KEY (VC подписан системой)
6.1. Выпустить PersonCredential с выбранными claims
Откройте POST /v1/persons/{id}/credentials.
Значение:
personId
Тело запроса:
{ "includePersonId": false, "includeClaims": [], "additionalClaims": { "age": 21, "education": "bachelor", "fridayBeerPermission": "allowed to take one beer from my fridge on Friday evening" } }
Ожидаемый результат:
201 Created credential.credentialSubject.id равен personDid credential.credentialSubject.personId отсутствует credential.credentialSubject.lastName отсутствует credential.credentialSubject.firstName отсутствует credential.credentialSubject.snils отсутствует credential.credentialSubject.age равен 21 credential.credentialSubject.fridayBeerPermission заполнен
Важно: это не криптографическое selective disclosure. Сервис выпускает новую VC, в которой выбранные поля просто не включены. Уже выпущенную VC частично скрыть нельзя без отдельного механизма verifiable presentation/selective disclosure.
6.2. Простая форма без Swagger
Откройте:
http://localhost:8081/person-demo
В форме можно:
создать физлицо выбрать claims для PersonCredential убрать ФИО, СНИЛС, ИНН или personId добавить произвольные claims выпустить VC проверить VC посмотреть JSON ответа
7. Деактивировать DID физлица
В DID Swagger откройте PATCH /v1/dids/{did}.
Значение:
personDid
Content-Type:
application/merge-patch+json
Тело запроса:
{ "didDocumentMetadata": { "deactivated": true } }
Ожидаемый результат:
200 OK deactivated равен true
8. Проверить credential после деактивации DID
Снова откройте POST /v1/credentials/{id}/verify.
Ожидаемый результат:
200 OK result равен invalid subjectDid равен deactivated
Это значит, что PersonCredential остается в реестре, но больше не проходит проверку из-за деактивированного DID физлица.
Негативная проверка
Откройте POST /v1/persons.
Тело запроса:
{ "lastName": "Иванов", "firstName": "Иван", "snils": "123" }
Ожидаемый результат:
422 Unprocessable Entity физлицо не создано
Журнал изменений
Дата | Перечень изменений | Автор |
2026-11-05 | Перенесён из архива DID-VC-итоги-2026-11-03 без изменения содержания. | Дис |