Udostępnij za pośrednictwem


Weryfikowalny interfejs API administratora poświadczeń

Interfejs API Zweryfikowany identyfikator Microsoft Entra Administracja umożliwia zarządzanie wszystkimi aspektami usługi weryfikowania poświadczeń. Oferuje ona sposób konfigurowania zupełnie nowej usługi, zarządzania i tworzenia weryfikowalnych kontraktów poświadczeń, odwoływanie weryfikowalnych poświadczeń i całkowite rezygnacje z usługi.

Interfejs API jest przeznaczony dla deweloperów korzystających z interfejsów API RESTful i wystarczających uprawnień w dzierżawie firmy Microsoft Entra, aby umożliwić usługę

Podstawowy adres URL

Interfejs API Administracja jest serwerem za pośrednictwem protokołu HTTPS. Wszystkie adresy URL, do których odwołuje się dokumentacja, mają następującą bazę: https://verifiedid.did.msidentity.com.

Uwierzytelnianie

Interfejs API jest chroniony za pomocą identyfikatora Entra firmy Microsoft i używa tokenów elementu nośnego OAuth2. Token dostępu może być przeznaczony dla użytkownika lub aplikacji.

Tokeny elementu nośnego użytkownika

Rejestracja aplikacji musi mieć uprawnienie interfejsu API, Verifiable Credentials Service Admin a następnie podczas uzyskiwania tokenu dostępu aplikacja powinna używać zakresu 6a8b4b39-c021-437c-b060-5a14a3fd65f3/full_access. Token dostępu musi być przeznaczony dla użytkownika z administratorem globalnym lub rolą administratora zasad uwierzytelniania. Użytkownik z rolą czytelnik globalny może wykonywać wywołania interfejsu API tylko do odczytu.

Tokeny elementu nośnego aplikacji

Usługa Verifiable Credentials Service Admin obsługuje następujące uprawnienia aplikacji.

Uprawnienie opis
VerifiableCredential.Authority.ReadWrite Uprawnienie do obiektów urzędu odczytu/zapisu
VerifiableCredential.Contract.ReadWrite Uprawnienie do obiektów kontraktu odczytu/zapisu
WeryfikowalneCredential.Credential.Search Uprawnienie do wyszukiwania poświadczeń w celu odwołania
VerifiableCredential.Credential.Revoke Uprawnienie do odwoływanie wcześniej wystawionych poświadczeń
WeryfikowalnyCredential.Network.Read Uprawnienie do odczytywania wpisów z zweryfikowanej sieci identyfikatorów

Rejestracja aplikacji musi mieć uprawnienie interfejsu API dla Verifiable Credentials Service Admin uprawnień i wymaganych z powyższej tabeli. Podczas uzyskiwania tokenu dostępu za pośrednictwem przepływu poświadczeń klienta aplikacja powinna używać zakresu 6a8b4b39-c021-437c-b060-5a14a3fd65f3/.default.

Jeśli aplikacja zamierza utworzyć nowy urząd, potrzebuje dwóch rzeczy. Najpierw rejestracja aplikacji wymaga VerifiableCredential.Authority.ReadWrite uprawnień. Po drugie aplikacja musi mieć Create Key uprawnienia w zasadach dostępu usługi Key Vault. Jeśli aplikacja tylko odczytuje/zapisuje istniejące władze, nie potrzebuje uprawnień usługi Key Vault.

Wprowadzanie

Ten interfejs API ma pomóc w utworzeniu nowego środowiska, aby można było skonfigurować nowe władze. Można to wyzwolić ręcznie, przechodząc do strony Weryfikowalne poświadczenia w witrynie Azure Portal. Musisz wywołać ten interfejs API tylko raz i tylko wtedy, gdy chcesz skonfigurować zupełnie nowe środowisko tylko za pomocą interfejsu API.

Żądanie systemu HTTP

POST /v1.0/verifiableCredentials/onboard

Ten punkt końcowy umożliwia zakończenie aprowizacji usługi Weryfikowanie poświadczeń w dzierżawie. System tworzy pozostałe jednostki usługi, jeśli nie zostały jeszcze aprowidowane.

Nagłówki żądań

Nagłówek Wartość
Autoryzacja Elementu nośnego (token). Wymagania
Typ zawartości application/json

Treść żądania

Dla tej metody nie należy dostarczać treści żądania.

Komunikat zwrotny

HTTP/1.1 201 Created
Content-type: application/json

{
    "id": "f5bf2fc6-7135-4d94-a6fe-c26e4543bc5a",
    "verifiableCredentialServicePrincipalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
    "verifiableCredentialRequestServicePrincipalId": "bbbbbbbb-cccc-dddd-2222-333333333333",
    "verifiableCredentialAdminServicePrincipalId": "cccccccc-dddd-eeee-3333-444444444444",
    "status": "Enabled"
}

Wielokrotne wywoływanie tego interfejsu API powoduje wyświetlenie dokładnie tego samego komunikatu zwrotnego.

Władze

Ten punkt końcowy może służyć do tworzenia lub aktualizowania weryfikowalnego wystąpienia usługi Credential.

Metody

Metody Zwracany typ opis
Uzyskiwanie urzędu Organ Odczytywanie właściwości urzędu
Urząd listy Tablica urzędu Pobieranie listy wszystkich skonfigurowanych urzędów/weryfikowalnych usług poświadczeń
Tworzenie urzędu Organ Tworzenie nowego urzędu
Urząd aktualizacji Organ Urząd aktualizacji
Usuwanie urzędu Organ Usuwanie urzędu
Generowanie dobrze znanej konfiguracji DID
Generowanie dokumentu DID
Weryfikowanie dobrze znanej konfiguracji DID
Obracanie klucza podpisywania Organ Obracanie klucza podpisywania
Synchronizowanie z dokumentem DID Organ Synchronizowanie dokumentu DID z nowym kluczem podpisywania

