Dela via


Administratörs-API för verifierbara autentiseringsuppgifter

Med Microsoft Entra – verifierat ID admin-API:et kan du hantera alla aspekter av verifierbara autentiseringsuppgifter. Det erbjuder ett sätt att konfigurera en helt ny tjänst, hantera och skapa verifierbara autentiseringsuppgifter, återkalla verifierbara autentiseringsuppgifter och helt välja bort tjänsten också.

API:et är avsett för utvecklare som är bekväma med RESTful-API:er och tillräcklig behörighet för Microsoft Entra-klientorganisationen för att aktivera tjänsten

Bas-URL

Administratörs-API:et är en server via HTTPS. Alla URL:er som refereras i dokumentationen har följande bas: https://verifiedid.did.msidentity.com.

Autentisering

API:et skyddas via Microsoft Entra-ID och använder OAuth2-ägartoken. Åtkomsttoken kan vara för en användare eller för ett program.

Användarbäraretoken

Appregistreringen måste ha API-behörigheten för Verifiable Credentials Service Admin och när du hämtar åtkomsttoken ska appen använda omfånget 6a8b4b39-c021-437c-b060-5a14a3fd65f3/full_access. Åtkomsttoken måste vara för en användare med global administratör eller rollen administratör för autentiseringsprincip. En användare med rollen global läsare kan utföra skrivskyddade API-anrop.

Programbäraretoken

Tjänsten Verifiable Credentials Service Admin stöder följande programbehörigheter.

Behörighet beskrivning
VerifiableCredential.Authority.ReadWrite Behörighet att läsa/skriva utfärdarobjekt
VerifiableCredential.Contract.ReadWrite Behörighet att läsa/skriva kontraktobjekt
VerifiableCredential.Credential.Search Behörighet att söka efter en autentiseringsuppgift att återkalla
VerifiableCredential.Credential.Revoke Behörighet att återkalla en tidigare utfärdad autentiseringsuppgift
VerifiableCredential.Network.Read Behörighet att läsa poster från det verifierade ID-nätverket

Appregistreringen måste ha API-behörighet för Verifiable Credentials Service Admin och behörigheter som krävs från tabellen. När en app hämtar en åtkomsttoken, via -flödet för klientautentiseringsuppgifter, bör appen använda omfånget 6a8b4b39-c021-437c-b060-5a14a3fd65f3/.default.

Om appen har för avsikt att skapa en ny utfärdare behöver den två saker. Först behöver appregistreringen behörigheten VerifiableCredential.Authority.ReadWrite . För det andra måste appen ha Create Key behörighet i Key Vaults-åtkomstprinciper. Om appen bara läser/skriver befintliga myndigheter behöver den inte key vault-behörigheten.

Introduktion

Det här API:et hjälper dig att skapa en ny miljö så att nya myndigheter kan konfigureras. Den här processen kan utlösas manuellt genom att du navigerar till sidan Verifiable Credential i Azure-portalen. Du behöver bara anropa det här API:et en gång och bara om du vill konfigurera en helt ny miljö bara med API:et.

HTTP-begäran

POST /v1.0/verifiableCredentials/onboard

Använd den här slutpunkten för att slutföra etableringen av verifierbara autentiseringsuppgifter i klientorganisationen. Systemet skapar resten av tjänstens huvudnamn om de inte har etablerats ännu.

Begärandehuvuden

Header Värde
Auktorisering Bearer (token). Obligatoriskt
Innehållstyp application/json

Begärandetext

Ange ingen begärandetext för den här metoden.

Returmeddelande

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"
}

Upprepade gånger resulterar anropet av det här API:et i exakt samma returmeddelande.

Myndigheterna

Den här slutpunkten kan användas för att skapa eller uppdatera en verifierbar tjänstinstans för autentiseringsuppgifter.

Metoder

Metoder Returtyp beskrivning
Hämta utfärdare Utfärdare Läs egenskaper för en utfärdare
Lista över utfärdare Utfärdarmatris Hämta en lista över alla konfigurerade tjänster för myndigheter/verifierbara autentiseringsuppgifter
Skapa utfärdare Utfärdare Skapa en ny utfärdare
Uppdatera utfärdare Utfärdare Uppdatera utfärdare
Ta bort utfärdare Utfärdare Ta bort utfärdare
Generera DID-dokument
Rotera signeringsnyckel Utfärdare Rotera signeringsnyckel
Skapa signeringsnyckel Utfärdare Skapa signeringsnyckel
Synkronisera med DID-dokument Utfärdare Synkronisera DID-dokument med ny signeringsnyckel
Generera välkänd DID-konfiguration
Verifiera välkänd DID-konfiguration

