Weryfikowalny interfejs API administratora poświadczeń
Interfejs API administratora Zweryfikowany identyfikator Microsoft Entra 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 administratora 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
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 odczytu/zapisu obiektów kontraktu |
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
i uprawnień wymaganych z tabeli. Gdy aplikacja uzyskuje token 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. Ten proces można 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 dokumentu DID | ||
Obracanie klucza podpisywania | Organ | Obracanie klucza podpisywania |
tworzenie klucza podpisywania | Organ | Tworzenie klucza podpisywania |
Synchronizowanie z dokumentem DID | Organ | Synchronizowanie dokumentu DID z nowym kluczem podpisywania |
Generowanie dobrze znanej konfiguracji DID | ||
Weryfikowanie dobrze znanej konfiguracji DID |
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ść jest zawsze 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 i przechowuje klucz w określonej usłudze Azure Key Vault i ustawia uprawnienia do tej usługi Key Vault dla weryfikowalnej usługi poświadczeń i tworzy nowy 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 zakończy się niepowodzeniem, otrzymasz tę 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 dokumentu DID przez usługę administrator musi umieścić plik w lokalizacji https://domain/.well-known/did.json.
Żą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 weryfikuje did oraz podpis.
Żą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
Klucz podpisywania Obróć tworzy nowy klucz prywatny dla urzędu did:web. Aby odzwierciedlić aktualizację, należy ponownie zarejestrować dokument DID. Po zakończeniu ponownej rejestracji syncWithDidDocument nakazuje systemowi rozpoczęcie używania 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
didDocumentStatus
zmienia się 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
}
Tworzenie klucza podpisywania
Klucz podpisywania Create tworzy nowy klucz prywatny w już istniejącym magazynie Key Vault dla urzędu did:web. Dokument DID powinien zostać ponownie zarejestrowany, aby odzwierciedlić aktualizację, ponieważ didDocumentStatus
urzędu zostanie zmieniony na outOfSync
. Po ponownym zarejestrowaniu dokumentu DID wywołaj syncWithDidDocument poinformuj system, aby zaczął używać nowego klucza do podpisywania.
Żądanie systemu HTTP
POST /v1.0/verifiableCredentials/authorities/:authorityId/didInfo/signingKeys
Nagłówki żądań
Nagłówek | Wartość |
---|---|
Autoryzacja | Elementu nośnego (token). Wymagania |
Typ zawartości | application/json |
Treść żądania
{
"signingKeyCurve": "P-256"
}
Komunikat odpowiedzi
HTTP/1.1 200 OK
Content-type: application/json
{
"id": "00aa00aa-bb11-cc22-dd33-44ee44ee44ee",
"keyUrl": "https://vcwingtipskv.vault.azure.net/keys/vcSigningKey-00aa00aa-bb11-cc22-dd33-44ee44ee44ee/5255b9f2d9b94dc19a369ff0d36e3407",
"curve": "P-256"
}
Synchronizowanie z dokumentem DID
Po rotacji klucza podpisywania dokument DID powinien zostać ponownie zarejestrowany , aby odzwierciedlić aktualizację. Po zakończeniu procesu synchronizatorWithDidDocument informuje system o rozpoczęciu używania 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
didDocumentStatus
zmienia się z outOfSync
na published
po pomyślnym wywołaniu.
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 zbierania i zbierania zaświadczeń, takich jak oświadczenia testowane samodzielnie, inne weryfikowalne poświadczenia jako dane wejściowe lub token identyfikatora odebrane po zalogowaniu się użytkownika do dostawcy tożsamości zgodnego z 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ładowy komunikat:
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 dla użytkowników, którzy otrzymają powiadomienie, że to VC jest gotowe do wystawienia |
issueNotificationAllowedToGroupOids |
tablica ciągów groupId | tablica identyfikatorów grup, dla których to poświadczenie jest dostępne |
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żna indeksować według 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 wartość jest adresem URL, musi być osiągalna 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.z13.web.core.windows.net/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ładowy komunikat:
{
"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 używana nazwa musi być unikatowa w dzierżawie. W przypadku tworzenia wielu urzędów nazwa umowy musi być unikatowa we wszystkich władzach. Nazwa kontraktu jest częścią adresu URL kontraktu używanego 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.
Żą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 usuwa 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żniać wszystkich wystawionych poświadczeń weryfikowalnych i utworzonych kontraktów.
Żą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, zwracamy komunikat o błędzie i nadal rezygnujemy