Uzyskiwanie urzędu

Pobierz właściwości skonfigurowanego urzędu lub weryfikowalnego wystąpienia usługi poświadczeń.

Żądanie systemu HTTP

GET /v1.0/verifiableCredentials/authorities/:authorityId

Zastąp element :authorityId wartością jednego ze skonfigurowanych urzędów.

Nagłówki żądań

Nagłówek Wartość
Autoryzacja Elementu nośnego (token). Wymagania
Typ zawartości application/json

Treść żądania

Nie należy podawać treści żądania dla tej metody

Komunikat odpowiedzi

HTTP/1.1 200 OK
Content-type: application/json

{
    "id": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
    "name": "ExampleAuthorityName",
    "status": "Enabled",
    "didModel": {
        "did": "did:web:verifiedid.contoso.com",
        "signingKeys": [
            "https://vccontosokv.vault.azure.net/keys/vcSigningKey-00aa00aa-bb11-cc22-dd33-44ee44ee44ee/5257c49db8164e198b4c5997e8a31ad4"
        ],
        "recoveryKeys": [],
        "updateKeys": [],
        "encryptionKeys": [],
        "linkedDomainUrls": [
            "https://verifiedid.contoso.com/"
        ],
        "didDocumentStatus": "published"
    },
    "keyVaultMetadata": {
        "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
        "resourceGroup": "verifiablecredentials",
        "resourceName": "vccontosokv",
        "resourceUrl": "https://vccontosokv.vault.azure.net/"
    }
}

Odpowiedź zawiera następujące właściwości.

Typ urzędu

Właściwość Type opis
Id string Wygenerowany automatycznie unikatowy identyfikator, który może służyć do pobierania lub aktualizowania określonego wystąpienia usługi weryfikowania poświadczeń
name string Przyjazna nazwa tego wystąpienia usługi poświadczeń weryfikowalnych
status string stan usługi. Ta wartość będzie zawsze taka enabled
didModel didModel Informacje o DID i kluczach
keyVaultMetadata keyVaultMeta — dane Informacje o używanym usłudze Key Vault

didModel, typ

Internet

Właściwość Type opis
did string Did dla tego weryfikowalnego wystąpienia usługi poświadczeń
signingKeys tablica ciągów Adres URL klucza podpisywania
linkedDomainUrls tablica ciągów Domeny połączone z tym did, spodziewając się jednego wpisu
didModel didModel Informacje o DID i kluczach
didDocumentStatus string stan DID, wartość jest zawsze published dla tej metody

typ keyVaultMetadata

Właściwość Type opis
subscriptionId string Subskrypcja platformy Azure, która znajduje się w usłudze Key Vault
resourceGroup string nazwa grupy zasobów z tej usługi Key Vault
resourceName string Nazwa magazynu kluczy
resourceUrl string Adres URL tej usługi Key Vault

Listy urzędów

Pobieranie wszystkich skonfigurowanych urzędów lub weryfikowalnych usług poświadczeń dla tej dzierżawy

Żądanie systemu HTTP

GET /v1.0/verifiableCredentials/authorities

Nagłówki żądań

Nagłówek Wartość
Autoryzacja Elementu nośnego (token). Wymagania
Typ zawartości application/json

Treść żądania

Dla tej metody nie należy dostarczać treści żądania.

Komunikat odpowiedzi

Komunikat odpowiedzi to tablica urzędów

Przykład:

HTTP/1.1 200 OK
Content-type: application/json
{
    value:

    [
        {
            "id": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
            "name": "AuthorityName",
            "status": "Enabled",
            "didModel": {
                "did": "did:web:verifiedid.contoso.com",
                "signingKeys": [
                    "https://vccontosokv.vault.azure.net/keys/vcSigningKey-00aa00aa-bb11-cc22-dd33-44ee44ee44ee/5257c49db8164e198b4c5997e8a31ad4"
                ],
                "recoveryKeys": [],
                "updateKeys": [],
                "encryptionKeys": [],
                "linkedDomainUrls": [
                    "https://verifiedid.contoso.com/"
                ],
                "didDocumentStatus": "published"
            },
            "keyVaultMetadata": {
                "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
                "resourceGroup": "verifiablecredentials",
                "resourceName": "vccontosokv",
                "resourceUrl": "https://vccontosokv.vault.azure.net/"
            }
        },
        {
            "id": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
            "name": "AuthorityName2",
            "keyVaultUrl": "https://vccontosokv.vault.azure.net/",
            "status": "Enabled",
            "didModel": {
                "did": "did:web:verifiedid2.contoso.com",
                "signingKeys": [
                    "https://vccontosokv.vault.azure.net/keys/vcSigningKey-00aa00aa-bb11-cc22-dd33-44ee44ee44ee/f8f149eaee194beb83dfca14714ef62a"
                ],
                "recoveryKeys": [],
                "updateKeys": [],
                "encryptionKeys": [],
                "linkedDomainUrls": [
                    "https://verifiedid2.contoso.com/"
                ],
                "didDocumentStatus": "published"
            },
            "keyVaultMetadata": {
                "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
                "resourceGroup": "verifiablecredentials",
                "resourceName": "vccontosokv",
                "resourceUrl": "https://vccontosokv.vault.azure.net/"
            }
        }
    ]
}

Tworzenie urzędu

To wywołanie tworzy nowy klucz prywatny, klucz odzyskiwania i klucz aktualizacji, przechowuje te klucze w określonej usłudze Azure Key Vault i ustawia uprawnienia do tej usługi Key Vault na potrzeby weryfikowalnej usługi poświadczeń i tworzenia nowego pliku DID z odpowiednim dokumentem DID .

Żądanie systemu HTTP

POST /v1.0/verifiableCredentials/authorities

Nagłówki żądań