Hämta utfärdare

Hämta egenskaperna för en konfigurerad utfärdare eller verifierbar tjänstinstans för autentiseringsuppgifter.

HTTP-begäran

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

:authorityId Ersätt med värdet för en av de konfigurerade myndigheterna.

Begärandehuvuden

Header Värde
Auktorisering Bearer (token). Obligatoriskt
Innehållstyp application/json

Begärandetext

Ange inte en begärandetext för den här metoden

Svarsmeddelande

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/"
    }
}

Svaret innehåller följande egenskaper.

Typ av utfärdare

Property Type beskrivning
Id sträng Ett automatiskt genererat unikt ID som kan användas för att hämta eller uppdatera den specifika instansen av den verifierbara autentiseringstjänsten
name sträng Det egna namnet på den här instansen av den verifierbara autentiseringstjänsten
status sträng status för tjänsten är det här värdet alltid enabled
didModel didModel Information om DID och nycklar
keyVaultMetadata keyVaultMeta-data Information om det använda Key Vault

didModel-typ

Webb

Property Type beskrivning
did sträng DID för den här verifierbara tjänstinstansen för autentiseringsuppgifter
signingKeys strängmatris URL till signeringsnyckeln
linkedDomainUrls strängmatris Domäner som är länkade till den här DID-filen förväntar sig en enda post
didModel didModel Information om DID och nycklar
didDocumentStatus sträng status för DID är värdet alltid published för den här metoden

keyVaultMetadata-typ

Property Type beskrivning
subscriptionId sträng Den Azure-prenumeration som det här Key Vault finns i
resourceGroup sträng namnet på resursgruppen från det här Nyckelvalvet
resourceName sträng Key Vault-namn
resourceUrl sträng URL till det här Nyckelvalvet

Lista myndigheter

Hämta alla konfigurerade myndigheter eller verifierbara autentiseringsuppgifter för den här klientorganisationen

HTTP-begäran

GET /v1.0/verifiableCredentials/authorities

Begärandehuvuden

Header Värde
Auktorisering Bearer (token). Obligatoriskt
Innehållstyp application/json

Begärandetext

Ange ingen begärandetext för den här metoden.

Svarsmeddelande

Svarsmeddelande är en matris med myndigheter

Exempel:

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/"
            }
        }
    ]
}

Skapa utfärdare

Det här anropet skapar en ny privat nyckel och lagrar nyckeln i det angivna Azure Key Vault och anger behörigheterna till det här nyckelvalvet för den verifierbara autentiseringstjänsten och skapar nya DID- med motsvarande DID-dokument.

HTTP-begäran

POST /v1.0/verifiableCredentials/authorities

Begärandehuvuden

Header Värde
Auktorisering Bearer (token). Obligatoriskt
Innehållstyp application/json

Begärandetext

I begärandetexten anger du en JSON-representation av följande

Property Type beskrivning
name sträng Visningsnamnet för den här instansen av tjänsten
linkedDomainUrl sträng Domänen som är länkad till denna DID
didMethod sträng Måste vara web
keyVaultMetadata keyVaultMetadata metadata för specifika nyckelvalv

Exempelmeddelande:

{
  "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/"
  }
}

Svarsmeddelande

När svarsmeddelandet har slutförts innehåller det namnet på utfärdaren

Exempelmeddelande för 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
}

Exempelmeddelande för did: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/"
    }
}

Kommentarer

Du kan skapa flera myndigheter med egna DID och privata nycklar. Dessa visas inte i användargränssnittet för Azure Portal. För närvarande stöder vi endast att ha en auktoritet. Vi har inte testat alla scenarier fullständigt med flera skapade myndigheter. Om du provar detta kan du berätta för oss om din upplevelse.

Uppdatera utfärdare

Den här metoden kan användas för att uppdatera visningsnamnet för den här specifika instansen av den verifierbara autentiseringstjänsten.

HTTP-begäran

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

Ersätt värdet :authorityId för med värdet för det utfärdar-ID som du vill uppdatera.

Begärandehuvuden

Header Värde
Auktorisering Bearer (token). Obligatoriskt
Innehållstyp application/json

Begärandetext

Ange en JSON-representation av följande i begärandetexten.

Property Type beskrivning
name sträng Visningsnamnet för den här instansen av tjänsten

