你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

KeyAsyncClient 类

  • java.lang.Object
    • com.azure.security.keyvault.keys.KeyAsyncClient

public final class KeyAsyncClient

KeyAsyncClient提供在 Azure 密钥保管库中管理的KeyVaultKey异步方法。 客户端支持创建、检索、更新、删除、清除、备份、还原、列出、释放和旋转 KeyVaultKey。 客户端还支持列出 DeletedKey 已启用软删除的密钥保管库。

入门

若要与 Azure 密钥保管库 服务交互,需要创建 类的KeyAsyncClient实例、保管库 URL 和凭据对象。

本文档中显示的示例使用名为 DefaultAzureCredential 的凭据对象进行身份验证,该对象适用于大多数方案,包括本地开发和生产环境。 此外,建议在生产环境中使用 托管标识 进行身份验证。 可以在 Azure 标识文档中找到有关不同身份验证方式及其相应凭据类型的详细信息。

示例:构造异步密钥客户端

下面的代码示例演示如何创建 KeyAsyncClient,使用 KeyClientBuilder 对其进行配置。

KeyAsyncClient keyAsyncClient = new KeyClientBuilder()
     .vaultUrl("<your-key-vault-url>")
     .credential(new DefaultAzureCredentialBuilder().build())
     .buildAsyncClient();

创建加密密钥

KeyAsyncClient可用于在密钥保管库中创建密钥。

代码示例:

以下代码示例演示如何使用 createKey(String name, KeyType keyType) API 在密钥保管库中异步创建加密密钥。

keyAsyncClient.createKey("keyName", KeyType.EC)
     .contextWrite(Context.of("key1", "value1", "key2", "value2"))
     .subscribe(key ->
         System.out.printf("Created key with name: %s and id: %s %n", key.getName(),
             key.getId()));

注意: 有关同步示例,请参阅 KeyClient


获取加密密钥

KeyAsyncClient可用于从密钥保管库检索密钥。

代码示例:

下面的代码示例演示如何使用 getKey(String name) API 从密钥保管库中异步检索密钥。

keyAsyncClient.getKey("keyName")
     .contextWrite(Context.of("key1", "value1", "key2", "value2"))
     .subscribe(key ->
         System.out.printf("Created key with name: %s and: id %s%n", key.getName(),
             key.getId()));

注意: 有关同步示例,请参阅 KeyClient


删除加密密钥

KeyAsyncClient可用于从密钥保管库中删除密钥。

代码示例:

以下代码示例演示如何使用 beginDeleteKey(String name) API 从密钥保管库中异步删除密钥。

keyAsyncClient.beginDeleteKey("keyName")
     .subscribe(pollResponse -> {
         System.out.printf("Deletion status: %s%n", pollResponse.getStatus());
         System.out.printf("Key name: %s%n", pollResponse.getValue().getName());
         System.out.printf("Key delete date: %s%n", pollResponse.getValue().getDeletedOn());
     });

注意: 有关同步示例,请参阅 KeyClient

方法摘要

修饰符和类型 方法和描述
Mono<byte[]> backupKey(String name)

请求将指定 KeyVaultKey 的备份下载到客户端。

Mono<Response<byte[]>> backupKeyWithResponse(String name)

请求将指定 KeyVaultKey 的备份下载到客户端。

PollerFlux<DeletedKey,Void> beginDeleteKey(String name)

KeyVaultKey从密钥保管库中删除任何类型的 。

PollerFlux<KeyVaultKey,Void> beginRecoverDeletedKey(String name)

KeyVaultKey 密钥保管库中的 恢复到其最新版本,并且只能在启用了软删除的保管库上执行。

Mono<KeyVaultKey> createEcKey(CreateEcKeyOptions createEcKeyOptions)

创建新的 KeyVaultKey 并将其存储在密钥保管库中。

Mono<Response<KeyVaultKey>> createEcKeyWithResponse(CreateEcKeyOptions createEcKeyOptions)

创建新的并将其 KeyVaultKey 存储在密钥保管库中。

Mono<KeyVaultKey> createKey(CreateKeyOptions createKeyOptions)

创建新的并将其 KeyVaultKey 存储在密钥保管库中。

Mono<KeyVaultKey> createKey(String name, KeyType keyType)

创建新的并将其 KeyVaultKey 存储在密钥保管库中。

Mono<Response<KeyVaultKey>> createKeyWithResponse(CreateKeyOptions createKeyOptions)

创建新的并将其 KeyVaultKey 存储在密钥保管库中。

Mono<KeyVaultKey> createOctKey(CreateOctKeyOptions createOctKeyOptions)

在密钥保管库中创建并存储新的 KeyVaultKey

Mono<Response<KeyVaultKey>> createOctKeyWithResponse(CreateOctKeyOptions createOctKeyOptions)

在密钥保管库中创建并存储新的 KeyVaultKey

Mono<KeyVaultKey> createRsaKey(CreateRsaKeyOptions createRsaKeyOptions)