Nagłówek Wartość
Autoryzacja Elementu nośnego (token). Wymagania
Typ zawartości application/json

Treść żądania

W treści żądania podaj reprezentację w formacie JSON poniżej

Właściwość Type opis
name string Nazwa wyświetlana tego wystąpienia usługi
linkedDomainUrl string Domena połączona z tym did
didMethod string Musi być web
keyVaultMetadata keyVaultMetadata metadane dla określonego magazynu kluczy

Przykładowy komunikat:

{
  "name":"ExampleName",
  "linkedDomainUrl":"https://verifiedid.contoso.com/",
  "didMethod": "web",
  "keyVaultMetadata":
  {
    "subscriptionId":"aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
    "resourceGroup":"verifiablecredentials",
    "resourceName":"vccontosokv",
    "resourceUrl": "https://vccontosokv.vault.azure.net/"
  }
}

Komunikat odpowiedzi

Po pomyślnym wykonaniu komunikatu odpowiedzi zawiera nazwę urzędu

Przykładowy komunikat dla witryny did:web:

{
    "id": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
    "name": "APItesta",
    "status": "Enabled",
    "didModel": {
        "did": "did:web:verifiedid.contoso.com",
        "signingKeys": [
            "https://vcwingtipskv.vault.azure.net/keys/vcSigningKey-00aa00aa-bb11-cc22-dd33-44ee44ee44ee/5255b9f2d9b94dc19a369ff0d36e3407"
        ],
        "recoveryKeys": [],
        "updateKeys": [],
        "encryptionKeys": [],
        "linkedDomainUrls": [
            "https://verifiedid.contoso.com/"
        ],
        "didDocumentStatus": "published"
    },
    "keyVaultMetadata": {
        "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
        "resourceGroup": "verifiablecredentials",
        "resourceName": "vcwingtipskv",
        "resourceUrl": "https://vcwingtipskv.vault.azure.net/"
    },
    "linkedDomainsVerified": false
}

Przykładowy komunikat dla :ion:

HTTP/1.1 201 Created
Content-type: application/json

{
    "id": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
    "name": "APItest6",
    "status": "Enabled",
    "didModel": {
        "did": "did:web:verifiedid.contoso.com",
        "signingKeys": [
            "https://vccontosokv.vault.azure.net/keys/vcSigningKey-00aa00aa-bb11-cc22-dd33-44ee44ee44ee/f8f149eaee194beb83dfca14714ef62a"
        ],
        "recoveryKeys": [],
        "updateKeys": [],
        "encryptionKeys": [],
        "linkedDomainUrls": [
            "https://verifiedid.contoso.com/"
        ],
        "didDocumentStatus": "submitted"
    },
    "keyVaultMetadata": {
        "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
        "resourceGroup": "verifiablecredentials",
        "resourceName": "vccontosokv",
        "resourceUrl": "https://vccontosokv.vault.azure.net/"
    }
}

Uwagi

Możesz utworzyć wiele urzędów z własnymi kluczami DID i prywatnymi. Nie będą one widoczne w interfejsie użytkownika witryny Azure Portal. Obecnie obsługujemy tylko 1 urząd. Nie przetestowaliśmy w pełni wszystkich scenariuszy z wieloma utworzonymi władzami. Jeśli próbujesz to zrobić, poinformuj nas o swoim doświadczeniu.

Urząd aktualizacji

Ta metoda może służyć do aktualizowania nazwy wyświetlanej tego konkretnego wystąpienia usługi poświadczeń weryfikowalnych.

Żądanie systemu HTTP

PATCH /v1.0/verifiableCredentials/authorities/:authorityId

Zastąp wartość :authorityId wartością identyfikatora urzędu, który chcesz zaktualizować.

Nagłówki żądań

Nagłówek Wartość
Autoryzacja Elementu nośnego (token). Wymagania
Typ zawartości application/json

Treść żądania

W treści żądania podaj reprezentację w formacie JSON poniżej.

Właściwość Type opis
name string Nazwa wyświetlana tego wystąpienia usługi

Przykładowy komunikat

{
  "name":"ExampleIssuerName"
}

Usuwanie urzędu

Tej metody można użyć do usunięcia urzędu. Obecnie można usunąć tylko did:ion władze. Po usunięciu urzędu wszystkie wystawione poświadczenia zweryfikowanego identyfikatora stają się nieprawidłowe i nie można ich już zweryfikować, ponieważ urząd wystawiający zniknął.

Żądanie systemu HTTP

DELETE /beta/verifiableCredentials/authorities/:authorityId

Zastąp wartość :authorityId wartością identyfikatora urzędu, który chcesz usunąć.

Nagłówki żądań

Nagłówek Wartość
Autoryzacja Elementu nośnego (token). Wymagania
Typ zawartości application/json

Treść żądania

Brak treści żądania

Komunikat odpowiedzi

Przykładowy komunikat odpowiedzi:

Pomyślna odpowiedź urzędu usunięcia.

HTTP/1.1 200 OK

Jeśli usunięcie urzędu zakończyło się pomyślnie, ale czyszczenie kluczy usługi Azure Key Vault nie powiodło się, otrzymasz poniższą odpowiedź.

HTTP/1.1 400 Bad Request
Content-type: application/json

{
"error": {
        "code": "deleteIssuerSuccessfulButKeyDeletionFailed",
        "message": "The organization has been opted out of the Verifiable Credentials, but the following keys could not be deleted. To keep your organization secure, delete keys that are not in use. https://kxxxxxx.vault.azure.net/keys/vcSigningKey-9daeexxxxx-0575-23dc-81be-5f6axxxxx/0dcc532adb9a4fcf9902f90xxxxx"
    }
}

Dobrze znana konfiguracja DID

Metoda generateWellknownDidConfiguration generuje podpisany plik did-configuration.json. Plik musi zostać przekazany do .well-known folderu w katalogu głównym witryny internetowej hostowanej dla domeny w połączonej domenie tego weryfikowalnego wystąpienia poświadczeń. Instrukcje można znaleźć tutaj.