Exempelmeddelande

{
  "name":"ExampleIssuerName"
}

Ta bort utfärdare

Den här metoden kan användas för att ta bort en utfärdare. För närvarande kan endast did:ion myndigheter tas bort. När du tar bort en utfärdare blir alla utfärdade verifierade ID-autentiseringsuppgifter ogiltiga och kan inte verifieras längre när den utfärdande utfärdaren är borta.

HTTP-begäran

DELETE /beta/verifiableCredentials/authorities/:authorityId

Ersätt värdet :authorityId för med värdet för det utfärdar-ID som du vill ta bort.

Begärandehuvuden

Header Värde
Auktorisering Bearer (token). Obligatoriskt
Innehållstyp application/json

Begärandetext

Ingen begärandetext

Svarsmeddelande

Exempel på svarsmeddelande:

Svar på en borttagningsutfärdaråtgärd har slutförts.

HTTP/1.1 200 OK

Om borttagningen av en utfärdare lyckades men rensningen av Azure Key Vault-nycklar misslyckas får du det här svaret.

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"
    }
}

Välkänd DID-konfiguration

Metoden generateWellknownDidConfiguration genererar den signerade did-configuration.json-filen. Filen måste laddas upp till .well-known mappen i roten på den webbplats som finns för domänen i den länkade domänen för den här verifierbara instansen av autentiseringsuppgifter. Instruktioner finns här.

HTTP-begäran

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

Begärandehuvuden

Header Värde
Auktorisering Bearer (token). Obligatoriskt
Innehållstyp application/json

Begärandetext

Du måste ange en av domänerna i den angivna utfärdarens länkadeDomäner.

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

Svarsmeddelande

Exempel på svarsmeddelande:

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>..."
    ]
}

Spara det här resultatet med filnamnet did-configuration.json och ladda upp filen till rätt mapp och webbplats. Om du anger en domän som inte är länkad till det här DID/DID-dokumentet får du ett fel:

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/"
  }
}

Kommentarer

Du kan peka flera DID:er till samma domän. Om du väljer den här konfigurationen måste du kombinera genererade token och placera dem i samma did-configuration.json fil. Filen innehåller en matris med dessa token.

Till exempel:

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

Generera DID-dokument

Det här anropet genererar DID-dokumentet som används för DID:WEB-identifierare. När tjänsten har genererat DID-dokumentet måste administratören placera filen på https://domain/.well-known/did.json plats.

HTTP-begäran

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

Begärandehuvuden

Header Värde
Auktorisering Bearer (token). Obligatoriskt
Innehållstyp application/json

Begärandetext

Ange ingen begärandetext för den här metoden.

Svarsmeddelande

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"
    ]
}

Anmärkning

Kräver att anroparen har behörigheter för nyckellistan i målnyckelvalvet.

Verifiera välkänd DID-konfiguration

Det här anropet kontrollerar konfigurationen av DID. Den laddar ned den välkända DID-konfigurationen och validerar DID och signaturen.

HTTP-begäran

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

Begärandehuvuden

Header Värde
Auktorisering Bearer (token). Obligatoriskt
Innehållstyp application/json

Begärandetext

Ange ingen begärandetext för den här metoden.

Svarsmeddelande

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

Rotera signeringsnyckel

Signeringsnyckeln Rotera skapar en ny privat nyckel för did:web-utfärdaren. DID-dokumentet bör registreras igen för att återspegla uppdateringen. När omregistreringen är klar uppmanar synkroniseraWithDidDocument systemet att börja använda den nya nyckeln för signering.

HTTP-begäran

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

Begärandehuvuden

Header Värde
Auktorisering Bearer (token). Obligatoriskt
Innehållstyp application/json

Begärandetext

Ange ingen begärandetext för den här metoden.

Svarsmeddelande

didDocumentStatus ändras till 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
}

Skapa signeringsnyckel

Skapa signeringsnyckel skapar en ny privat nyckel i det redan befintliga nyckelvalvet för did:web-utfärdaren. DID-dokumentet bör registreras på nytt för att återspegla uppdateringen när didDocumentStatus för utfärdaren ändras till outOfSync. När DID-dokumentet har registrerats igen anropar du synkroniseraWithDidDocument uppmana systemet att börja använda den nya nyckeln för signering.

HTTP-begäran

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

Begärandehuvuden

Header Värde
Auktorisering Bearer (token). Obligatoriskt
Innehållstyp application/json

