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ścimappings
to:givenName
, ,displayName
,preferredLanguage
userPrincipalName
,surname
,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