Żądanie systemu HTTP

POST /v1.0/verifiableCredentials/authorities/:authorityId/generateWellknownDidConfiguration

Nagłówki żądań

Nagłówek Wartość
Autoryzacja Elementu nośnego (token). Wymagania
Typ zawartości application/json

Treść żądania

Należy określić jedną z domen w połączonychDomainach określonego urzędu.

{
    "domainUrl":"https://atest/"
}

Komunikat odpowiedzi

Przykładowy komunikat odpowiedzi:

HTTP/1.1 200 OK
Content-type: application/json

{
    "@context": "https://identity.foundation/.well-known/contexts/did-configuration-v0.0.jsonld",
    "linked_dids": [
        "eyJhbGciOiJFUzI1NksiL...<SNIP>..."
    ]
}

Zapisz ten wynik przy użyciu nazwy pliku did-configuration.json i przekaż ten plik do odpowiedniego folderu i witryny internetowej. Jeśli określisz domenę, która nie jest połączona z tym dokumentem DID/DID, zostanie wyświetlony błąd:

HTTP/1.1 400 Bad Request
Content-type: application/json

{
  "requestId":"079192a95fbf56a661c1b2dd0e012af5",
  "date":"Mon, 07 Feb 2022 18:55:53 GMT",
  "mscv":"AVQh55YiU3FxMipB.0",
  "error":
  {
    "code":"wellKnownConfigDomainDoesNotExistInIssuer",
    "message":"The domain used as an input to generate the well-known document is not registered with your organization. Domain: https://wrongdomain/"
  }
}

Uwagi

Można wskazać wiele identyfikatorów DID do tej samej domeny. Jeśli wybierzesz tę konfigurację, musisz połączyć wygenerowane tokeny i umieścić je w tym samym pliku did-configuration.json. Plik zawiera tablicę tych tokenów.

Na przykład:

{
    "@context": "https://identity.foundation/.well-known/contexts/did-configuration-v0.0.jsonld",
    "linked_dids": [
        "eyJhbG..token1...<SNIP>...",
        "eyJhbG..token2...<SNIP>..."
    ]
}

Generowanie dokumentu DID

To wywołanie generuje dokument DID używany dla identyfikatorów DID:WEB. Po wygenerowaniu tego dokumentu DID administrator musi umieścić plik w https://domain/.well-known/did.json lokalizacji.

Żądanie systemu HTTP

POST /v1.0/verifiableCredentials/authorities/:authorityId/generateDidDocument

Nagłówki żądań

Nagłówek Wartość
Autoryzacja Elementu nośnego (token). Wymagania
Typ zawartości application/json

Treść żądania

Dla tej metody nie należy dostarczać treści żądania.

Komunikat odpowiedzi

HTTP/1.1 200 OK
Content-type: application/json

{
    "id": "did:web:verifiedid.contoso.com",
    "@context": [
        "https://www.w3.org/ns/did/v1",
        {
            "@base": "did:web:verifiedid.contoso.com"
        }
    ],
    "service": [
        {
            "id": "#linkeddomains",
            "type": "LinkedDomains",
            "serviceEndpoint": {
                "origins": [
                    "https://verifiedid.contoso.com/"
                ]
            }
        },
        {
            "id": "#hub",
            "type": "IdentityHub",
            "serviceEndpoint": {
                "instances": [
                    "https://verifiedid.hub.msidentity.com/v1.0/f640a374-b380-42c9-8e14-d174506838e9"
                ]
            }
        }
    ],
    "verificationMethod": [
        {
            "id": "#a2518db3b6b44332b3b667928a51b0cavcSigningKey-f0a5b",
            "controller": "did:web:verifiedid.contoso.com",
            "type": "EcdsaSecp256k1VerificationKey2019",
            "publicKeyJwk": {
                "crv": "secp256k1",
                "kty": "EC",
                "x": "bFkOsjDB_K-hfz-c-ggspVHETMeZm31CtuzOt0PrmZc",
                "y": "sewHrUNpXvJ7k-_4K8Yq78KgKzT1Vb7kmhK8x7_6h0g"
            }
        }
    ],
    "authentication": [
        "#a2518db3b6b44332b3b667928a51b0cavcSigningKey-f0a5b"
    ],
    "assertionMethod": [
        "#a2518db3b6b44332b3b667928a51b0cavcSigningKey-f0a5b"
    ]
}

Uwaga

Wymaga, aby obiekt wywołujący miał uprawnienia do listy KLUCZY w docelowym magazynie kluczy.

Weryfikowanie dobrze znanej konfiguracji DID

To wywołanie sprawdza konfigurację DID. Pobiera dobrze znaną konfigurację DID i sprawdza, czy jest używany prawidłowy identyfikator DID, a podpis jest poprawny.

Żądanie systemu HTTP

POST /v1.0/verifiableCredentials/authorities/:authorityId/validateWellKnownDidConfiguration

Nagłówki żądań

Nagłówek Wartość
Autoryzacja Elementu nośnego (token). Wymagania
Typ zawartości application/json

Treść żądania

Dla tej metody nie należy dostarczać treści żądania.

Komunikat odpowiedzi

HTTP/1.1 204 No Content
Content-type: application/json

Obracanie klucza podpisywania

Obracanie klucza podpisywania tworzy nowy klucz prywatny dla urzędu did:web. Aby odzwierciedlić aktualizację, należy ponownie zarejestrować dokument DID. Po wykonaniu tej czynności synchronizatorWithDidDocument nakazuje systemowi rozpoczęcie korzystania z nowego klucza do podpisywania.

Żądanie systemu HTTP

POST /v1.0/verifiableCredentials/authorities/:authorityId/didInfo/signingKeys/rotate