Begärandetext

{
	"signingKeyCurve": "P-256"
}

Svarsmeddelande

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"
}

Synkronisera med DID-dokument

När du har roterat signeringsnyckeln bör DID-dokumentet registreras igen för att återspegla uppdateringen. När processen är klar uppmanar synchronizeWithDidDocument systemet att börja använda den nya nyckeln för signering.

HTTP-begäran

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

Begärandehuvuden

Header Värde
Auktorisering Bearer (token). Obligatoriskt
Innehållstyp application/json

Begärandetext

Ange ingen begärandetext för den här metoden.

Svarsmeddelande

didDocumentStatus ändras från outOfSync till published vid ett lyckat anrop.

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
}

Kontrakt

Med den här slutpunkten kan du skapa nya kontrakt och uppdatera befintliga kontrakt. Kontrakt består av två delar som representeras av två JSON-definitioner. Information om hur du utformar och skapar ett kontrakt manuellt finns här.

  • Visningsdefinitionen används av administratörer för att styra utseendet på en verifierbar autentiseringsuppgift, till exempel bakgrundsfärg, logotyp och rubrik för de verifierbara autentiseringsuppgifterna. Den här filen innehåller också de anspråk som måste lagras i den verifierbara autentiseringsuppgiften.
  • Regeldefinitionen innehåller information om hur du samlar in och samlar in attesteringar som självbebevisade anspråk, en annan verifierbar autentiseringsuppgift som indata eller en ID-token som tas emot efter att en användare loggar in på en OIDC-kompatibel identitetsprovider.

Metoder

Metoder Returtyp beskrivning
Hämta kontrakt Contract Läsa egenskaper för ett kontrakt
Lista kontrakt Kontraktsinsamling Hämta en lista över alla konfigurerade kontrakt
Skapa kontrakt Contract Skapa ett nytt kontrakt
Uppdatera kontrakt Contract Uppdatera kontrakt

Hämta kontrakt

HTTP-begäran

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

:authorityId Ersätt och :contractId med rätt värde för utfärdaren och kontraktet.

Begärandehuvuden

Header Värde
Auktorisering Bearer (token). Obligatoriskt
Innehållstyp application/json

Begärandetext

Ange ingen begärandetext för den här metoden.

Svarsmeddelande

Exempelmeddelande:

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
}

Svaret innehåller följande egenskaper

Kontraktstyp

Property Type beskrivning
Id sträng kontrakts-ID
name sträng Det egna namnet på det här kontraktet
status sträng Alltid Enabled
manifestUrl sträng URL till kontraktet som används i utfärdandebegäran
issueNotificationEnabled boolean inställd på true för användare meddelas att den här VC:en är redo att utfärdas
issueNotificationAllowedToGroupOids matris med groupId-strängar matris med grupp-ID:t som den här autentiseringsuppgiften är tillgänglig för
availableInVcDirectory boolean Är det här kontraktet publicerat i verifierbart autentiseringsnätverk
reglemente rulesModel regeldefinition
Visar displayModel-matris visa definitioner
allowOverrideValidityIntervalOnIssuance boolean Om API-anropet createIssuanceRequest tillåts åsidosätta förfallodatum för autentiseringsuppgifterna. Detta är endast giltigt för idTokenHint-flöden .

rulesModel-typ

