可驗認證管理員 API
Microsoft Entra 已驗證識別碼管理員 API 可讓您管理可驗認證服務的所有層面。 其提供一種方式來設定全新的服務、管理和建立可驗認證合約、撤銷可驗認證,以及完全退出服務。
API 適用於熟悉 RESTful API 的開發人員,以及在 Microsoft Entra 租用戶上有足夠權限來啟用服務的開發人員
基礎 URL
管理員 API 是透過 HTTPS 的伺服器。 文件中參考的所有 URL 都有下列基礎:https://verifiedid.did.msidentity.com
。
驗證
API 會透過 Microsoft Entra ID 來保護,並使用 OAuth2 持有人權杖。 存取權杖可以用於使用者或應用程式。
使用者持有人權杖
應用程式註冊需要具有 Verifiable Credentials Service Admin
的 API 權限,然後在取得存取權杖時,應用程式應該使用範圍 6a8b4b39-c021-437c-b060-5a14a3fd65f3/full_access
。 存取權杖必須為具有全域管理員 (部分機器翻譯) 或驗證原則管理員 (部分機器翻譯) 角色的使用者所擁有。 具有角色全域讀取者 (部分機器翻譯) 的使用者可以執行唯讀 API 呼叫。
應用程式持有人權杖
Verifiable Credentials Service Admin
服務支援下列應用程式權限。
權限 | 描述 |
---|---|
VerifiableCredential.Authority.ReadWrite | 讀取/寫入授權單位物件的權限 |
VerifiableCredential.Contract.ReadWrite | 讀取/寫入合約物件的權限 |
VerifiableCredential.Credential.Search | 搜尋要撤銷的認證的權限 |
VerifiableCredential.Credential.Revoke | 撤銷先前發出的認證 (部分機器翻譯) 的權限 |
VerifiableCredential.Network.Read | 從已驗證識別碼網路 (部分機器翻譯) 讀取項目的權限 |
應用程式註冊必須具有 Verifiable Credentials Service Admin
的 API 權限和上表要求的權限。 透過用戶端認證流程取得存取權杖時,應用程式應該使用範圍 6a8b4b39-c021-437c-b060-5a14a3fd65f3/.default
。
如果應用程式想要建立新的授權單位,則需要兩個項目。 首先,應用程式註冊需要 VerifiableCredential.Authority.ReadWrite
權限。 其次,應用程式需要 Key Vault 存取原則中的 Create Key
權限。 如果應用程式只會讀取/寫入現有的授權單位,則不需要 Key Vault 權限。
登入
此 API 旨在協助建立新的環境,以便可以設定新的授權單位。 您也可以瀏覽至 Azure 入口網站中的 [可驗認證] 頁面,手動觸發此動作。 您只需要呼叫此 API 一次,而且只在您想要僅使用 API 設定全新的環境時才需要呼叫。
HTTP 要求
POST /v1.0/verifiableCredentials/onboard
使用此端點完成租用戶中可驗認證服務的佈建。 如果尚未佈建其餘的服務主體,系統會建立這些服務主體。
要求標頭
標頭 | 數值 |
---|---|
授權 | 持有人 (權杖)。 必要 |
內容-類型 | application/json |
要求本文
請不要為此方法提供要求本文。
傳回訊息
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"
}
重複呼叫此 API 將會產生完全相同的傳回訊息。
授權單位
此端點可以用來建立或更新可驗認證服務執行個體。
方法
方法 | 傳回類型 | 描述 |
---|---|---|
取得授權單位 | 授權單位 | 讀取授權單位的屬性 |
列出授權單位 | 授權單位陣列 | 取得所有已設定授權單位/可驗認證服務的清單 |
建立授權單位 | 授權單位 | 建立新的授權單位 |
更新授權單位 | 授權單位 | 更新授權單位 |
刪除授權單位 | 授權單位 | 刪除授權單位 |
產生已知的 DID 設定 | ||
產生 DID 文件 | ||
驗證已知的 DID 設定 | ||
輪替簽署金鑰 | 授權單位 | 輪替簽署金鑰 |
與 DID 文件同步 | 授權單位 | 使用新的簽署金鑰同步 DID 文件 |
取得授權單位
擷取已設定授權單位或可驗認證服務執行個體的屬性。
HTTP 要求
GET /v1.0/verifiableCredentials/authorities/:authorityId
將 :authorityId
取代為其中一個已設定授權單位的值。
要求標頭
標頭 | 數值 |
---|---|
授權 | 持有人 (權杖)。 必要 |
內容-類型 | application/json |
要求本文
請不要提供此方法的要求本文
回應訊息
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/"
}
}
此回應包含下列屬性。
授權單位類型
屬性 | 類型 | 描述 |
---|---|---|
Id |
字串 | 自動產生的唯一識別碼,可用來擷取或更新可驗認證服務的特定執行個體 |
name |
字串 | 這個可驗認證服務執行個體的自訂名稱 |
status |
字串 | 服務的狀態,此值將一律為 enabled |
didModel | didModel | DID 和金鑰的相關資訊 |
keyVaultMetadata | keyVaultMeta 資料 | 所使用金鑰保存庫的相關資訊 |
didModel 類型
Web
屬性 | 類型 | 描述 |
---|---|---|
did |
字串 | 這個可驗認證服務執行個體的 DID |
signingKeys |
字串陣列 | 簽署金鑰的 URL |
linkedDomainUrls |
字串陣列 | 連結至此 DID 的網域,預期有一個項目 |
didModel | didModel | DID 和金鑰的相關資訊 |
didDocumentStatus |
字串 | DID 的狀態,這個方法的值一律為 published |
keyVaultMetadata 類型
屬性 | 類型 | 描述 |
---|---|---|
subscriptionId |
字串 | 此 Key Vault 所在的 Azure 訂用帳戶 |
resourceGroup |
字串 | 來自此 Key Vault 的資源群組名稱 |
resourceName |
字串 | Key Vault 名稱 |
resourceUrl |
字串 | 此 Key Vault 的 URL |
列出授權單位
取得此租用戶的所有已設定授權單位或可驗認證服務
HTTP 要求
GET /v1.0/verifiableCredentials/authorities
要求標頭
標頭 | 數值 |
---|---|
授權 | 持有人 (權杖)。 必要 |
內容-類型 | application/json |
要求本文
請不要為此方法提供要求本文。
回應訊息
回應訊息是授權單位的陣列
範例:
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/"
}
}
]
}
建立授權單位
此呼叫會建立新的私密金鑰、修復金鑰和更新金鑰,將這些金鑰儲存在指定的 Azure Key Vault 中,並針對可驗認證服務設定此 Key Vault 的權限,以及使用對應的 DID 文件建立新的 DID。
HTTP 要求
POST /v1.0/verifiableCredentials/authorities
要求標頭
標頭 | 數值 |
---|---|
授權 | 持有人 (權杖)。 必要 |
內容-類型 | application/json |
要求本文
在要求本文中,提供如下的 JSON 表示法
屬性 | 類型 | 描述 |
---|---|---|
name |
字串 | 此服務執行個體的顯示名稱 |
linkedDomainUrl |
字串 | 連結至此 DID 的網域 |
didMethod |
字串 | 必須是 web |
keyVaultMetadata |
keyVaultMetadata | 特定金鑰保存庫的中繼資料 |
範例 訊息:
{
"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/"
}
}
回應訊息
成功時,回應訊息會包含授權單位的名稱
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
}
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/"
}
}
備註
您可以使用授權單位自己的 DID 和私密金鑰建立多個授權單位,這些授權單位將不會顯示在 Azure 入口網站的 UI 中。 目前我們只支援擁有 1 個授權單位。 我們尚未使用多個已建立的授權單位完整測試所有案例。 如果您嘗試這樣做,請讓我們知道您的體驗。
更新授權單位
這種方法可以用來更新這個可驗認證服務特定執行個體的顯示名稱。
HTTP 要求
PATCH /v1.0/verifiableCredentials/authorities/:authorityId
將 :authorityId
的值取代為您要更新的授權單位識別碼值。
要求標頭
標頭 | 數值 |
---|---|
授權 | 持有人 (權杖)。 必要 |
內容-類型 | application/json |
要求本文
在要求本文中,提供如下的 JSON 表示法。
屬性 | 類型 | 描述 |
---|---|---|
name |
字串 | 此服務執行個體的顯示名稱 |
範例訊息
{
"name":"ExampleIssuerName"
}
刪除授權單位
此方法可用來刪除授權單位。 目前只能刪除 did:ion
個授權單位。 刪除授權單位時,任何核發的已驗證識別碼認證都會變得無效,因此不再可驗證,因為核發授權單位已消失。
HTTP 要求
DELETE /beta/verifiableCredentials/authorities/:authorityId
將 :authorityId
的值取代為您要刪除的授權單位識別碼值。
要求標頭
標頭 | 數值 |
---|---|
授權 | 持有人 (權杖)。 必要 |
內容-類型 | application/json |
要求本文
無要求本文
回應訊息
範例回應訊息:
成功刪除授權單位回應。
HTTP/1.1 200 OK
如果刪除授權單位成功,但清除 Azure Key Vault 金鑰失敗,您會收到下列回應。
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"
}
}
已知的 DID 設定
generateWellknownDidConfiguration
方法會產生已簽署的 did-configuration.json 檔案。 此檔案必須上傳至網站根目錄中的 .well-known
,而該網站是針對此可驗認證執行個體的連結網域中的網域所裝載。 在這裡可以找到相關指示。
HTTP 要求
POST /v1.0/verifiableCredentials/authorities/:authorityId/generateWellknownDidConfiguration
要求標頭
標頭 | 數值 |
---|---|
授權 | 持有人 (權杖)。 必要 |
內容-類型 | application/json |
要求本文
您必須在所指定授權單位的 linkedDomains 中指定其中一個網域。
{
"domainUrl":"https://atest/"
}
回應訊息
範例回應訊息:
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>..."
]
}
使用檔案名稱 did-configuration.json 儲存此結果,並將此檔案上傳至正確的資料夾和網站。 如果您指定未連結至此 DID/DID 文件的網域,則會收到錯誤:
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/"
}
}
備註
您可以將多個 DID 指向相同的網域。 如果您選擇此設定,則必須結合產生的權杖,並將其放在相同的 did-configuration.json 檔案中。 此檔案包含這些權杖的陣列。
例如:
{
"@context": "https://identity.foundation/.well-known/contexts/did-configuration-v0.0.jsonld",
"linked_dids": [
"eyJhbG..token1...<SNIP>...",
"eyJhbG..token2...<SNIP>..."
]
}
產生 DID 文件
此呼叫會產生用於 DID:WEB 識別碼的 DID 文件。 在產生此 DID 文件之後,管理員必須將檔案放在 https://domain/.well-known/did.json 位置。
HTTP 要求
POST /v1.0/verifiableCredentials/authorities/:authorityId/generateDidDocument
要求標頭
標頭 | 數值 |
---|---|
授權 | 持有人 (權杖)。 必要 |
內容-類型 | application/json |
要求本文
請不要為此方法提供要求本文。
回應訊息
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"
]
}
備註
要求呼叫者具有目標金鑰保存庫的金鑰清單權限。
驗證已知的 DID 設定
此呼叫會檢查您的 DID 設定。 其會下載已知的 DID 設定,並驗證是否已使用正確的 DID,且簽章正確無誤。
HTTP 要求
POST /v1.0/verifiableCredentials/authorities/:authorityId/validateWellKnownDidConfiguration
要求標頭
標頭 | 數值 |
---|---|
授權 | 持有人 (權杖)。 必要 |
內容-類型 | application/json |
要求本文
請不要為此方法提供要求本文。
回應訊息
HTTP/1.1 204 No Content
Content-type: application/json
輪替簽署金鑰
輪替簽署金鑰會為 did:web 授權單位建立新的私密金鑰。 應該重新註冊 DID 文件以反映更新。 完成此作業時,synchronizeWithDidDocument 會指示系統開始使用新金鑰進行簽署。
HTTP 要求
POST /v1.0/verifiableCredentials/authorities/:authorityId/didInfo/signingKeys/rotate
要求標頭
標頭 | 數值 |
---|---|
授權 | 持有人 (權杖)。 必要 |
內容-類型 | application/json |
要求本文
請不要為此方法提供要求本文。
回應訊息
didDocumentStatus
將會變更為 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
}
與 DID 文件同步
輪替簽署金鑰之後,應該重新註冊 (部分機器翻譯) DID 文件以反映更新。 完成此作業時,synchronizeWithDidDocument 會指示系統開始使用新金鑰進行簽署。
HTTP 要求
POST /v1.0/verifiableCredentials/authorities/:authorityId/didInfo/synchronizeWithDidDocument
要求標頭
標頭 | 數值 |
---|---|
授權 | 持有人 (權杖)。 必要 |
內容-類型 | application/json |
要求本文
請不要為此方法提供要求本文。
回應訊息
didDocumentStatus
將會在成功呼叫時從 outOfSync
變更為 published
。
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
}
合約
此端點可讓您建立新的合約,並更新現有的合約。 合約是由兩個 JSON 定義所代表的兩個部分所組成。 如需如何手動設計和建立合約的相關資訊,可在這裡找到。
- 管理員會使用顯示定義來控制可驗認證的外觀,例如可驗認證的背景色彩、標誌和標題。 此檔案也包含必須儲存在可驗認證內的宣告。
- 規則定義包含如何蒐集和收集證明的相關資訊,例如自我證明宣告、另一個作為輸入的可驗認證,或也許是使用者登入 OIDC 相容識別提供者之後收到的識別碼權杖。
方法
方法 | 傳回類型 | 描述 |
---|---|---|
取得合約 | 合約 | 讀取合約的屬性 |
列出合約 | 合約集合 | 取得所有已設定合約的清單 |
建立合約 | 合約 | 建立新合約 |
更新合約 | 合約 | 建立合約 |
取得合約
HTTP 要求
GET /v1.0/verifiableCredentials/authorities/:authorityId/contracts/:contractId
將 :authorityId
和 :contractId
取代為授權單位和合約的正確值。
要求標頭
標頭 | 數值 |
---|---|
授權 | 持有人 (權杖)。 必要 |
內容-類型 | application/json |
要求本文
請不要為此方法提供要求本文。
回應訊息
範例訊息:
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
}
此回應包含下列屬性
合約類型
屬性 | 類型 | 描述 |
---|---|---|
Id |
字串 | 合約識別碼 |
name |
字串 | 此合約的自訂名稱 |
status |
字串 | 一律為 Enabled |
manifestUrl |
字串 | 簽發要求中所用合約的 URL |
issueNotificationEnabled |
boolean | 如果使用者收到通知,此 VC 已備妥可供其發出,請設定為 true |
issueNotificationAllowedToGroupOids |
groupId 字串的陣列 | 此認證將提供給其的群組識別碼陣列 |
availableInVcDirectory |
boolean | 此合約是否在可驗認證網路中發佈 |
規則 | rulesModel | 規則定義 |
顯示 | displayModel 陣列 | 顯示定義 |
allowOverrideValidityIntervalOnIssuance |
boolean | 如果允許 createIssuanceRequest API 呼叫覆寫認證的到期日。 這僅適用 idTokenHint 流程。 |
rulesModel 類型
屬性 | 類型 | 描述 |
---|---|---|
attestations |
證明 | 描述規則支援的輸入 |
validityInterval |
數值 | 此值會顯示認證的存留期 |
vc |
vcType 陣列 | 此合約的類型 |
customStatusEndpoint |
[customStatusEndpoint] (#customstatusendpoint-type) (選用) | 要包含在此合約可驗認證中的狀態端點 |
如果未指定 customStatusEndpoint
屬性,則會使用 anonymous
狀態端點。
證明類型
屬性 | 類型 | 描述 |
---|---|---|
idTokens |
idTokenAttestation (陣列) (選擇性) | 描述識別碼權杖輸入 |
idTokenHints |
idTokenHintAttestation (陣列) (選擇性) | 描述識別碼權杖提示輸入 |
presentations |
verifiablePresentationAttestation (陣列) (選擇性) | 描述可驗證的簡報輸入 |
selfIssued |
selfIssuedAttestation (陣列) (選擇性) | 描述自我發行的輸入 |
accessTokens |
accessTokenAttestation (陣列) (選擇性) | 描述存取權杖輸入 |
idTokenAttestation 類型
屬性 | 類型 | 描述 |
---|---|---|
mapping |
claimMapping (選擇性) | 規則,將輸入宣告對應至可驗認證中的輸出宣告 |
configuration |
字串 (url) | 身分識別提供者設定文件的位置 |
clientId |
字串 | 取得識別碼權杖時要使用的用戶端識別碼 |
redirectUri |
字串 | 取得識別碼權杖時的重新導向 URI 必須是 vcclient://openid/ |
scope |
字串 | 取得識別碼權杖時要使用的範圍空格分隔清單 |
required |
布林值 (預設值 false) | 指出是否需要此證明 |
idTokenHintAttestation 類型
屬性 | 類型 | 描述 |
---|---|---|
mapping |
claimMapping (選擇性) | 規則,將輸入宣告對應至可驗認證中的輸出宣告 |
required |
布林值 (預設值 false) | 指出是否需要此證明 |
trustedIssuers |
字串 (陣列) | 允許核發此合約可驗認證的 DID 清單 |
verifiablePresentationAttestation 類型
屬性 | 類型 | 描述 |
---|---|---|
mapping |
claimMapping (選擇性) | 規則,將輸入宣告對應至可驗認證中的輸出宣告 |
credentialType |
字串 (選擇性) | 輸入的必要認證類型 |
required |
布林值 (預設值 false) | 指出是否需要此證明 |
trustedIssuers |
字串 (陣列) | 允許核發此合約可驗認證的 DID 清單 |
selfIssuedAttestation 類型
屬性 | 類型 | 描述 |
---|---|---|
mapping |
claimMapping (選擇性) | 規則,將輸入宣告對應至可驗認證中的輸出宣告 |
required |
布林值 (預設值 false) | 指出是否需要此證明 |
accessTokenAttestation 類型
屬性 | 類型 | 描述 |
---|---|---|
mapping |
claimMapping (選擇性) | 規則,將輸入宣告對應至可驗認證中的輸出宣告 |
required |
布林值 (預設值 false) | 指出是否需要此證明 |
mappings
屬性支援的inputClaim
值如下:givenName
displayName
preferredLanguage
userPrincipalName
surname
jobTitle
photo
。
claimMapping 類型
屬性 | 類型 | 描述 |
---|---|---|
inputClaim |
字串 | 要從輸入使用的宣告名稱 |
outputClaim |
字串 | 可驗認證中宣告的名稱 |
indexed |
布林值 (預設值 false) | 指出這個宣告的值是否用於搜尋;指定的合約只允許一個 clientMapping 物件編製索引 |
required |
布林值 (預設值 false) | 指出是否需要此對應 |
type |
字串 (選擇性) | 宣告的類型 |
customStatusEndpoint 類型
屬性 | 類型 | 描述 |
---|---|---|
url |
字串 (url) | 自訂狀態端點的 URL |
type |
字串 | 端點的類型 |
範例:
"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 類型
屬性 | 類型 | 描述 |
---|---|---|
locale |
字串 | 此顯示的地區設定 |
credential |
displayCredential | 可驗認證的顯示屬性 |
consent |
displayConsent | 核發可驗認證時的補充資料 |
claims |
displayClaims 陣列 | 可驗認證中包含的宣告標籤 |
displayCredential 類型
屬性 | 類型 | 描述 |
---|---|---|
title |
字串 | 認證標題 |
issuedBy |
字串 | 認證簽發者的名稱 |
backgroundColor |
數字 (十六進位) | 以十六進位表示認證的背景色彩,例如,#FFAABB |
textColor |
數字 (十六進位) | 以十六進位表示認證的文字色彩,例如,#FFAABB |
description |
字串 | 每個認證顯示的補充文字 |
logo |
displayCredentialLogo | 要用於認證的標誌 |
displayCredentialLogo 類型
屬性 | 類型 | 描述 |
---|---|---|
uri |
字串 (URI) | 標誌的 URI。 如果這是 URL,則必須可透過公用網際網路匿名連線。 |
description |
字串 | 標誌的描述 |
displayConsent 類型
屬性 | 類型 | 描述 |
---|---|---|
title |
字串 | 同意的標題 |
instructions |
字串 | 顯示同意時要使用的補充文字 |
displayClaims 類型
屬性 | 類型 | 描述 |
---|---|---|
label |
字串 | 顯示中宣告的標籤 |
claim |
字串 | 套用標籤的宣告名稱 |
type |
字串 | 宣告的類型 |
description |
字串 (選擇性) | 宣告的描述 |
範例:
{
"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"
}
]
}
]
}
列出合約
此 API 會列出所指定授權單位目前租用戶中設定的所有合約。
HTTP 要求
GET /v1.0/verifiableCredentials/authorities/:authorityId/contracts
要求標頭
標頭 | 數值 |
---|---|
授權 | 持有人 (權杖)。 必要 |
內容-類型 | application/json |
要求本文
請不要為此方法提供要求本文。
回應訊息
範例訊息:
{
"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}]
}
]
}
建立合約
建立合約時,名稱在租用戶中必須是唯一的。 如果您已建立多個授權單位,合約名稱在所有授權單位中都必須是唯一的。 合約的名稱將是簽發要求中使用的合約 URL 一部分。
HTTP 要求
POST /v1.0/verifiableCredentials/authorities/:authorityId/contracts
要求標頭
標頭 | 數值 |
---|---|
授權 | 持有人 (權杖)。 必要 |
內容-類型 | application/json |
要求本文
範例要求
{
"name": "ExampleContractName1",
"rules": "<rules JSON>",
"displays": [{<display JSON}],
}
回應訊息
範例 訊息:
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://..."
}
建立合約
此 API 可讓您更新合約。
PATCH /v1.0/verifiableCredentials/authorities/:authorityId/contracts/:contractid
要求範例︰
{
"rules": "<rules JSON>",
"displays": [{<display JSON}],}
"availableInVcDirectory": true
"allowOverrideValidityIntervalOnIssuance": true
}
回應訊息
範例 訊息:
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
}
認證
此端點可讓您搜尋已發出的可驗認證、檢查撤銷狀態和撤銷認證。
方法
方法 | 傳回類型 | 描述 |
---|---|---|
取得認證 | 認證 | 讀取認證的屬性 |
搜尋認證 | 認證集合 | 搜尋具有特定宣告值的認證清單 |
撤銷認證 | 撤銷特定認證 |
取得認證
此 API 可讓您擷取特定認證,並檢查狀態以查看是否已將其撤銷。
HTTP 要求
GET /v1.0/verifiableCredentials/authorities/:authorityId/contracts/:contractId/credentials/:credentialId
要求標頭
標頭 | 數值 |
---|---|
授權 | 持有人 (權杖)。 必要 |
內容-類型 | application/json |
回應訊息
範例訊息
HTTP/1.1 200 OK
Content-type: application/json
{
"id": "urn:pic:aea42fb3724b4ef08bd2d2712e79bda2",
"contractId": "ZjViZjJmYzYtNzEzNS00ZDk0LWE2ZmUtYzI2ZTQ1NDNiYzVhdGVzdDM",
"status": "valid",
"issuedAt": "2017-09-13T21:59:23.9868631Z"
}
搜尋認證
您可以搜尋 具有特定索引宣告的可驗認證。 因為只會儲存雜湊,所以您必須搜尋特定的計算值。 您需要使用的演算法是:Base64Encode(SHA256(contractid + claim value)) C# 中的範例如下所示:
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 );
}
下列要求說明如何將計算值新增至要求的篩選參數。 目前僅支援 filter=indexclaimhash eq 格式。
HTTP 要求
GET /v1.0/verifiableCredentials/authorities/:authorityId/contracts/:contractId/credentials?filter=indexclaimhash eq {hashedsearchclaimvalue}
要求標頭
標頭 | 數值 |
---|---|
授權 | 持有人 (權杖)。 必要 |
內容-類型 | application/json |
要求本文
請不要為此方法提供要求本文。
回應訊息
範例訊息
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"
}
]
}
撤銷認證
此 API 可讓您撤銷特定認證。在使用搜尋 API 搜尋認證之後,您可以指定特定認證識別碼來撤銷認證。
HTTP 要求
POST /v1.0/verifiableCredentials/authorities/:authorityId/contracts/:contractId/credentials/:credentialid/revoke
要求標頭
標頭 | 數值 |
---|---|
授權 | 持有人 (權杖)。 必要 |
內容-類型 | application/json |
要求本文
請不要為此方法提供要求本文。
回應訊息
HTTP/1.1 204 No Content
Content-type: application/json
退出
此方法會完全移除此租用戶中可驗認證服務的所有執行個體。 其會移除所有已設定的合約。 無法檢查每個發出的可驗認證是否撤銷。 此動作無法復原。
警告
此動作無法復原,且會使所有已發出的可驗認證和已建立的合約失效。
HTTP 要求
POST /v1.0/verifiableCredentials/optout
要求標頭
標頭 | 數值 |
---|---|
授權 | 持有人 (權杖)。 必要 |
內容-類型 | application/json |
要求本文
請不要提供此方法的要求本文
回應訊息
範例回應訊息
HTTP/1.1 200 OK
Content-type: application/json
OK
備註
注意
如果您在 Key Vault 上沒有刪除權限,我們會傳回錯誤訊息,且仍會退出