Nagłówki żądań

Nagłówek Wartość
Autoryzacja Elementu nośnego (token). Wymagania
Typ zawartości application/json

Treść żądania

Dla tej metody nie należy dostarczać treści żądania.

Komunikat odpowiedzi

Spowoduje didDocumentStatus to zmianę na outOfSync.

HTTP/1.1 200 OK
Content-type: application/json

{
    "id": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
    "name": "APItesta",
    "status": "Enabled",
    "didModel": {
        "did": "did:web:verifiedid.contoso.com",
        "signingKeys": [
            "https://vcwingtipskv.vault.azure.net/keys/vcSigningKey-00aa00aa-bb11-cc22-dd33-44ee44ee44ee/5255b9f2d9b94dc19a369ff0d36e3407"
        ],
        "recoveryKeys": [],
        "updateKeys": [],
        "encryptionKeys": [],
        "linkedDomainUrls": [
            "https://verifiedid.contoso.com/"
        ],
        "didDocumentStatus": "outOfSync"
    },
    "keyVaultMetadata": {
        "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
        "resourceGroup": "verifiablecredentials",
        "resourceName": "vcwingtipskv",
        "resourceUrl": "https://vcwingtipskv.vault.azure.net/"
    },
    "linkedDomainsVerified": false
}

Synchronizowanie z dokumentem DID

Po rotacji klucza podpisywania dokument DID powinien zostać ponownie zarejestrowany , aby odzwierciedlić aktualizację. Po wykonaniu tej czynności synchronizatorWithDidDocument nakazuje systemowi rozpoczęcie korzystania z nowego klucza do podpisywania.

Żądanie systemu HTTP

POST /v1.0/verifiableCredentials/authorities/:authorityId/didInfo/synchronizeWithDidDocument

Nagłówki żądań

Nagłówek Wartość
Autoryzacja Elementu nośnego (token). Wymagania
Typ zawartości application/json

Treść żądania

Dla tej metody nie należy dostarczać treści żądania.

Komunikat odpowiedzi

Funkcja didDocumentStatus zmieni się z outOfSync na published na pomyślne wywołanie.

HTTP/1.1 200 OK
Content-type: application/json

{
    "id": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
    "name": "APItesta",
    "status": "Enabled",
    "didModel": {
        "did": "did:web:verifiedid.contoso.com",
        "signingKeys": [
            "https://vcwingtipskv.vault.azure.net/keys/vcSigningKey-00aa00aa-bb11-cc22-dd33-44ee44ee44ee/5255b9f2d9b94dc19a369ff0d36e3407"
        ],
        "recoveryKeys": [],
        "updateKeys": [],
        "encryptionKeys": [],
        "linkedDomainUrls": [
            "https://verifiedid.contoso.com/"
        ],
        "didDocumentStatus": "published"
    },
    "keyVaultMetadata": {
        "subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
        "resourceGroup": "verifiablecredentials",
        "resourceName": "vcwingtipskv",
        "resourceUrl": "https://vcwingtipskv.vault.azure.net/"
    },
    "linkedDomainsVerified": false
}

Kontrakty

Ten punkt końcowy umożliwia tworzenie nowych kontraktów i aktualizowanie istniejących kontraktów. Kontrakty składają się z dwóch części reprezentowanych przez dwie definicje JSON. Informacje na temat ręcznego projektowania i tworzenia kontraktu można znaleźć tutaj.

  • Definicja wyświetlania jest używana przez administratorów do kontrolowania wyglądu weryfikowalnego poświadczenia, na przykład koloru tła, logo i tytułu poświadczenia weryfikowalnego. Ten plik zawiera również oświadczenia, które muszą być przechowywane wewnątrz weryfikowalnych poświadczeń.
  • Definicja reguł zawiera informacje na temat sposobu zbierania i zbierania zaświadczeń, takich jak oświadczenia testowane samodzielnie, inne weryfikowalne poświadczenia jako dane wejściowe lub być może token identyfikatora odebrany po zalogowaniu użytkownika do dostawcy tożsamości zgodnej z standardem OIDC.

Metody

Metody Zwracany typ opis
Uzyskiwanie kontraktu Kontrakt Odczytywanie właściwości kontraktu
Wyświetlanie listy kontraktów Zbieranie kontraktów Pobieranie listy wszystkich skonfigurowanych kontraktów
Tworzenie kontraktu Kontrakt Tworzenie nowego kontraktu
Aktualizowanie kontraktu Kontrakt Aktualizowanie kontraktu

Uzyskiwanie kontraktu

Żądanie systemu HTTP

GET /v1.0/verifiableCredentials/authorities/:authorityId/contracts/:contractId

Zastąp wartości i :authorityId:contractId poprawną wartością urzędu i kontraktu.

Nagłówki żądań

Nagłówek Wartość
Autoryzacja Elementu nośnego (token). Wymagania
Typ zawartości application/json

Treść żądania

Dla tej metody nie należy dostarczać treści żądania.

Komunikat odpowiedzi

przykładowa wiadomość:

HTTP/1.1 200 OK
Content-type: application/json

{
    "id": "A1bC2dE3fH4iJ5kL6mN7oP8qR9sT0u",
    "name": "contractname",
    "status": "Enabled",
    "issueNotificationEnabled": false,
    "availableInVcDirectory": false,
    "manifestUrl": "...",
    "issueNotificationAllowedToGroupOids" : null,
    "rules": <rulesModel>,
    "displays": <displayModel[]>,
    "allowOverrideValidityIntervalOnIssuance": false
}

Odpowiedź zawiera następujące właściwości

Typ kontraktu