Property Type beskrivning
attestations Intyg beskriva indata som stöds för reglerna
validityInterval Nummer det här värdet visar livslängden för autentiseringsuppgifterna
vc vcType-matris typer för det här kontraktet
customStatusEndpoint [customStatusEndpoint] (#customstatusendpoint-typ) (valfritt) statusslutpunkt som ska inkluderas i den verifierbara autentiseringsuppgiften för det här kontraktet

Om egenskapsegenskapen customStatusEndpoint inte har angetts anonymous används statusslutpunkten.

Typ av attesteringar

Property Type beskrivning
idTokens idTokenAttestation (matris) (valfritt) beskriver indata för ID-token
idTokenHints idTokenHintAttestation (matris) (valfritt) beskriver indata för ID-tokentips
presentations verifiablePresentationAttestation (matris) (valfritt) beskriver verifierbara presentationsindata
selfIssued selfIssuedAttestation (matris) (valfritt) beskriver själv utfärdade indata
accessTokens accessTokenAttestation (matris) (valfritt) beskriver indata för åtkomsttoken

idTokenAttestation-typ

Property Type beskrivning
mapping claimMapping (valfritt) regler för att mappa indataanspråk till utdataanspråk i den verifierbara autentiseringsuppgiften
configuration sträng (url) plats för identitetsproviderns konfigurationsdokument
clientId sträng klient-ID som ska användas när du hämtar ID-token
redirectUri sträng omdirigerings-URI som ska användas när du hämtar ID-token MÅSTE vara vcclient://openid/
scope sträng utrymmesavgränsad lista över omfång som ska användas när du hämtar ID-token
required booleskt värde (standard falskt) som anger om detta attestering krävs eller inte

idTokenHintAttestation-typ

Property Type beskrivning
mapping claimMapping (valfritt) regler för att mappa indataanspråk till utdataanspråk i den verifierbara autentiseringsuppgiften
required booleskt värde (standard falskt) som anger om detta attestering krävs eller inte
trustedIssuers sträng (matris) en lista över DID:ar som tillåts utfärda verifierbara autentiseringsuppgifter för det här kontraktet

verifiablePresentationAttestation-typ

Property Type beskrivning
mapping claimMapping (valfritt) regler för att mappa indataanspråk till utdataanspråk i den verifierbara autentiseringsuppgiften
credentialType sträng (valfritt) nödvändig typ av autentiseringsuppgifter för indata
required booleskt värde (standard falskt) som anger om detta attestering krävs eller inte
trustedIssuers sträng (matris) en lista över DID:ar som tillåts utfärda verifierbara autentiseringsuppgifter för det här kontraktet

selfIssuedAttestation-typ

Property Type beskrivning
mapping claimMapping (valfritt) regler för att mappa indataanspråk till utdataanspråk i den verifierbara autentiseringsuppgiften
required booleskt värde (standard falskt) som anger om detta attestering krävs eller inte

accessTokenAttestation-typ

Property Type beskrivning
mapping claimMapping (valfritt) regler för att mappa indataanspråk till utdataanspråk i den verifierbara autentiseringsuppgiften
required booleskt värde (standard falskt) som anger om detta attestering krävs eller inte

Värden som stöds inputClaim för egenskapen mappings är: givenName, displayName, preferredLanguage, userPrincipalName, surname, mail, , jobTitle. photo

claimMapping-typ

Property Type beskrivning
inputClaim sträng namnet på anspråket som ska användas från indata
outputClaim sträng namnet på anspråket i den verifierbara autentiseringsuppgiften
indexed booleskt värde (standard falskt) som anger om värdet för det här anspråket används för sökning. Endast ett clientMapping-objekt kan indexeras per angivet kontrakt
required booleskt värde (standard falskt) som anger om den här mappningen krävs eller inte
type sträng (valfritt) typ av anspråk

customStatusEndpoint-typ

Property Type beskrivning
url sträng (url) URL:en för den anpassade statusslutpunkten
type sträng typ av slutpunkt

Exempel:

"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

Property Type beskrivning
locale sträng språkvarianten för den här skärmen
credential displayCredential visningsegenskaperna för de verifierbara autentiseringsuppgifterna
consent displayConsent kompletterande data när de verifierbara autentiseringsuppgifterna utfärdas
claims displayClaims-matris etiketter för de anspråk som ingår i de verifierbara autentiseringsuppgifterna

displayCredential-typ

Property Type beskrivning
title sträng rubrik för autentiseringsuppgifterna
issuedBy sträng namnet på utfärdaren av autentiseringsuppgifterna
backgroundColor tal (hex) bakgrundsfärg för autentiseringsuppgifterna i hex, till exempel #FFAABB
textColor tal (hex) textfärg för autentiseringsuppgifterna i hex, till exempel #FFAABB
description sträng kompletterande text som visas tillsammans med varje autentiseringsuppgift
logo displayCredentialLogo logotypen som ska användas för autentiseringsuppgifterna

displayCredentialLogo-typ

Property Type beskrivning
uri string (uri) URI för logotypen. Om värdet är en URL måste det kunna nås via det offentliga internet anonymt.
description sträng beskrivningen av logotypen

displayConsent-typ

Property Type beskrivning
title sträng medgivandets titel
instructions sträng kompletterande text som ska användas när medgivande visas

displayClaims-typ

Property Type beskrivning
label sträng etiketten för anspråket som visas
claim sträng namnet på det anspråk som etiketten gäller för
type sträng anspråkets typ
description sträng (valfritt) beskrivningen av anspråket

Exempel:

{
  "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"
                }
            ]
        }
    ]
}

Lista kontrakt