/** 创建新的并将其 KeyVaultKey 存储在密钥保管库中。

Mono<Response<KeyVaultKey>> createRsaKeyWithResponse(CreateRsaKeyOptions createRsaKeyOptions)

创建新的 KeyVaultKey 并将其存储在密钥保管库中。

CryptographyAsyncClient getCryptographyAsyncClient(String keyName)

CryptographyAsyncClient为给定密钥的最新版本创建 。

CryptographyAsyncClient getCryptographyAsyncClient(String keyName, String keyVersion)

CryptographyAsyncClient为给定密钥版本创建 。

Mono<DeletedKey> getDeletedKey(String name)

获取 的公共 KeyVaultKey部分。

Mono<Response<DeletedKey>> getDeletedKeyWithResponse(String name)

获取 的公共 KeyVaultKey部分。

Mono<KeyVaultKey> getKey(String name)

获取指定 KeyVaultKey 和密钥版本的公共部分。

Mono<KeyVaultKey> getKey(String name, String version)

获取指定 KeyVaultKey 和密钥版本的公共部分。

Mono<KeyRotationPolicy> getKeyRotationPolicy(String keyName)

KeyRotationPolicy获取具有所提供名称的 的 KeyVaultKey

Mono<Response<KeyRotationPolicy>> getKeyRotationPolicyWithResponse(String keyName)

KeyRotationPolicy获取具有所提供名称的 的 KeyVaultKey

Mono<Response<KeyVaultKey>> getKeyWithResponse(String name, String version)

获取指定 KeyVaultKey 和密钥版本的公共部分。

Mono<byte[]> getRandomBytes(int count)

从托管 HSM 获取包含随机值的请求字节数。

Mono<Response<byte[]>> getRandomBytesWithResponse(int count)

从托管 HSM 获取包含随机值的请求字节数。

String getVaultUrl()

获取服务请求发送到的保管库终结点 URL。

Mono<KeyVaultKey> importKey(ImportKeyOptions importKeyOptions)

导入外部创建的 JsonWebKey ,并将其存储在密钥保管库中。

Mono<KeyVaultKey> importKey(String name, JsonWebKey keyMaterial)

导入外部创建的 JsonWebKey ,并将其存储在密钥保管库中。

Mono<Response<KeyVaultKey>> importKeyWithResponse(ImportKeyOptions importKeyOptions)

导入外部创建的 JsonWebKey ,并将其存储在密钥保管库中。

PagedFlux<DeletedKey> listDeletedKeys()

密钥保管库的列表 DeletedKey

PagedFlux<KeyProperties> listPropertiesOfKeyVersions(String name)

列出指定 KeyVaultKey的所有版本。

PagedFlux<KeyProperties> listPropertiesOfKeys()

密钥保管库中的列表 KeyVaultKey

Mono<Void> purgeDeletedKey(String name)

永久删除指定的 KeyVaultKey ,无法恢复。

Mono<Response<Void>> purgeDeletedKeyWithResponse(String name)

永久删除指定的 KeyVaultKey ,无法恢复。

Mono<ReleaseKeyResult> releaseKey(String name, String targetAttestationToken)

发布最新版本的 KeyVaultKey

Mono<ReleaseKeyResult> releaseKey(String name, String version, String targetAttestationToken)

释放密钥。

Mono<Response<ReleaseKeyResult>> releaseKeyWithResponse(String name, String version, String targetAttestationToken, ReleaseKeyOptions releaseKeyOptions)

释放密钥。

Mono<KeyVaultKey> restoreKeyBackup(byte[] backup)

将备份 KeyVaultKey 的 还原到保管库。

Mono<Response<KeyVaultKey>> restoreKeyBackupWithResponse(byte[] backup)

将备份 KeyVaultKey 的 还原到保管库。

Mono<KeyVaultKey> rotateKey(String name)

KeyVaultKey旋转 。

Mono<Response<KeyVaultKey>> rotateKeyWithResponse(String name)

KeyVaultKey旋转 。

Mono<KeyVaultKey> updateKeyProperties(KeyProperties keyProperties, KeyOperation[] keyOperations)

KeyProperties汇报 与KeyOperation指定的 KeyVaultKey关联,但不是密钥保管库中指定 KeyVaultKey 的加密密钥材料。

Mono<Response<KeyVaultKey>> updateKeyPropertiesWithResponse(KeyProperties keyProperties, KeyOperation[] keyOperations)

KeyProperties汇报 与KeyOperation指定的 KeyVaultKey关联,但不是密钥保管库中指定 KeyVaultKey 的加密密钥材料。

Mono<KeyRotationPolicy> updateKeyRotationPolicy(String keyName, KeyRotationPolicy keyRotationPolicy)

使用提供的名称汇报KeyRotationPolicy键的 。

Mono<Response<KeyRotationPolicy>> updateKeyRotationPolicyWithResponse(String keyName, KeyRotationPolicy keyRotationPolicy)

使用提供的名称汇报KeyRotationPolicy键的 。

方法继承自 java.lang.Object

方法详细信息

backupKey

public Mono backupKey(String name)

请求将指定 KeyVaultKey 的备份下载到客户端。 密钥备份操作以受保护的形式从 Azure 密钥保管库导出 KeyVaultKey 。 请注意,此操作不会以可在 Azure 密钥保管库 系统外部使用的形式返回密钥材料,返回的密钥材料要么受到 Azure 密钥保管库 HSM 的保护,要么保护给 Azure 密钥保管库本身。 此操作的目的是允许客户端在一个 KeyVaultKey Azure 密钥保管库 实例中生成 ,备份 KeyVaultKey,然后将其还原到另一个 Azure 密钥保管库 实例中。 备份操作可用于以受保护的形式从 Azure 密钥保管库导出任何KeyType内容。 无法备份 的 KeyVaultKey 单个版本。 Backup/Restore 只能在地理边界内执行;这意味着无法将一个地理区域的备份还原到另一个地理区域。 例如,无法在欧洲地理区域还原美国地理区域中的备份。 此操作需要 key/backup 权限。

示例代码

从密钥保管库备份 KeyVaultKey 。 异步订阅调用,并输出响应中返回的密钥备份字节数组的长度。

keyAsyncClient.backupKey("keyName")
     .contextWrite(Context.of("key1", "value1", "key2", "value2"))
     .subscribe(bytes ->
         System.out.printf("Key backup byte array length: %s%n", bytes.length));

Parameters:

name - KeyVaultKey 的名称。

Returns:

包含 Mono 备份的密钥 Blob 的 。

backupKeyWithResponse

public Mono> backupKeyWithResponse(String name)

请求将指定 KeyVaultKey 的备份下载到客户端。 密钥备份操作以受保护的形式从 Azure 密钥保管库导出 KeyVaultKey 。 请注意,此操作不会以可在 Azure 密钥保管库 系统外部使用的形式返回密钥材料,返回的密钥材料要么受到 Azure 密钥保管库 HSM 的保护,要么保护给 Azure 密钥保管库本身。 此操作的目的是允许客户端在一个 KeyVaultKey Azure 密钥保管库 实例中生成 ,备份 KeyVaultKey,然后将其还原到另一个 Azure 密钥保管库 实例中。 备份操作可用于以受保护的形式从 Azure 密钥保管库导出任何KeyType内容。 无法备份 的 KeyVaultKey 单个版本。 Backup/Restore 只能在地理边界内执行;这意味着无法将一个地理区域的备份还原到另一个地理区域。 例如,无法在欧洲地理区域还原美国地理区域中的备份。 此操作需要 key/backup 权限。

示例代码

从密钥保管库备份 KeyVaultKey 。 异步订阅调用,并输出响应中返回的密钥备份字节数组的长度。

keyAsyncClient.backupKeyWithResponse("keyName")
     .contextWrite(Context.of("key1", "value1", "key2", "value2"))
     .subscribe(backupKeyResponse ->
         System.out.printf("Key backup byte array length: %s%n", backupKeyResponse.getValue().length));

Parameters:

name - KeyVaultKey 的名称。

Returns:

一个 MonoResponse<T>value ,它包含备份的密钥 Blob。

beginDeleteKey

public PollerFlux beginDeleteKey(String name)

KeyVaultKey从密钥保管库中删除任何类型的 。 如果在密钥保管库上启用了软删除, KeyVaultKey 则会将 置于已删除状态,并且需要清除以永久删除, KeyVaultKey 否则将永久删除 。 删除操作适用于 Azure 密钥保管库中存储的任何KeyVaultKey操作,但不能应用于 的单个版本KeyVaultKey。 此操作将删除与 KeyVaultKey关联的加密材料,这意味着 KeyVaultKey 不能用于 Sign/VerifyWrap/UnwrapEncrypt/Decrypt 操作。 此操作需要 keys/delete 权限。

示例代码

KeyVaultKey删除 Azure 密钥保管库中的 。 异步订阅调用,并在收到响应时输出 KeyVaultKey 详细信息。

keyAsyncClient.beginDeleteKey("keyName")
     .subscribe(pollResponse -> {
         System.out.printf("Deletion status: %s%n", pollResponse.getStatus());
         System.out.printf("Key name: %s%n", pollResponse.getValue().getName());
         System.out.printf("Key delete date: %s%n", pollResponse.getValue().getDeletedOn());
     });

Parameters:

name - 要删除的 的名称 KeyVaultKey

Returns:

PollerFlux<T,U> 轮询状态的 DeletedKey

beginRecoverDeletedKey

public PollerFlux beginRecoverDeletedKey(String name)

KeyVaultKey 密钥保管库中的 恢复到其最新版本,并且只能在启用了软删除的保管库上执行。 尝试恢复 将 KeyVaultKey 返回错误。 将此视为对已启用软删除的保管库执行删除操作的反函数。 此操作需要 keys/recover 权限。

示例代码

KeyVaultKey从启用软删除的密钥保管库恢复 。 异步订阅调用,并在收到响应时输出恢复的密钥详细信息。

keyAsyncClient.beginRecoverDeletedKey("deletedKeyName")
     .subscribe(pollResponse -> {
         System.out.printf("Recovery status: %s%n", pollResponse.getStatus());
         System.out.printf("Key name: %s%n", pollResponse.getValue().getName());
         System.out.printf("Key type: %s%n", pollResponse.getValue().getKeyType());
     });

Parameters:

name - 要恢复的 的名称 KeyVaultKey

Returns:

PollerFlux<T,U> 轮询状态的 KeyVaultKey

createEcKey

public Mono createEcKey(CreateEcKeyOptions createEcKeyOptions)

创建新的 KeyVaultKey 并将其存储在密钥保管库中。 创建 EC 密钥操作可用于在 Azure 密钥保管库中创建任何 ECKeyTypeKeyVaultKey如果已存在具有所提供的名称的 ,则 Azure 密钥保管库 会创建 新版本。KeyVaultKey 它需要 keys/create 权限。

CreateEcKeyOptions 参数是必需的。 getCurveName()可以选择性地指定 。 如果未指定,Azure 密钥保管库将使用默认值P_256。 和 expiresnotBefore 值是可选的。 enabled如果未指定字段,则由 Azure 密钥保管库 设置为 true

指示 keyType 要创建的密钥的类型 KeyVaultKey 。 可能的值包括: ECEC_HSM

示例代码

使用 P_384 Web 密钥曲线创建新的 KeyVaultKey 。 密钥在一天内激活,一年后过期。 异步订阅调用,并在收到响应时输出新 KeyVaultKey 的详细信息。

CreateEcKeyOptions createEcKeyOptions = new CreateEcKeyOptions("keyName")
     .setCurveName(KeyCurveName.P_384)
     .setNotBefore(OffsetDateTime.now().plusDays(1))
     .setExpiresOn(OffsetDateTime.now().plusYears(1));

 keyAsyncClient.createEcKey(createEcKeyOptions)
     .contextWrite(Context.of("key1", "value1", "key2", "value2"))
     .subscribe(ecKey ->
         System.out.printf("Created key with name: %s and id: %s %n", ecKey.getName(),
             ecKey.getId()));

Parameters:

createEcKeyOptions - 包含 CreateEcKeyOptions 有关 KeyVaultKey 所创建的 的信息的 。

Returns:

一个 Mono 包含 的 KeyVaultKey

createEcKeyWithResponse

public Mono> createEcKeyWithResponse(CreateEcKeyOptions createEcKeyOptions)

创建新的 KeyVaultKey 并将其存储在密钥保管库中。 创建 EC 密钥操作可用于在 Azure 密钥保管库中创建任何 ECKeyTypeKeyVaultKey如果已存在具有所提供的名称的 ,则 Azure 密钥保管库 会创建 新版本。KeyVaultKey 它需要 keys/create 权限。

CreateEcKeyOptions 参数是必需的。 getCurveName()可以选择性地指定 。 如果未指定,Azure 密钥保管库将使用默认值P_256。 和 expiresnotBefore 值是可选的。 enabled如果未指定字段,则由 Azure 密钥保管库 设置为 true

指示 keyType 要创建的密钥的类型 KeyVaultKey 。 可能的值包括: ECEC_HSM

示例代码

使用 P_384 Web 密钥曲线创建新的 KeyVaultKey 。 密钥在一天内激活,一年后过期。 异步订阅调用,并在收到响应时输出新 KeyVaultKey 的详细信息。

CreateEcKeyOptions createEcKeyOptions = new CreateEcKeyOptions("keyName")
     .setCurveName(KeyCurveName.P_384)
     .setNotBefore(OffsetDateTime.now().plusDays(1))
     .setExpiresOn(OffsetDateTime.now().plusYears(1));

 keyAsyncClient.createEcKeyWithResponse(createEcKeyOptions)
     .contextWrite(Context.of("key1", "value1", "key2", "value2"))
     .subscribe(createEcKeyResponse ->
         System.out.printf("Created key with name: %s and: id %s%n", createEcKeyResponse.getValue().getName(),
             createEcKeyResponse.getValue().getId()));

Parameters:

createEcKeyOptions - 包含 CreateEcKeyOptions 有关 KeyVaultKey 所创建的 的信息的 。

Returns:

包含MonoResponse<T>value包含 的 。KeyVaultKey

createKey

public Mono createKey(CreateKeyOptions createKeyOptions)

创建新的并将其 KeyVaultKey 存储在密钥保管库中。 创建密钥操作可用于在 Azure 密钥保管库中创建任何KeyType项。 KeyVaultKey如果已存在具有所提供的名称的 ,则 Azure 密钥保管库会创建 新版本。KeyVaultKey 它需要 keys/create 权限。

CreateKeyOptions 参数是必需的。 getExpiresOn()getNotBefore() 值是可选的。 isEnabled()如果未指定,则 Azure 密钥保管库 将字段设置为 true

指示 getKeyType() 要创建的 的类型 KeyVaultKey 。 可能的值包括:EC、、EC_HSMRSARSA_HSMOCT、 和 OCT_HSM

示例代码

创建一个在一天内激活并在一年后过期的新 KeyVaultKey 。 异步订阅调用,并在收到响应时输出新 KeyVaultKey 详细信息。

CreateKeyOptions createKeyOptions = new CreateKeyOptions("keyName", KeyType.RSA)
     .setNotBefore(OffsetDateTime.now().plusDays(1))
     .setExpiresOn(OffsetDateTime.now().plusYears(1));

 keyAsyncClient.createKey(createKeyOptions)
     .contextWrite(Context.of("key1", "value1", "key2", "value2"))
     .subscribe(key ->
         System.out.printf("Created key with name: %s and id: %s %n", key.getName(),
             key.getId()));

Parameters:

createKeyOptions - 包含 CreateKeyOptions 有关 KeyVaultKey 所创建的 的信息的 。

Returns:

包含 MonoKeyVaultKey

createKey

public Mono createKey(String name, KeyType keyType)

创建新的并将其 KeyVaultKey 存储在密钥保管库中。 创建密钥操作可用于在 Azure 密钥保管库中创建任何KeyType项。 KeyVaultKey如果已存在具有所提供的名称的 ,则 Azure 密钥保管库会创建 新版本。KeyVaultKey 它需要 keys/create 权限。

指示 KeyType 要创建的 的类型 KeyVaultKey 。 可能的值包括:EC、、EC_HSMRSARSA_HSMOCT、 和 OCT_HSM

示例代码

创建一个新的 KeyVaultKey。 异步订阅调用,并在收到响应时输出新 KeyVaultKey 详细信息。

keyAsyncClient.createKey("keyName", KeyType.EC)
     .contextWrite(Context.of("key1", "value1", "key2", "value2"))
     .subscribe(key ->
         System.out.printf("Created key with name: %s and id: %s %n", key.getName(),
             key.getId()));

Parameters:

name - 正在创建的 的名称 KeyVaultKey
keyType - 要创建的 的类型 KeyVaultKey 。 有关有效值,请参阅 KeyType

Returns:

包含 MonoKeyVaultKey

createKeyWithResponse

public Mono> createKeyWithResponse(CreateKeyOptions createKeyOptions)

创建新的并将其 KeyVaultKey 存储在密钥保管库中。 创建密钥操作可用于在 Azure 密钥保管库中创建任何KeyType项。 KeyVaultKey如果已存在具有所提供的名称的 ,则 Azure 密钥保管库会创建 新版本。KeyVaultKey 它需要 keys/create 权限。

指示 KeyType 要创建的 的类型 KeyVaultKey 。 可能的值包括:EC、、EC_HSMRSARSA_HSMOCT、 和 OCT_HSM

示例代码

创建一个新的 KeyVaultKey。 异步订阅调用,并在收到响应时输出新 KeyVaultKey 详细信息。

CreateKeyOptions createKeyOptions = new CreateKeyOptions("keyName", KeyType.RSA)
     .setNotBefore(OffsetDateTime.now().plusDays(1))
     .setExpiresOn(OffsetDateTime.now().plusYears(1));

 keyAsyncClient.createKeyWithResponse(createKeyOptions)
     .contextWrite(Context.of("key1", "value1", "key2", "value2"))
     .subscribe(createKeyResponse ->
         System.out.printf("Created key with name: %s and: id %s%n", createKeyResponse.getValue().getName(),
             createKeyResponse.getValue().getId()));

Parameters:

createKeyOptions - 包含 CreateKeyOptions 有关 KeyVaultKey 所创建的 的信息的 。

Returns:

包含MonoResponse<T>value包含 的 。KeyVaultKey

createOctKey

public Mono createOctKey(CreateOctKeyOptions createOctKeyOptions)

在密钥保管库中创建并存储新的 KeyVaultKeyKeyVaultKey如果已存在具有所提供的名称的 ,Azure 密钥保管库会创建密钥的新版本。 此操作需要 keys/create 权限。

CreateOctKeyOptions 参数是必需的。 expiresnotBefore 值是可选的。 enabled如果未指定,则 Azure 密钥保管库 将字段设置为 true

指示 keyType 要创建的密钥的类型 KeyVaultKey 。 可能的值包括: OCTOCT_HSM

示例代码

创建一个新的 KeyVaultKey。 在 KeyVaultKey 一天内激活,并在一年后过期。 异步订阅调用,并在收到响应时输出新 KeyVaultKey 的详细信息。

CreateOctKeyOptions createOctKeyOptions = new CreateOctKeyOptions("keyName")
     .setNotBefore(OffsetDateTime.now().plusDays(1))
     .setExpiresOn(OffsetDateTime.now().plusYears(1));

 keyAsyncClient.createOctKey(createOctKeyOptions)
     .contextWrite(Context.of("key1", "value1", "key2", "value2"))
     .subscribe(octKey ->
         System.out.printf("Created key with name: %s and id: %s %n", octKey.getName(),
             octKey.getId()));

Parameters:

createOctKeyOptions - 包含 CreateOctKeyOptions 有关 KeyVaultKey 所创建的 的信息的 。

Returns:

包含 MonoKeyVaultKey

createOctKeyWithResponse

public Mono> createOctKeyWithResponse(CreateOctKeyOptions createOctKeyOptions)

在密钥保管库中创建并存储新的 KeyVaultKeyKeyVaultKey如果已存在具有所提供的名称的 ,Azure 密钥保管库会创建密钥的新版本。 此操作需要 keys/create 权限。

CreateOctKeyOptions 参数是必需的。 expiresnotBefore 值是可选的。 enabled如果未指定,则 Azure 密钥保管库 将字段设置为 true

指示 keyType 要创建的密钥的类型 KeyVaultKey 。 可能的值包括: OCTOCT_HSM

示例代码

创建一个新的 KeyVaultKey。 在 KeyVaultKey 一天内激活,并在一年后过期。 异步订阅调用,并在收到响应时输出新 KeyVaultKey 的详细信息。

CreateOctKeyOptions createOctKeyOptions = new CreateOctKeyOptions("keyName")
     .setNotBefore(OffsetDateTime.now().plusDays(1))
     .setExpiresOn(OffsetDateTime.now().plusYears(1));

 keyAsyncClient.createOctKeyWithResponse(createOctKeyOptions)
     .contextWrite(Context.of("key1", "value1", "key2", "value2"))
     .subscribe(createOctKeyResponse ->
         System.out.printf("Created key with name: %s and: id %s%n", createOctKeyResponse.getValue().getName(),
             createOctKeyResponse.getValue().getId()));

Parameters:

createOctKeyOptions - 包含 CreateOctKeyOptions 有关 KeyVaultKey 所创建的 的信息的 。

Returns:

包含MonoResponse<T>value包含 的 。KeyVaultKey

createRsaKey

public Mono createRsaKey(CreateRsaKeyOptions createRsaKeyOptions)

/** 创建新的并将其 KeyVaultKey 存储在密钥保管库中。 创建 RSA 密钥操作可用于在 Azure 密钥保管库中创建任何 RSA 密钥类型。 KeyVaultKey如果已存在具有所提供的名称的 ,则 Azure 密钥保管库会创建 新版本。KeyVaultKey 它需要 keys/create 权限。

CreateRsaKeyOptions 参数是必需的。 getKeySize()可以选择指定 。 expiresnotBefore 值是可选的。 enabled如果未指定,则 Azure 密钥保管库 将字段设置为 true

指示 keyType 要创建的 的类型 KeyVaultKey 。 可能的值包括: RSARSA_HSM

示例代码

创建一个大小为 2048 的新 KeyVaultKey ,该大小在一天内激活,并在一年内过期。 异步订阅调用,并在收到响应时输出新 KeyVaultKey 详细信息。

CreateRsaKeyOptions createRsaKeyOptions = new CreateRsaKeyOptions("keyName")
     .setKeySize(2048)
     .setNotBefore(OffsetDateTime.now().plusDays(1))
     .setExpiresOn(OffsetDateTime.now().plusYears(1));

 keyAsyncClient.createRsaKey(createRsaKeyOptions)
     .contextWrite(Context.of("key1", "value1", "key2", "value2"))
     .subscribe(rsaKey ->
         System.out.printf("Created key with name: %s and id: %s %n", rsaKey.getName(),
             rsaKey.getId()));

Parameters:

createRsaKeyOptions - 包含 CreateRsaKeyOptions 有关 KeyVaultKey 所创建的 的信息的 。

Returns:

包含 MonoKeyVaultKey

createRsaKeyWithResponse

public Mono> createRsaKeyWithResponse(CreateRsaKeyOptions createRsaKeyOptions)

创建新的并将其 KeyVaultKey 存储在密钥保管库中。 创建 RSA 密钥操作可用于在 Azure 密钥保管库中创建任何 RSA 密钥类型。 KeyVaultKey如果已存在具有所提供的名称的 ,则 Azure 密钥保管库会创建 新版本。KeyVaultKey 它需要 keys/create 权限。

CreateRsaKeyOptions 参数是必需的。 getKeySize()可以选择指定 。 expiresnotBefore 值是可选的。 enabled如果未指定,则 Azure 密钥保管库 将字段设置为 true

指示 keyType 要创建的 的类型 KeyVaultKey 。 可能的值包括: RSARSA_HSM

示例代码

创建一个大小为 2048 的新 KeyVaultKey ,该大小在一天内激活,并在一年内过期。 异步订阅调用,并在收到响应时输出新 KeyVaultKey 的详细信息。

CreateRsaKeyOptions createRsaKeyOptions = new CreateRsaKeyOptions("keyName")
     .setKeySize(2048)
     .setNotBefore(OffsetDateTime.now().plusDays(1))
     .setExpiresOn(OffsetDateTime.now().plusYears(1));

 keyAsyncClient.createRsaKeyWithResponse(createRsaKeyOptions)
     .contextWrite(Context.of("key1", "value1", "key2", "value2"))
     .subscribe(createRsaKeyResponse ->
         System.out.printf("Created key with name: %s and: id %s%n", createRsaKeyResponse.getValue().getName(),
             createRsaKeyResponse.getValue().getId()));

Parameters:

createRsaKeyOptions - 包含 CreateRsaKeyOptions 有关 KeyVaultKey 所创建的 的信息的 。

Returns:

一个 MonoResponse<T> ,包含其 value 包含 的 KeyVaultKey

getCryptographyAsyncClient

public CryptographyAsyncClient getCryptographyAsyncClient(String keyName)

CryptographyAsyncClient为给定密钥的最新版本创建 。

若要确保在执行 、 和 等Decrypt操作时的行为正确,建议分别使用CryptographyAsyncClient为用于相应逆运算的特定密钥版本创建的 :EncryptWrapSignUnwrapVerify

在生成客户端之前,可以通过 或 确保密钥版本包含在传递给 keyIdentifier(String keyId) 的 中keyIdentifier来提供密钥版本getCryptographyAsyncClient(String keyName, String keyVersion)

Parameters:

keyName - 键的名称。

Returns:

与具有所提供名称的密钥的最新版本关联的 的实例 CryptographyAsyncClient

getCryptographyAsyncClient

public CryptographyAsyncClient getCryptographyAsyncClient(String keyName, String keyVersion)

CryptographyAsyncClient为给定密钥版本创建 。

Parameters:

keyName - 键的名称。
keyVersion - 密钥版本。

Returns:

与具有所提供的名称和版本的密钥关联的 的实例 CryptographyAsyncClient 。 如果 keyVersionnull 或为空,则客户端将使用最新版本的密钥。

getDeletedKey

public Mono getDeletedKey(String name)

获取 的公共 KeyVaultKey部分。 get deleted Key 操作适用于已启用软删除的保管库。 此操作需要 keys/get 权限。

示例代码

KeyVaultKey从启用软删除的密钥保管库中获取 。 异步订阅调用,并在收到响应时输出 KeyVaultKey 详细信息。

keyAsyncClient.getDeletedKey("keyName")
     .contextWrite(Context.of("key1", "value1", "key2", "value2"))
     .subscribe(deletedKey ->
         System.out.printf("Deleted key's recovery id:%s%n", deletedKey.getRecoveryId()));

Parameters:

name - 已删除 KeyVaultKey的名称。

Returns:

一个 Mono 包含 的 DeletedKey

getDeletedKeyWithResponse

public Mono> getDeletedKeyWithResponse(String name)

获取 的公共 KeyVaultKey部分。 get deleted Key 操作适用于已启用软删除的保管库。 此操作需要 keys/get 权限。

示例代码

KeyVaultKey从启用软删除的密钥保管库中获取 。 异步订阅调用,并在收到响应时输出 KeyVaultKey 详细信息。

keyAsyncClient.getDeletedKeyWithResponse("keyName")
     .contextWrite(Context.of("key1", "value1", "key2", "value2"))
     .subscribe(getDeletedKeyResponse ->
         System.out.printf("Deleted key's recovery id: %s%n", getDeletedKeyResponse.getValue().getRecoveryId()));

Parameters:

name - 已删除 KeyVaultKey的名称。

Returns:

一个 MonoResponse<T> ,包含其 value 包含 的 DeletedKey

getKey

public Mono getKey(String name)

获取指定 KeyVaultKey 和密钥版本的公共部分。 获取密钥操作适用于所有操作 KeyType ,并且需要 keys/get 权限。

示例代码

获取密钥保管库中 的特定版本 KeyVaultKey 。 异步订阅调用,并在收到响应时输出 KeyVaultKey 详细信息。

keyAsyncClient.getKey("keyName")
     .contextWrite(Context.of("key1", "value1", "key2", "value2"))
     .subscribe(key ->
         System.out.printf("Created key with name: %s and: id %s%n", key.getName(),
             key.getId()));

Parameters:

name - KeyVaultKey的名称不能为 null

Returns:

一个 Mono 包含请求的 KeyVaultKey。 密钥的内容为 null (如果 namenull 或为空)。

getKey

public Mono getKey(String name, String version)

获取指定 KeyVaultKey 和密钥版本的公共部分。 获取密钥操作适用于所有操作 KeyType ,并且需要 keys/get 权限。

示例代码

获取密钥保管库中 的特定版本 KeyVaultKey 。 异步订阅调用,并在收到响应时输出 KeyVaultKey 详细信息。

String keyVersion = "6A385B124DEF4096AF1361A85B16C204";

 keyAsyncClient.getKey("keyName", keyVersion)
     .contextWrite(Context.of("key1", "value1", "key2", "value2"))
     .subscribe(key ->
         System.out.printf("Created key with name: %s and: id %s%n", key.getName(),
             key.getId()));

Parameters:

name - KeyVaultKey的名称不能为 null
version - 要检索的密钥的版本。 如果这是空的 String 或 null,则此调用等效于调用 getKey(String name),并检索最新版本。

Returns:

一个 Mono 包含请求的 KeyVaultKey。 如果 和 version 均为namenull或为空,则密钥的内容为 null

getKeyRotationPolicy

public Mono getKeyRotationPolicy(String keyName)

KeyRotationPolicy获取具有所提供名称的 的 KeyVaultKey 。 此操作需要 keys/get 权限。

示例代码

检索 KeyRotationPolicy 给定 KeyVaultKey的 。 异步订阅调用,并在收到响应时输出 KeyRotationPolicy 详细信息。

keyAsyncClient.getKeyRotationPolicy("keyName")
     .subscribe(keyRotationPolicy ->
         System.out.printf("Retrieved key rotation policy with id: %s%n", keyRotationPolicy.getId()));

Parameters:

keyName - KeyVaultKey 的名称。

Returns:

一个 Mono ,其中包含 KeyRotationPolicy 密钥的 。

getKeyRotationPolicyWithResponse

public Mono> getKeyRotationPolicyWithResponse(String keyName)

KeyRotationPolicy获取具有所提供名称的 的 KeyVaultKey 。 此操作需要 keys/get 权限。

示例代码

检索 KeyRotationPolicy 给定 KeyVaultKey的 。 异步订阅调用,并在收到响应时输出 Response<T>KeyRotationPolicy 详细信息。

keyAsyncClient.getKeyRotationPolicyWithResponse("keyName")
     .subscribe(getKeyRotationPolicyResponse ->
         System.out.printf("Response received successfully with status code: %d. Retrieved key rotation policy"
             + "with id: %s%n", getKeyRotationPolicyResponse.getStatusCode(),
             getKeyRotationPolicyResponse.getValue().getId()));

Parameters:

keyName - KeyVaultKey 的名称。

Returns:

包含MonoResponse<T>此操作的 和KeyRotationPolicy密钥的 。

getKeyWithResponse

public Mono> getKeyWithResponse(String name, String version)

获取指定 KeyVaultKey 和密钥版本的公共部分。 获取密钥操作适用于所有操作 KeyType ,并且需要 keys/get 权限。

示例代码

获取密钥保管库中 的特定版本 KeyVaultKey 。 异步订阅调用,并在收到响应时输出 KeyVaultKey 详细信息。

String keyVersion = "6A385B124DEF4096AF1361A85B16C204";

 keyAsyncClient.getKeyWithResponse("keyName", keyVersion)
     .contextWrite(Context.of("key1", "value1", "key2", "value2"))
     .subscribe(getKeyResponse ->
         System.out.printf("Created key with name: %s and: id %s%n",
             getKeyResponse.getValue().getName(), getKeyResponse.getValue().getId()));

Parameters:

name - KeyVaultKey的名称不能为 null
version - 要检索的密钥的版本。 如果这是空的 String 或 null,则此调用等效于调用 getKey(String name),并检索最新版本。

Returns:

一个 MonoResponse<T>value ,它包含请求的 。KeyVaultKey 如果 和 version 均为namenull或为空,则密钥的内容为 null

getRandomBytes

public Mono getRandomBytes(int count)

从托管 HSM 获取包含随机值的请求字节数。

示例代码

从托管 HSM 获取包含随机值的字节数。 以 base64Url 格式打印检索到的字节。

int amount = 16;
 keyAsyncClient.getRandomBytes(amount)
     .subscribe(randomBytes ->
         System.out.printf("Retrieved %d random bytes: %s%n", amount, Arrays.toString(randomBytes)));

Parameters:

count - 请求的随机字节数。

Returns:

一个 , Mono 它包含来自托管 HSM 的随机值的请求字节数。

getRandomBytesWithResponse

public Mono> getRandomBytesWithResponse(int count)

从托管 HSM 获取包含随机值的请求字节数。

示例代码

从托管 HSM 获取包含随机值的字节数。 Response<T>以 base64Url 格式输出详细信息和检索的字节。

int amountOfBytes = 16;
 keyAsyncClient.getRandomBytesWithResponse(amountOfBytes).subscribe(response ->
     System.out.printf("Response received successfully with status code: %d. Retrieved %d random bytes: %s%n",
         response.getStatusCode(), amountOfBytes, Arrays.toString(response.getValue())));

Parameters:

count - 请求的随机字节数。

Returns:

包含MonoResponse<T>此操作的 和包含来自托管 HSM 的随机值的请求字节数的 。

getVaultUrl

public String getVaultUrl()

获取服务请求发送到的保管库终结点 URL。

Returns:

保管库终结点 URL

importKey

public Mono importKey(ImportKeyOptions importKeyOptions)

导入外部创建的 JsonWebKey ,并将其存储在密钥保管库中。 导入密钥操作可用于将任何KeyType项导入 Azure 密钥保管库。 KeyVaultKey如果已存在具有所提供的名称的 ,则 Azure 密钥保管库 会创建 新版本。KeyVaultKey 此操作需要 keys/import 权限。

ImportKeyOptions 是必需的,并且其字段 name 不能 getKey()null。 中的 expireskeyImportOptionsnotBefore 值是可选的。 如果未指定,则不为字段设置任何值。 enabled如果未指定字段trueisHardwareProtected(),则 Azure 密钥保管库 将 字段设置为 ,并将 字段设置为 false

示例代码

将新的 KeyVaultKey 导入密钥保管库。 异步订阅调用,并在收到响应时输出新 KeyVaultKey 的详细信息。

ImportKeyOptions options = new ImportKeyOptions("keyName", jsonWebKeyToImport)
     .setHardwareProtected(false);

 keyAsyncClient.importKey(options).subscribe(keyVaultKey ->
     System.out.printf("Imported key with name: %s and id: %s%n", keyVaultKey.getName(), keyVaultKey.getId()));

Parameters:

importKeyOptions - 包含 ImportKeyOptions 有关 JsonWebKey 正在导入的 的信息。

Returns:

一个 Mono 包含 的 KeyVaultKey

importKey

public Mono importKey(String name, JsonWebKey keyMaterial)

导入外部创建的 JsonWebKey ,并将其存储在密钥保管库中。 导入密钥操作可用于将任何KeyType项导入 Azure 密钥保管库。 KeyVaultKey如果已存在具有所提供的名称的 ,则 Azure 密钥保管库 会创建 新版本。KeyVaultKey 此操作需要 keys/import 权限。

示例代码

将新的 KeyVaultKey 导入密钥保管库。 异步订阅调用,并在收到响应时输出新 KeyVaultKey 的详细信息。

keyAsyncClient.importKey("keyName", jsonWebKeyToImport)
     .subscribe(keyVaultKey ->
         System.out.printf("Imported key with name: %s and id: %s%n", keyVaultKey.getName(),
             keyVaultKey.getId()));

Parameters:

name - 导入的密钥的名称。
keyMaterial - 正在导入的 Json Web 密钥。

Returns:

一个 MonoResponse<T> ,包含其 value 包含 的 KeyVaultKey

importKeyWithResponse

public Mono> importKeyWithResponse(ImportKeyOptions importKeyOptions)

导入外部创建的 JsonWebKey ,并将其存储在密钥保管库中。 导入密钥操作可用于将任何KeyType项导入 Azure 密钥保管库。 KeyVaultKey如果已存在具有所提供的名称的 ,则 Azure 密钥保管库 会创建 新版本。KeyVaultKey 此操作需要 keys/import 权限。

ImportKeyOptions 是必需的,并且其字段 name 不能 getKey()null。 中的 expireskeyImportOptionsnotBefore 值是可选的。 如果未指定,则不为字段设置任何值。 enabled如果未指定字段trueisHardwareProtected(),则 Azure 密钥保管库 将 字段设置为 ,并将 字段设置为 false

示例代码

将新的 KeyVaultKey 导入密钥保管库。 异步订阅调用,并在收到响应时输出新 KeyVaultKey 的详细信息。

ImportKeyOptions importKeyOptions = new ImportKeyOptions("keyName", jsonWebKeyToImport)
     .setHardwareProtected(false);

 keyAsyncClient.importKeyWithResponse(importKeyOptions).subscribe(response ->
     System.out.printf("Imported key with name: %s and id: %s%n", response.getValue().getName(),
         response.getValue().getId()));

Parameters:

importKeyOptions - 包含 ImportKeyOptions 有关 JsonWebKey 正在导入的 的信息。

Returns:

一个 MonoResponse<T> ,包含其 value 包含 的 KeyVaultKey

listDeletedKeys

public PagedFlux listDeletedKeys()

密钥保管库的列表 DeletedKeyDeletedKey作为包含 的公共部分的结构DeletedKey检索JsonWebKey。 获取已删除密钥操作适用于为软删除启用的保管库。 此操作需要 keys/list 权限。

示例代码

DeletedKey列出密钥保管库中的 。 异步订阅调用,并在收到响应时输出每个 DeletedKey 调用的恢复 ID。

keyAsyncClient.listDeletedKeys()
     .contextWrite(Context.of("key1", "value1", "key2", "value2"))
     .subscribe(deletedKey ->
         System.out.printf("Deleted key's recovery id:%s%n", deletedKey.getRecoveryId()));

Returns:

包含 PagedFlux<T> 保管库中所有 的 DeletedKey

listPropertiesOfKeyVersions

public PagedFlux listPropertiesOfKeyVersions(String name)

列出指定 KeyVaultKey的所有版本。 通量中的单个键响应由 KeyProperties 表示为仅在响应中提供密钥标识符、属性和标记。 响应中未提供密钥材料值。 此操作需要 keys/list 权限。

示例代码

可以从此信息中获取包含所有版本的密钥材料的密钥。 在 中使用 Flux#flatMap(Function)Flux包含 KeyProperties 转换为Flux包含 getKey(String name, String version)KeyVaultKey

keyAsyncClient.listPropertiesOfKeyVersions("keyName")
     .contextWrite(Context.of("key1", "value1", "key2", "value2"))
     .flatMap(keyProperties -> keyAsyncClient.getKey(keyProperties.getName(), keyProperties.getVersion()))
     .subscribe(key ->
         System.out.printf("Retrieved key version: %s with name: %s and type: %s%n",
             key.getProperties().getVersion(), key.getName(), key.getKeyType()));

Parameters:

name - KeyVaultKey 的名称。

Returns:

一个 PagedFlux<T> ,其中包含 KeyProperties 保管库中指定的 的所有版本 KeyVaultKeyFlux 如果密钥保管库中不存在带 的 name 密钥,则为空。

listPropertiesOfKeys

public PagedFlux listPropertiesOfKeys()

密钥保管库中的列表 KeyVaultKey 。 检索密钥保管库中 作为JsonWebKey包含存储KeyVaultKey的公共部分的结构的列表KeyVaultKey。 列表操作适用于所有 KeyType 项,列表中的单个 KeyVaultKey 响应由 表示 KeyProperties ,因为响应中仅提供键标识符、属性和标记。 响应中未列出密钥材料和单个密钥版本。 此操作需要 keys/list 权限。

示例代码

可以从此信息中获取 KeyVaultKey 关键材料。 在 中使用 Flux#flatMap(Function)Flux包含 KeyProperties 转换为Flux包含 getKey(String name, String version)KeyVaultKey

keyAsyncClient.listPropertiesOfKeys()
     .contextWrite(Context.of("key1", "value1", "key2", "value2"))
     .flatMap(keyProperties -> keyAsyncClient.getKey(keyProperties.getName(), keyProperties.getVersion()))
     .subscribe(key -> System.out.printf("Retrieved key with name: %s and type: %s%n",
         key.getName(),
         key.getKeyType()));

Returns:

包含PagedFlux<T>KeyProperties保管库中所有密钥的 。

purgeDeletedKey

public Mono purgeDeletedKey(String name)

永久删除指定的 KeyVaultKey ,无法恢复。 清除已删除的密钥操作适用于已启用软删除的保管库。 此操作需要 keys/purge 权限。

示例代码

KeyVaultKey从启用软删除的密钥保管库中清除 。 异步订阅调用,并在收到响应时输出服务器响应中的状态代码。

keyAsyncClient.purgeDeletedKey("deletedKeyName")
     .subscribe(ignored ->
         System.out.println("Successfully purged deleted key"));

Parameters:

name - KeyVaultKey 的名称。

Returns:

一个空 Mono

purgeDeletedKeyWithResponse

public Mono> purgeDeletedKeyWithResponse(String name)

永久删除指定的 KeyVaultKey ,无法恢复。 清除已删除的密钥操作适用于已启用软删除的保管库。 此操作需要 keys/purge 权限。

示例代码

KeyVaultKey从启用软删除的密钥保管库中清除 。 异步订阅调用,并在收到响应时输出服务器响应中的状态代码。

keyAsyncClient.purgeDeletedKeyWithResponse("deletedKeyName")
     .contextWrite(Context.of("key1", "value1", "key2", "value2"))
     .subscribe(purgeDeletedKeyResponse ->
         System.out.printf("Purge response status code: %d%n", purgeDeletedKeyResponse.getStatusCode()));

Parameters:

name - KeyVaultKey 的名称。

Returns:

包含 Mono 包含状态代码和 HTTP 标头的响应的 。

releaseKey

public Mono releaseKey(String name, String targetAttestationToken)

发布最新版本的 KeyVaultKey

KeyVaultKey必须是可导出的。 此操作需要 keys/release 权限。

示例代码

释放 KeyVaultKey。 异步订阅调用,并在收到响应时输出包含 的 KeyVaultKey 已签名对象。

String targetAttestationToken = "someAttestationToken";
 ReleaseKeyResult releaseKeyResult = keyClient.releaseKey("keyName", targetAttestationToken);

 System.out.printf("Signed object containing released key: %s%n", releaseKeyResult);

Parameters:

name - 要释放的 的名称 KeyVaultKey
targetAttestationToken - 发布目标的 KeyVaultKey 证明断言。

Returns:

一个 Mono ,包含 ReleaseKeyResult 包含已释放密钥的 。

releaseKey

public Mono releaseKey(String name, String version, String targetAttestationToken)

释放密钥。

密钥必须是可导出的。 此操作需要“keys/release”权限。

示例代码

释放 KeyVaultKey。 异步订阅调用,并在收到响应时输出包含 KeyVaultKey 的已签名对象。

String myKeyVersion = "6A385B124DEF4096AF1361A85B16C204";
 String myTargetAttestationToken = "someAttestationToken";

 keyAsyncClient.releaseKey("keyName", myKeyVersion, myTargetAttestationToken)
     .subscribe(releaseKeyResult ->
         System.out.printf("Signed object containing released key: %s%n", releaseKeyResult.getValue()));

Parameters:

name - 要释放的 的名称 KeyVaultKey
version - 要检索的密钥的版本。 如果此为空或 null,则此调用等效于调用 releaseKey(String name, String targetAttestationToken),并发布最新的密钥版本。
targetAttestationToken - 密钥发布目标的证明断言。

Returns:

一个 Mono 包含 ReleaseKeyResult 释放密钥的 。

releaseKeyWithResponse

public Mono> releaseKeyWithResponse(String name, String version, String targetAttestationToken, ReleaseKeyOptions releaseKeyOptions)

释放密钥。

密钥必须是可导出的。 此操作需要“keys/release”权限。

示例代码

释放 KeyVaultKey。 异步订阅调用,并在收到响应时输出 Response<T> 详细信息和包含 KeyVaultKey 的签名对象。

String releaseKeyVersion = "6A385B124DEF4096AF1361A85B16C204";
 String someTargetAttestationToken = "someAttestationToken";
 ReleaseKeyOptions releaseKeyOptions = new ReleaseKeyOptions()
     .setAlgorithm(KeyExportEncryptionAlgorithm.RSA_AES_KEY_WRAP_256)
     .setNonce("someNonce");

 keyAsyncClient.releaseKeyWithResponse("keyName", releaseKeyVersion, someTargetAttestationToken,
         releaseKeyOptions)
     .subscribe(releaseKeyResponse ->
         System.out.printf("Response received successfully with status code: %d. Signed object containing"
                 + "released key: %s%n", releaseKeyResponse.getStatusCode(),
             releaseKeyResponse.getValue().getValue()));

Parameters:

name - 要释放的密钥的名称。
version - 要检索的密钥的版本。 如果此为空或 null,则此调用等效于调用 releaseKey(String name, String targetAttestationToken),并发布最新的密钥版本。
targetAttestationToken - 密钥发布目标的证明断言。
releaseKeyOptions - 用于释放 的附加ReleaseKeyOptionsKeyVaultKey项。

Returns:

包含MonoResponse<T>此操作的 ,包含ReleaseKeyResult释放密钥的 。

restoreKeyBackup

public Mono restoreKeyBackup(byte[] backup)

将备份 KeyVaultKey 的 还原到保管库。 将以前备份KeyVaultKey的 导入 Azure 密钥保管库,还原 KeyVaultKey其密钥标识符、属性和访问控制策略。 还原操作可用于导入以前备份的 KeyVaultKey。 无法还原 的 KeyVaultKey 单个版本。 使用 KeyVaultKey 与备份时相同的密钥名称完全还原 。 如果密钥名称在目标密钥保管库中不可用,则将拒绝还原操作。 虽然还原期间会保留密钥名称,但如果 还原到其他保管库, KeyVaultKey 则最终密钥标识符将更改。 还原操作会还原所有版本,并保留版本标识符。 还原操作受安全约束:目标密钥保管库必须由源密钥保管库所在的同一 Microsoft Azure 订阅拥有。 用户必须在目标密钥保管库中具有 restore 权限。 此操作需要 keys/restore 权限。

示例代码

KeyVaultKey从其备份还原密钥保管库中的 。 异步订阅调用,并在收到响应时输出还原的密钥详细信息。

将密钥备份字节数组传递给还原操作。

keyAsyncClient.restoreKeyBackup(keyBackupByteArray)
     .contextWrite(Context.of("key1", "value1", "key2", "value2"))
     .subscribe(restoreKeyResponse ->
         System.out.printf("Restored key with name: %s and: id %s%n", restoreKeyResponse.getName(),
             restoreKeyResponse.getId()));

Parameters:

backup - 与 KeyVaultKey关联的备份 Blob。

Returns:

包含 MonoKeyVaultKey

restoreKeyBackupWithResponse

public Mono> restoreKeyBackupWithResponse(byte[] backup)

将备份 KeyVaultKey 的 还原到保管库。 将以前备份KeyVaultKey的 导入 Azure 密钥保管库,还原 KeyVaultKey其密钥标识符、属性和访问控制策略。 还原操作可用于导入以前备份的 KeyVaultKey。 无法还原 的 KeyVaultKey 单个版本。 使用 KeyVaultKey 与备份时相同的密钥名称完全还原 。 如果密钥名称在目标密钥保管库中不可用,则将拒绝还原操作。 虽然还原期间会保留密钥名称,但如果 还原到其他保管库, KeyVaultKey 则最终密钥标识符将更改。 还原操作会还原所有版本,并保留版本标识符。 还原操作受安全约束:目标密钥保管库必须由源密钥保管库所在的同一 Microsoft Azure 订阅拥有。 用户必须在目标密钥保管库中具有 restore 权限。 此操作需要 keys/restore 权限。

示例代码

KeyVaultKey从其备份还原密钥保管库中的 。 异步订阅调用,并在收到响应时输出还原的密钥详细信息。

将密钥备份字节数组传递给还原操作。

keyAsyncClient.restoreKeyBackupWithResponse(keyBackupByteArray)
     .contextWrite(Context.of("key1", "value1", "key2", "value2"))
     .subscribe(restoreKeyBackupResponse ->
         System.out.printf("Restored key with name: %s and: id %s%n",
             restoreKeyBackupResponse.getValue().getName(), restoreKeyBackupResponse.getValue().getId()));

Parameters:

backup - 与 KeyVaultKey关联的备份 Blob。

Returns:

包含MonoResponse<T>value包含 的 。KeyVaultKey

rotateKey

public Mono rotateKey(String name)

KeyVaultKey旋转 。 轮换键操作将基于 KeyRotationPolicy执行此操作。 此操作需要 keys/rotate 权限。

示例代码

KeyVaultKey旋转 。 KeyVaultKey输出详细信息。

keyAsyncClient.rotateKey("keyName")
     .subscribe(key ->
         System.out.printf("Rotated key with name: %s and version:%s%n", key.getName(),
             key.getProperties().getVersion()));

Parameters:

name - 要旋转的 的名称 KeyVaultKey 。 系统将在指定的 KeyVaultKey中生成新版本。

Returns:

旋转 KeyVaultKey的 新版本。

rotateKeyWithResponse

public Mono> rotateKeyWithResponse(String name)

KeyVaultKey旋转 。 轮换键操作将基于 KeyRotationPolicy执行此操作。 此操作需要 keys/rotate 权限。

示例代码

KeyVaultKey旋转 。 异步订阅调用,并在收到响应时输出 Response<T>KeyVaultKey 详细信息。

keyAsyncClient.rotateKeyWithResponse("keyName")
     .subscribe(rotateKeyResponse ->
         System.out.printf("Response received successfully with status code: %d. Rotated key with name: %s and"
                 + "version: %s%n", rotateKeyResponse.getStatusCode(), rotateKeyResponse.getValue().getName(),
             rotateKeyResponse.getValue().getProperties().getVersion()));

Parameters:

name - 要旋转的 的名称 KeyVaultKey 。 系统将在指定的 KeyVaultKey中生成新版本。

Returns:

一个 , Mono 包含 Response<T> 此操作的 和轮换 KeyVaultKey的 新版本。

updateKeyProperties

public Mono updateKeyProperties(KeyProperties keyProperties, KeyOperation[] keyOperations)

KeyProperties汇报 与KeyOperation指定的 KeyVaultKey关联,但不是密钥保管库中指定 KeyVaultKey 的加密密钥材料。 更新操作对现有存储KeyVaultKey的更改KeyPropertiesKeyProperties请求中未指定的更改保持不变。 无法更改自身的加密密钥材料 KeyVaultKey 。 此操作需要 keys/set 权限。

示例代码

获取最新版本的 KeyVaultKey,更改其 notBefore 时间,然后在 Azure 密钥保管库中更新它。 异步订阅调用,并在收到响应时输出 KeyVaultKey 详细信息。

keyAsyncClient.getKey("keyName")
     .subscribe(key -> {
         //Update the not before time of the key.
         key.getProperties().setNotBefore(OffsetDateTime.now().plusDays(50));
         keyAsyncClient.updateKeyProperties(key.getProperties(), KeyOperation.ENCRYPT,
                 KeyOperation.DECRYPT)
             .contextWrite(Context.of("key1", "value1", "key2", "value2"))
             .subscribe(updatedKey ->
                 System.out.printf("Updated key's \"not before time\": %s%n",
                     updatedKey.getProperties().getNotBefore().toString()));
     });

Parameters:

keyProperties - KeyProperties具有更新属性的对象。
keyOperations - 更新 KeyOperation 为与密钥关联的 。

Returns:

包含 MonoKeyVaultKey

updateKeyPropertiesWithResponse

public Mono> updateKeyPropertiesWithResponse(KeyProperties keyProperties, KeyOperation[] keyOperations)

KeyProperties汇报 与KeyOperation指定的 KeyVaultKey关联,但不是密钥保管库中指定 KeyVaultKey 的加密密钥材料。 更新操作对现有存储KeyVaultKey的更改KeyPropertiesKeyProperties请求中未指定的更改保持不变。 无法更改自身的加密密钥材料 KeyVaultKey 。 此操作需要 keys/set 权限。

示例代码

获取最新版本的 KeyVaultKey,更改其 notBefore 时间,然后在 Azure 密钥保管库中更新它。 异步订阅调用,并在收到响应时输出 KeyVaultKey 详细信息。

keyAsyncClient.getKey("keyName")
     .subscribe(getKeyResponse -> {
         //Update the not before time of the key.
         getKeyResponse.getProperties().setNotBefore(OffsetDateTime.now().plusDays(50));
         keyAsyncClient.updateKeyPropertiesWithResponse(getKeyResponse.getProperties(), KeyOperation.ENCRYPT,
                 KeyOperation.DECRYPT)
             .contextWrite(Context.of("key1", "value1", "key2", "value2"))
             .subscribe(updateKeyResponse ->
                 System.out.printf("Updated key's \"not before time\": %s%n",
                     updateKeyResponse.getValue().getProperties().getNotBefore().toString()));
     });

Parameters:

keyProperties - KeyProperties具有更新属性的对象。
keyOperations - 更新 KeyOperation 为与密钥关联的 。

Returns:

包含MonoResponse<T>value包含 的 。KeyVaultKey

updateKeyRotationPolicy

public Mono updateKeyRotationPolicy(String keyName, KeyRotationPolicy keyRotationPolicy)

使用提供的名称汇报KeyRotationPolicy键的 。 此操作需要 keys/update 权限。

示例代码

KeyRotationPolicy汇报给定 KeyVaultKey的 。 异步订阅调用,并在收到响应时输出 KeyRotationPolicy 详细信息。

List<KeyRotationLifetimeAction> lifetimeActions = new ArrayList<>();
 KeyRotationLifetimeAction rotateLifetimeAction = new KeyRotationLifetimeAction(KeyRotationPolicyAction.ROTATE)
     .setTimeAfterCreate("P90D");
 KeyRotationLifetimeAction notifyLifetimeAction = new KeyRotationLifetimeAction(KeyRotationPolicyAction.NOTIFY)
     .setTimeBeforeExpiry("P45D");

 lifetimeActions.add(rotateLifetimeAction);
 lifetimeActions.add(notifyLifetimeAction);

 KeyRotationPolicy keyRotationPolicy = new KeyRotationPolicy()
     .setLifetimeActions(lifetimeActions)
     .setExpiresIn("P6M");

 keyAsyncClient.updateKeyRotationPolicy("keyName", keyRotationPolicy)
     .subscribe(updatedPolicy ->
         System.out.printf("Updated key rotation policy with id: %s%n", updatedPolicy.getId()));

Parameters:

keyName - KeyVaultKey 的名称。
keyRotationPolicy - KeyRotationPolicy键的 。

Returns:

包含MonoKeyRotationPolicy密钥的 。

updateKeyRotationPolicyWithResponse

public Mono> updateKeyRotationPolicyWithResponse(String keyName, KeyRotationPolicy keyRotationPolicy)

使用提供的名称汇报KeyRotationPolicy键的 。 此操作需要 keys/update 权限。

示例代码

KeyRotationPolicy汇报给定 KeyVaultKey的 。 异步订阅调用,并在收到响应时输出 Response<T>KeyRotationPolicy 详细信息。

List<KeyRotationLifetimeAction> myLifetimeActions = new ArrayList<>();
 KeyRotationLifetimeAction myRotateLifetimeAction = new KeyRotationLifetimeAction(KeyRotationPolicyAction.ROTATE)
     .setTimeAfterCreate("P90D");
 KeyRotationLifetimeAction myNotifyLifetimeAction = new KeyRotationLifetimeAction(KeyRotationPolicyAction.NOTIFY)
     .setTimeBeforeExpiry("P45D");

 myLifetimeActions.add(myRotateLifetimeAction);
 myLifetimeActions.add(myNotifyLifetimeAction);

 KeyRotationPolicy myKeyRotationPolicy = new KeyRotationPolicy()
     .setLifetimeActions(myLifetimeActions)
     .setExpiresIn("P6M");

 keyAsyncClient.updateKeyRotationPolicyWithResponse("keyName", myKeyRotationPolicy)
     .subscribe(myUpdatedPolicyResponse ->
         System.out.printf("Response received successfully with status code: %d. Updated key rotation policy"
             + "with id: %s%n", myUpdatedPolicyResponse.getStatusCode(),
             myUpdatedPolicyResponse.getValue().getId()));

Parameters:

keyName - KeyVaultKey 的名称。
keyRotationPolicy - KeyRotationPolicy键的 。

Returns:

一个 Mono ,包含 Response<T> 此操作的 , KeyRotationPolicy 包含用于密钥的 。

适用于