Właściwość Type opis
Id string identyfikator kontraktu
name string Przyjazna nazwa tego kontraktu
status string Zawsze Enabled
manifestUrl string Adres URL kontraktu użytego w żądaniu wystawiania
issueNotificationEnabled boolean ustawiono wartość true, jeśli użytkownicy zostaną powiadomieni, że to vc jest gotowe do wystawienia
issueNotificationAllowedToGroupOids tablica ciągów groupId tablica identyfikatorów grup, dla których będzie oferowane to poświadczenie
availableInVcDirectory boolean Czy ten kontrakt został opublikowany w sieci weryfikowalnej poświadczeń
Zasady rulesModel definicja reguł
Wyświetla displayModel, tablica wyświetlanie definicji
allowOverrideValidityIntervalOnIssuance boolean Jeśli wywołanie interfejsu API createIssuanceRequest może zastąpić wygaśnięcie poświadczeń. Jest to prawidłowe tylko dla przepływów idTokenHint .

rulesModel, typ

Właściwość Type Opis
attestations Atesty opis obsługiwanych danych wejściowych dla reguł
validityInterval Liczba ta wartość pokazuje żywotność poświadczeń
vc tablica vcType typy dla tego kontraktu
customStatusEndpoint [customStatusEndpoint] (typ #customstatusendpoint) (opcjonalnie) stan punktu końcowego, który ma być uwzględniny w weryfikowalnym poświadczeniu dla tego kontraktu

Jeśli właściwość właściwości customStatusEndpoint nie jest określona, anonymous używany jest punkt końcowy stanu.

typ zaświadczania

Właściwość Type Opis
idTokens idTokenAttestation (tablica) (opcjonalnie) opisuje dane wejściowe tokenu identyfikatora
idTokenHints idTokenHintAttestation (tablica) (opcjonalnie) opisuje dane wejściowe wskazówek dotyczących tokenu identyfikatora
presentations verifiablePresentationAttestation (tablica) (opcjonalnie) opisuje weryfikowalne dane wejściowe prezentacji
selfIssued selfIssuedAttestation (tablica) (opcjonalnie) opis samodzielnie wystawionych danych wejściowych
accessTokens accessTokenAttestation (tablica) (opcjonalnie) opisuje dane wejściowe tokenu dostępu

idTokenAttestation, typ

Właściwość Type Opis
mapping claimMapping (opcjonalnie) reguły mapowania oświadczeń wejściowych na oświadczenia wyjściowe w poświadczeniach weryfikowalnych
configuration ciąg (adres URL) lokalizacja dokumentu konfiguracji dostawcy tożsamości
clientId string identyfikator klienta do użycia podczas uzyskiwania tokenu identyfikatora
redirectUri string identyfikator URI przekierowania do użycia podczas uzyskiwania tokenu identyfikatora MUSI być vcclient://openid/
scope string rozdzielana spacją lista zakresów do użycia podczas uzyskiwania tokenu identyfikatora
required wartość logiczna (wartość domyślna false) wskazuje, czy to zaświadczenie jest wymagane, czy nie

idTokenHintAttestation, typ

Właściwość Type Opis
mapping claimMapping (opcjonalnie) reguły mapowania oświadczeń wejściowych na oświadczenia wyjściowe w poświadczeniach weryfikowalnych
required wartość logiczna (wartość domyślna false) wskazuje, czy to zaświadczenie jest wymagane, czy nie
trustedIssuers ciąg (tablica) lista identyfikatorów DID, które mogą wystawiać weryfikowalne poświadczenia dla tego kontraktu

verifiablePresentationAttestation, typ

Właściwość Type Opis
mapping claimMapping (opcjonalnie) reguły mapowania oświadczeń wejściowych na oświadczenia wyjściowe w poświadczeniach weryfikowalnych
credentialType ciąg (opcjonalnie) wymagany typ poświadczeń danych wejściowych
required wartość logiczna (wartość domyślna false) wskazuje, czy to zaświadczenie jest wymagane, czy nie
trustedIssuers ciąg (tablica) lista identyfikatorów DID, które mogą wystawiać weryfikowalne poświadczenia dla tego kontraktu

selfIssuedAttestation type (typ selfIssuedAttestation)

Właściwość Type Opis
mapping claimMapping (opcjonalnie) reguły mapowania oświadczeń wejściowych na oświadczenia wyjściowe w poświadczeniach weryfikowalnych
required wartość logiczna (wartość domyślna false) wskazuje, czy to zaświadczenie jest wymagane, czy nie

accessTokenAttestation type (typ zaświadczania accessTokenAttestation)

Właściwość Type Opis
mapping claimMapping (opcjonalnie) reguły mapowania oświadczeń wejściowych na oświadczenia wyjściowe w poświadczeniach weryfikowalnych
required wartość logiczna (wartość domyślna false) wskazuje, czy to zaświadczenie jest wymagane, czy nie

Obsługiwane inputClaim wartości właściwości mappings to: givenName, , displayName, preferredLanguageuserPrincipalName, surname, mail, jobTitle. photo

claimMapping, typ

Właściwość Type opis
inputClaim string nazwa oświadczenia do użycia z danych wejściowych
outputClaim string nazwa oświadczenia w weryfikowalnym poświadczeniu
indexed wartość logiczna (wartość domyślna false) wskazuje, czy wartość tego oświadczenia jest używana do wyszukiwania; tylko jeden obiekt clientMapping może być indeksowany dla danego kontraktu
required wartość logiczna (wartość domyślna false) wskazuje, czy to mapowanie jest wymagane, czy nie
type ciąg (opcjonalnie) typ oświadczenia

customStatusEndpoint, typ

Właściwość Type Opis
url ciąg (adres URL) adres URL niestandardowego punktu końcowego stanu
type string typ punktu końcowego

przykład:

"rules": {
    "attestations": {
        "idTokens": [
            {
                "clientId": "00001111-aaaa-2222-bbbb-3333cccc4444",
                "configuration": "https://bankofwoodgrove.b2clogin.com/bankofwoodgrove.onmicrosoft.com/v2.0/.well-known/openid-configuration?p=B2C_1_si",
                "redirectUri": "vcclient://openid/",
                "scope": "openid",
                "mapping": [
                    {
                        "outputClaim": "givenName",
                        "required": false,
                        "inputClaim": "given_name",
                        "indexed": false
                    },
                    {
                        "outputClaim": "familyName",
                        "required": false,
                        "inputClaim": "family_name",
                        "indexed": true
                    }
                ],
                "required": false
            }
        ]
    },
    "validityInterval": 2592000,
    "vc": {
        "type": [
            "BankofWoodgroveIdentity"
        ]
    }
}

displayModel, typ

Właściwość Type opis
locale string ustawienia regionalne tego ekranu
credential displayCredential właściwości wyświetlania poświadczeń weryfikowalnych
consent displayConsent dane uzupełniające po wystawieniu weryfikowalnego poświadczenia
claims displayClaims array etykiety oświadczeń zawartych w poświadczeniach weryfikowalnych

displayCredential, typ

Właściwość Type opis
title string tytuł poświadczeń
issuedBy string nazwa wystawcy poświadczeń
backgroundColor liczba (szesnastkowy) kolor tła poświadczeń w szesnastkowym, na przykład #FFAABB
textColor liczba (szesnastkowy) kolor tekstu poświadczeń w szesnastkowym, na przykład #FFAABB
description string tekst uzupełniający wyświetlany obok każdego poświadczenia
logo displayCredentialLogo logo do użycia dla poświadczeń

displayCredentialLogo, typ

Właściwość Type Opis
uri string (identyfikator URI) identyfikator URI logo. Jeśli jest to adres URL, musi być dostępny za pośrednictwem publicznego Internetu anonimowo.
description string opis logo

displayConsent, typ

Właściwość Type opis
title string tytuł zgody
instructions string tekst uzupełniający do użycia podczas wyświetlania zgody

displayClaims, typ

Właściwość Type opis
label string etykieta oświadczenia wyświetlana
claim string nazwa oświadczenia, do którego ma zastosowanie etykieta
type string typ oświadczenia
description ciąg (opcjonalnie) opis oświadczenia

przykład:

{
  "displays": [
        {
            "locale": "en-US",
            "card": {
                "backgroundColor": "#FFA500",
                "description": "ThisisyourBankofWoodgroveIdentity",
                "issuedBy": "BankofWoodgrove",
                "textColor": "#FFFF00",
                "title": "BankofWoodgroveIdentity",
                "logo": {
                    "description": "Defaultbankofwoodgrovelogo",
                    "uri": "https://didcustomerplayground.blob.core.windows.net/public/VerifiedCredentialExpert_icon.png"
                }
            },
            "consent": {
                "instructions": "Please login with your bankofWoodgrove account to receive this credential.",
                "title": "Do you want to accept the verifiedbankofWoodgrove Identity?"
            },
            "claims": [
                {
                    "claim": "vc.credentialSubject.givenName",
                    "label": "Name",
                    "type": "String"
                },
                {
                    "claim": "vc.credentialSubject.familyName",
                    "label": "Surname",
                    "type": "String"
                }
            ]
        }
    ]
}

Wyświetlanie listy kontraktów

Ten interfejs API zawiera listę wszystkich kontraktów skonfigurowanych w bieżącej dzierżawie dla określonego urzędu.

Żądanie systemu HTTP

GET /v1.0/verifiableCredentials/authorities/:authorityId/contracts

Nagłówki żądań

Nagłówek Wartość
Autoryzacja Elementu nośnego (token). Wymagania
Typ zawartości application/json

Treść żądania

Dla tej metody nie należy dostarczać treści żądania.

Komunikat odpowiedzi

przykładowa wiadomość:

{
    "value":
    [
        {
            "id": "A1bC2dE3fH4iJ5kL6mN7oP8qR9sT0u",
            "name": "test1",
            "authorityId": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
            "status": "Enabled",
            "issueNotificationEnabled": false,
            "manifestUrl" : "https://...",
            "rules": "<rules JSON>",
            "displays": [{<display JSON}]
        },
        {
            "id": "C2dE3fH4iJ5kL6mN7oP8qR9sT0uV1w",
            "name": "test2",
            "authorityId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
            "status": "Enabled",
            "issueNotificationEnabled": false,
            "manifestUrl" : "https://...",
            "rules": "<rules JSON>",
            "displays": [{<display JSON}]
        }
    ]
}

Tworzenie kontraktu

Podczas tworzenia kontraktu nazwa musi być unikatowa w dzierżawie. W przypadku utworzenia wielu władz nazwa umowy musi być unikatowa we wszystkich władzach. Nazwa kontraktu będzie częścią adresu URL kontraktu, który jest używany w żądaniach wystawiania.

Żądanie systemu HTTP

POST /v1.0/verifiableCredentials/authorities/:authorityId/contracts

Nagłówki żądań

Nagłówek Wartość
Autoryzacja Elementu nośnego (token). Wymagania
Typ zawartości application/json

Treść żądania

Przykładowe żądanie

{
    "name": "ExampleContractName1",
    "rules": "<rules JSON>",
    "displays": [{<display JSON}],
}

Komunikat odpowiedzi

Przykładowy komunikat:

HTTP/1.1 201 Created
Content-type: application/json

{
    "id": "GUID",
    "name": "ExampleContractName1",
    "issuerId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
    "status": "Enabled",
    "issueNotificationEnabled": false,
    "rules": "<rules JSON>",
    "displays": [{<display JSON}],
    "manifestUrl": "https://..."
}

Aktualizowanie kontraktu

Ten interfejs API umożliwia aktualizowanie kontraktu.

PATCH /v1.0/verifiableCredentials/authorities/:authorityId/contracts/:contractid

Przykładowe żądanie:

{
    "rules": "<rules JSON>",
    "displays": [{<display JSON}],}
    "availableInVcDirectory": true
    "allowOverrideValidityIntervalOnIssuance": true
}