Det här API:et visar alla kontrakt som konfigurerats i den aktuella klientorganisationen för den angivna utfärdaren.

HTTP-begäran

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

Begärandehuvuden

Header Värde
Auktorisering Bearer (token). Obligatoriskt
Innehållstyp application/json

Begärandetext

Ange ingen begärandetext för den här metoden.

Svarsmeddelande

Exempelmeddelande:

{
    "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}]
        }
    ]
}

Skapa kontrakt

När du skapar ett kontrakt måste namnet du använder vara unikt i klientorganisationen. Om du skapar flera myndigheter måste kontraktsnamnet vara unikt för alla myndigheter. Namnet på kontraktet är en del av kontrakt-URL:en som används i utfärdandebegäranden.

HTTP-begäran

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

Begärandehuvuden

Header Värde
Auktorisering Bearer (token). Obligatoriskt
Innehållstyp application/json

Begärandetext

Exempelbegäranden

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

Svarsmeddelande

Exempelmeddelande:

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://..."
}

Uppdatera kontrakt

Med det här API:et kan du uppdatera kontraktet.

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

Exempelbegäran:

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

Svarsmeddelande

Exempelmeddelande:

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
}

Merit

Med den här slutpunkten kan du söka efter utfärdade verifierbara autentiseringsuppgifter, kontrollera återkallningsstatus och återkalla autentiseringsuppgifter.

Metoder

Metoder Returtyp beskrivning
Hämta autentiseringsuppgifter Merit Läsa egenskaper för en autentiseringsuppgift
Autentiseringsuppgifter för sökning Samling med autentiseringsuppgifter Söka i en lista med autentiseringsuppgifter med ett specifikt anspråksvärde
Återkalla autentiseringsuppgifter Återkalla specifika autentiseringsuppgifter

Hämta autentiseringsuppgifter

Med det här API:et kan du hämta en specifik autentiseringsuppgift och kontrollera statusen för att se om den har återkallats eller inte.

HTTP-begäran

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

Begärandehuvuden

Header Värde
Auktorisering Bearer (token). Obligatoriskt
Innehållstyp application/json

Svarsmeddelande

Exempelmeddelande

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

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

Autentiseringsuppgifter för sökning

Du kan söka efter verifierbara autentiseringsuppgifter med specifika indexanspråk. Eftersom endast en hash lagras måste du söka efter det specifika beräknade värdet. Algoritmen du behöver använda är: Base64Encode(SHA256(contractid + anspråksvärde)) Ett exempel i C# ser ut så här:

  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 );
  }

Följande begäran visar hur du lägger till det beräknade värdet i filterparametern för begäran.

HTTP-begäran

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

Begärandehuvuden

Header Värde
Auktorisering Bearer (token). Obligatoriskt
Innehållstyp application/json

Begärandetext

Ange ingen begärandetext för den här metoden.

Svarsmeddelande

Exempelmeddelande

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"
        }
    ]
}

Återkalla autentiseringsuppgifter

Med det här API:et kan du återkalla en specifik autentiseringsuppgift, när du har sökt efter autentiseringsuppgifterna med hjälp av sök-API:et kan autentiseringsuppgifterna återkallas genom att ange det specifika autentiserings-ID:t.

HTTP-begäran

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

Begärandehuvuden

Header Värde
Auktorisering Bearer (token). Obligatoriskt
Innehållstyp application/json

Begärandetext

Ange ingen begärandetext för den här metoden.

Svarsmeddelande

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

Avregistrera dig

Den här metoden tar bort alla instanser av den verifierbara autentiseringstjänsten i den här klientorganisationen. Det tar bort alla konfigurerade kontrakt. Alla utfärdade verifierbara autentiseringsuppgifter kan inte kontrolleras för återkallning. Det går inte att ångra den här åtgärden.

Varning

Den här åtgärden kan inte ångras och ogiltigförklarar alla utfärdade verifierbara autentiseringsuppgifter och skapade kontrakt.

HTTP-begäran

POST /v1.0/verifiableCredentials/optout

Begärandehuvuden

Header Värde
Auktorisering Bearer (token). Obligatoriskt
Innehållstyp application/json

Begärandetext

Ange inte en begärandetext för den här metoden

Svarsmeddelande

Exempel på svarsmeddelande

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

OK

Anmärkning

Kommentar

Om du inte har borttagningsbehörigheter för Key Vault returnerar vi ett felmeddelande och avregistrerar dig fortfarande

Nästa steg