Сценарий связи DID и VC

Этот сценарий показывает связь между DID service и VC service. Мы создаем issuer DID и subject DID, затем выпускаем VC, где issuer ссылается на первый DID, а credentialSubject.id на второй DID.

Пока оба DID активны, verify у VC должен проходить успешно. Затем мы деактивируем subject DID и повторяем verify той же самой VC. Ожидаемый результат меняется на invalid, потому что VC service при проверке заново обращается к DID service и видит, что subject DID больше не активен.

Такой сценарий важен для демонстрации взаимосвязности сервисов. VC остается в реестре, но ее нельзя считать валидной, если связанный DID уже деактивирован.

Откройте две страницы Swagger:

http://localhost:8080/swagger http://localhost:8081/swagger

1. Создать DID issuer

В DID Swagger откройте POST /v1/dids.

Тело запроса:

{ "id": "did:example:link-issuer-001", "verificationMethod": [ { "id": "did:example:link-issuer-001#key-1", "type": "JsonWebKey2020", "controller": "did:example:link-issuer-001", "publicKeyJwk": { "kty": "OKP", "crv": "Ed25519", "x": "7aPhnogXhdfMKCyfI6jVewaum4GFYJR8oYDFJeWW4pE" } } ], "authentication": [ "did:example:link-issuer-001#key-1" ] }

Ожидаемый результат:

201 Created

2. Создать DID subject

В DID Swagger откройте POST /v1/dids.

Тело запроса:

{ "id": "did:example:link-subject-001", "verificationMethod": [ { "id": "did:example:link-subject-001#key-1", "type": "JsonWebKey2020", "controller": "did:example:link-subject-001", "publicKeyJwk": { "kty": "OKP", "crv": "Ed25519", "x": "ZzG6xmg4M9CGmB_hgX-i4AGB6ip7S43mA6o9zp0NM8I" } } ], "authentication": [ "did:example:link-subject-001#key-1" ] }

Ожидаемый результат:

201 Created

3. Создать VC

В VC Swagger откройте POST /v1/credentials.

Тело запроса:

{ "id": "urn:uuid:00000000-0000-4000-8000-000000000101", "type": [ "DeviceCredential" ], "issuer": "did:example:link-issuer-001", "credentialSubject": { "id": "did:example:link-subject-001", "serialNumber": "LINK-001" } }

Ожидаемый результат:

201 Created

4. Проверить VC до деактивации DID

В VC Swagger откройте POST /v1/credentials/{id}/verify.

Значение:

urn:uuid:00000000-0000-4000-8000-000000000101

Ожидаемый результат:

200 OK result равен registry_valid issuerDid равен resolved subjectDid равен resolved

5. Деактивировать DID subject

В DID Swagger откройте PATCH /v1/dids/{did}.

DID:

did:example:link-subject-001

Content-Type:

application/merge-patch+json

Тело запроса:

{ "didDocumentMetadata": { "deactivated": true } }

Ожидаемый результат:

200 OK deactivated равен true

6. Проверить VC после деактивации DID

В VC Swagger откройте POST /v1/credentials/{id}/verify еще раз.

Ожидаемый результат:

200 OK result равен invalid subjectDid равен deactivated

Это значит, что VC остается в реестре, но больше не проходит проверку, потому что subject DID не активен.

Журнал изменений

Дата

Перечень изменений

Автор

2026-11-05

Перенесён из архива DID-VC-итоги-2026-11-03 без изменения содержания.

Дис