Komunikat odpowiedzi

Przykładowy komunikat:

HTTP/1.1 200 OK
Content-type: application/json

{
    "id": "A1bC2dE3fH4iJ5kL6mN7oP8qR9sT0u",
    "name": "contractname",
    "status": "Enabled",
    "issueNotificationEnabled": false,
    "availableInVcDirectory": true,
    "manifestUrl": "https://...",
    "issueNotificationAllowedToGroupOids" : null,
    "rules": rulesModel,
    "displays": displayModel[],
    "allowOverrideValidityIntervalOnIssuance": true
}

Referencja

Ten punkt końcowy umożliwia wyszukiwanie wystawionych poświadczeń weryfikowalnych, sprawdzanie stanu odwołania i odwoływanie poświadczeń.

Metody

Metody Zwracany typ opis
Uzyskiwanie poświadczeń Referencje Odczytywanie właściwości poświadczeń
Wyszukaj poświadczenia Zbieranie poświadczeń Wyszukiwanie listy poświadczeń z określoną wartością oświadczenia
Odwoływanie poświadczeń Odwoływanie określonych poświadczeń

Uzyskiwanie poświadczeń

Ten interfejs API umożliwia pobranie określonego poświadczenia i sprawdzenie stanu, aby sprawdzić, czy został odwołany, czy nie.

Żądanie HTTP

GET /v1.0/verifiableCredentials/authorities/:authorityId/contracts/:contractId/credentials/:credentialId

Nagłówki żądań

Nagłówek Wartość
Autoryzacja Elementu nośnego (token). Wymagania
Typ zawartości application/json

Komunikat odpowiedzi

Przykładowy komunikat

HTTP/1.1 200 OK
Content-type: application/json

{
    "id": "urn:pic:aea42fb3724b4ef08bd2d2712e79bda2",
    "contractId": "ZjViZjJmYzYtNzEzNS00ZDk0LWE2ZmUtYzI2ZTQ1NDNiYzVhdGVzdDM",
    "status": "valid",
    "issuedAt": "2017-09-13T21:59:23.9868631Z"
}

Wyszukaj poświadczenia

Możesz wyszukać weryfikowalne poświadczenia z określonymi oświadczeniami indeksu. Ponieważ jest przechowywany tylko skrót, należy wyszukać określoną wartość obliczeniową. Algorytm, którego należy użyć, to: Base64Encode(SHA256(contractid + claim value)) Przykład w języku C# wygląda następująco:

  string claimvalue = "Bowen";
  string contractid = "<...your-contract-id-value...>";
  string output;

  using (var sha256 = SHA256.Create())
  {
    var input = contractid + claimvalue;
    byte[] inputasbytes = Encoding.UTF8.GetBytes(input);
    hashedsearchclaimvalue = Convert.ToBase64String(sha256.ComputeHash(inputasbytes));
    output = System.Net.WebUtility.UrlEncode( hashedsearchclaimvalue );
  }

Poniższe żądanie pokazuje, jak dodać wartość obliczeniową do parametru filtru żądania. Obecnie obsługiwany jest tylko format filter=indexclaimhash eq.

Żądanie systemu HTTP

GET /v1.0/verifiableCredentials/authorities/:authorityId/contracts/:contractId/credentials?filter=indexclaimhash eq {hashedsearchclaimvalue}

Nagłówki żądań

Nagłówek Wartość
Autoryzacja Elementu nośnego (token). Wymagania
Typ zawartości application/json

Treść żądania

Dla tej metody nie należy dostarczać treści żądania.

Komunikat odpowiedzi

Przykładowy komunikat

HTTP/1.1 200 OK
Content-type: application/json

{
    "value": [
        {
            "id": "urn:pic:aea42fb3724b4ef08bd2d2712e79bda2",
            "status": "valid",
            "issuedAtTimestamp": "Sat, 5 Feb 2022 03:51:29 GMT"
        }
    ]
}

Odwoływanie poświadczeń

Ten interfejs API umożliwia odwołanie określonego poświadczenia po wyszukaniu poświadczeń przy użyciu interfejsu API wyszukiwania, które można odwołać, określając określony identyfikator poświadczeń.

Żądanie systemu HTTP

POST /v1.0/verifiableCredentials/authorities/:authorityId/contracts/:contractId/credentials/:credentialid/revoke

Nagłówki żądań

Nagłówek Wartość
Autoryzacja Elementu nośnego (token). Wymagania
Typ zawartości application/json

Treść żądania

Dla tej metody nie należy dostarczać treści żądania.

Komunikat odpowiedzi

HTTP/1.1 204 No Content
Content-type: application/json

Rezygnacja

Ta metoda całkowicie usunie wszystkie wystąpienia weryfikowalnej usługi poświadczeń w tej dzierżawie. Usuwa wszystkie skonfigurowane kontrakty. Nie można sprawdzić każdego wystawionego poświadczenia weryfikowalnego pod kątem odwołania. Tej akcji nie można cofnąć.

Ostrzeżenie

Tej akcji nie można cofnąć i unieważni wszystkie wystawione poświadczenia weryfikowalne i utworzone kontrakty.

Żądanie HTTP

POST /v1.0/verifiableCredentials/optout

Nagłówki żądań

Nagłówek Wartość
Autoryzacja Elementu nośnego (token). Wymagania
Typ zawartości application/json

Treść żądania

Nie należy podawać treści żądania dla tej metody

Komunikat odpowiedzi

Przykładowy komunikat odpowiedzi

HTTP/1.1 200 OK
Content-type: application/json

OK

Uwaga

Uwaga

Jeśli nie masz uprawnień do usuwania w usłudze Key Vault, zwrócimy komunikat o błędzie i nadal rezygnujemy

Następne kroki