你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
KeyAsyncClient 类
- java.
lang. Object - com.
azure. security. keyvault. keys. KeyAsyncClient
- com.
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。
方法摘要
方法继承自 java.lang.Object
方法详细信息
backupKey
public Mono
请求将指定 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:
Returns:
backupKeyWithResponse
public Mono
请求将指定 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:
Returns:
beginDeleteKey
public PollerFlux
KeyVaultKey从密钥保管库中删除任何类型的 。 如果在密钥保管库上启用了软删除, KeyVaultKey 则会将 置于已删除状态,并且需要清除以永久删除, KeyVaultKey 否则将永久删除 。 删除操作适用于 Azure 密钥保管库中存储的任何KeyVaultKey操作,但不能应用于 的单个版本KeyVaultKey。 此操作将删除与 KeyVaultKey关联的加密材料,这意味着 KeyVaultKey 不能用于 Sign/Verify
、 Wrap/Unwrap
或 Encrypt/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:
Returns:
beginRecoverDeletedKey
public PollerFlux
将 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:
Returns:
createEcKey
public Mono
创建新的 KeyVaultKey 并将其存储在密钥保管库中。 创建 EC 密钥操作可用于在 Azure 密钥保管库中创建任何 ECKeyType。 KeyVaultKey如果已存在具有所提供的名称的 ,则 Azure 密钥保管库 会创建 新版本。KeyVaultKey 它需要 keys/create
权限。
CreateEcKeyOptions 参数是必需的。 getCurveName()可以选择性地指定 。 如果未指定,Azure 密钥保管库将使用默认值P_256。 和 expiresnotBefore 值是可选的。 enabled如果未指定字段,则由 Azure 密钥保管库 设置为 true
。
指示 keyType 要创建的密钥的类型 KeyVaultKey 。 可能的值包括: EC 和 EC_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:
Returns:
createEcKeyWithResponse
public Mono
创建新的 KeyVaultKey 并将其存储在密钥保管库中。 创建 EC 密钥操作可用于在 Azure 密钥保管库中创建任何 ECKeyType。 KeyVaultKey如果已存在具有所提供的名称的 ,则 Azure 密钥保管库 会创建 新版本。KeyVaultKey 它需要 keys/create
权限。
CreateEcKeyOptions 参数是必需的。 getCurveName()可以选择性地指定 。 如果未指定,Azure 密钥保管库将使用默认值P_256。 和 expiresnotBefore 值是可选的。 enabled如果未指定字段,则由 Azure 密钥保管库 设置为 true
。
指示 keyType 要创建的密钥的类型 KeyVaultKey 。 可能的值包括: EC 和 EC_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:
Returns:
createKey
public Mono
创建新的并将其 KeyVaultKey 存储在密钥保管库中。 创建密钥操作可用于在 Azure 密钥保管库中创建任何KeyType项。 KeyVaultKey如果已存在具有所提供的名称的 ,则 Azure 密钥保管库会创建 新版本。KeyVaultKey 它需要 keys/create
权限。
CreateKeyOptions 参数是必需的。 getExpiresOn()和 getNotBefore() 值是可选的。 isEnabled()如果未指定,则 Azure 密钥保管库 将字段设置为 true
。
指示 getKeyType() 要创建的 的类型 KeyVaultKey 。 可能的值包括:EC、、EC_HSM、RSARSA_HSM、OCT、 和 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:
Returns:
createKey
public Mono
创建新的并将其 KeyVaultKey 存储在密钥保管库中。 创建密钥操作可用于在 Azure 密钥保管库中创建任何KeyType项。 KeyVaultKey如果已存在具有所提供的名称的 ,则 Azure 密钥保管库会创建 新版本。KeyVaultKey 它需要 keys/create
权限。
指示 KeyType 要创建的 的类型 KeyVaultKey 。 可能的值包括:EC、、EC_HSM、RSARSA_HSM、OCT、 和 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:
Returns:
createKeyWithResponse
public Mono
创建新的并将其 KeyVaultKey 存储在密钥保管库中。 创建密钥操作可用于在 Azure 密钥保管库中创建任何KeyType项。 KeyVaultKey如果已存在具有所提供的名称的 ,则 Azure 密钥保管库会创建 新版本。KeyVaultKey 它需要 keys/create
权限。
指示 KeyType 要创建的 的类型 KeyVaultKey 。 可能的值包括:EC、、EC_HSM、RSARSA_HSM、OCT、 和 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:
Returns:
createOctKey
public Mono
在密钥保管库中创建并存储新的 KeyVaultKey 。 KeyVaultKey如果已存在具有所提供的名称的 ,Azure 密钥保管库会创建密钥的新版本。 此操作需要 keys/create
权限。
CreateOctKeyOptions 参数是必需的。 expires和 notBefore 值是可选的。 enabled如果未指定,则 Azure 密钥保管库 将字段设置为 true
。
指示 keyType 要创建的密钥的类型 KeyVaultKey 。 可能的值包括: OCT 和 OCT_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:
Returns:
createOctKeyWithResponse
public Mono
在密钥保管库中创建并存储新的 KeyVaultKey 。 KeyVaultKey如果已存在具有所提供的名称的 ,Azure 密钥保管库会创建密钥的新版本。 此操作需要 keys/create
权限。
CreateOctKeyOptions 参数是必需的。 expires和 notBefore 值是可选的。 enabled如果未指定,则 Azure 密钥保管库 将字段设置为 true
。
指示 keyType 要创建的密钥的类型 KeyVaultKey 。 可能的值包括: OCT 和 OCT_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:
Returns:
createRsaKey
public Mono
/** 创建新的并将其 KeyVaultKey 存储在密钥保管库中。 创建 RSA 密钥操作可用于在 Azure 密钥保管库中创建任何 RSA 密钥类型。 KeyVaultKey如果已存在具有所提供的名称的 ,则 Azure 密钥保管库会创建 新版本。KeyVaultKey 它需要 keys/create
权限。
CreateRsaKeyOptions 参数是必需的。 getKeySize()可以选择指定 。 expires和 notBefore 值是可选的。 enabled如果未指定,则 Azure 密钥保管库 将字段设置为 true
。
指示 keyType 要创建的 的类型 KeyVaultKey 。 可能的值包括: RSA 和 RSA_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:
Returns:
createRsaKeyWithResponse
public Mono
创建新的并将其 KeyVaultKey 存储在密钥保管库中。 创建 RSA 密钥操作可用于在 Azure 密钥保管库中创建任何 RSA 密钥类型。 KeyVaultKey如果已存在具有所提供的名称的 ,则 Azure 密钥保管库会创建 新版本。KeyVaultKey 它需要 keys/create
权限。
CreateRsaKeyOptions 参数是必需的。 getKeySize()可以选择指定 。 expires和 notBefore 值是可选的。 enabled如果未指定,则 Azure 密钥保管库 将字段设置为 true
。
指示 keyType 要创建的 的类型 KeyVaultKey 。 可能的值包括: RSA 和 RSA_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:
Returns:
getCryptographyAsyncClient
public CryptographyAsyncClient getCryptographyAsyncClient(String keyName)
CryptographyAsyncClient为给定密钥的最新版本创建 。
若要确保在执行 、 和 等Decrypt
操作时的行为正确,建议分别使用CryptographyAsyncClient为用于相应逆运算的特定密钥版本创建的 :Encrypt
、 Wrap
或 Sign
。 Unwrap
Verify
在生成客户端之前,可以通过 或 确保密钥版本包含在传递给 keyIdentifier(String keyId) 的 中keyIdentifier
来提供密钥版本getCryptographyAsyncClient(String keyName, String keyVersion)。
Parameters:
Returns:
getCryptographyAsyncClient
public CryptographyAsyncClient getCryptographyAsyncClient(String keyName, String keyVersion)
CryptographyAsyncClient为给定密钥版本创建 。
Parameters:
Returns:
getDeletedKey
public Mono
获取 的公共 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:
Returns:
getDeletedKeyWithResponse
public Mono
获取 的公共 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:
Returns:
getKey
public Mono
获取指定 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:
Returns:
getKey
public Mono
获取指定 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:
Returns:
getKeyRotationPolicy
public Mono
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:
Returns:
getKeyRotationPolicyWithResponse
public Mono
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:
Returns:
getKeyWithResponse
public Mono
获取指定 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:
Returns:
getRandomBytes
public Mono
从托管 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:
Returns:
getRandomBytesWithResponse
public Mono
从托管 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:
Returns:
getVaultUrl
public String getVaultUrl()
获取服务请求发送到的保管库终结点 URL。
Returns:
importKey
public Mono
导入外部创建的 JsonWebKey ,并将其存储在密钥保管库中。 导入密钥操作可用于将任何KeyType项导入 Azure 密钥保管库。 KeyVaultKey如果已存在具有所提供的名称的 ,则 Azure 密钥保管库 会创建 新版本。KeyVaultKey 此操作需要 keys/import
权限。
ImportKeyOptions 是必需的,并且其字段 name 不能 getKey() 为 null
。 中的 expireskeyImportOptions
和 notBefore 值是可选的。 如果未指定,则不为字段设置任何值。 enabled如果未指定字段true
isHardwareProtected(),则 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:
Returns:
importKey
public Mono
导入外部创建的 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:
Returns:
importKeyWithResponse
public Mono
导入外部创建的 JsonWebKey ,并将其存储在密钥保管库中。 导入密钥操作可用于将任何KeyType项导入 Azure 密钥保管库。 KeyVaultKey如果已存在具有所提供的名称的 ,则 Azure 密钥保管库 会创建 新版本。KeyVaultKey 此操作需要 keys/import
权限。
ImportKeyOptions 是必需的,并且其字段 name 不能 getKey() 为 null
。 中的 expireskeyImportOptions
和 notBefore 值是可选的。 如果未指定,则不为字段设置任何值。 enabled如果未指定字段true
isHardwareProtected(),则 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:
Returns:
listDeletedKeys
public PagedFlux
密钥保管库的列表 DeletedKey 。 DeletedKey作为包含 的公共部分的结构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:
listPropertiesOfKeyVersions
public PagedFlux
列出指定 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:
Returns:
listPropertiesOfKeys
public PagedFlux
密钥保管库中的列表 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:
purgeDeletedKey
public Mono
永久删除指定的 KeyVaultKey ,无法恢复。 清除已删除的密钥操作适用于已启用软删除的保管库。 此操作需要 keys/purge
权限。
示例代码
KeyVaultKey从启用软删除的密钥保管库中清除 。 异步订阅调用,并在收到响应时输出服务器响应中的状态代码。
keyAsyncClient.purgeDeletedKey("deletedKeyName")
.subscribe(ignored ->
System.out.println("Successfully purged deleted key"));
Parameters:
Returns:
purgeDeletedKeyWithResponse
public Mono
永久删除指定的 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:
Returns:
releaseKey
public Mono
发布最新版本的 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:
Returns:
releaseKey
public Mono
释放密钥。
密钥必须是可导出的。 此操作需要“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:
null
,则此调用等效于调用 releaseKey(String name, String targetAttestationToken),并发布最新的密钥版本。
Returns:
releaseKeyWithResponse
public Mono
释放密钥。
密钥必须是可导出的。 此操作需要“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:
null
,则此调用等效于调用 releaseKey(String name, String targetAttestationToken),并发布最新的密钥版本。
Returns:
restoreKeyBackup
public Mono
将备份 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:
Returns:
restoreKeyBackupWithResponse
public Mono
将备份 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:
Returns:
rotateKey
public Mono
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:
Returns:
rotateKeyWithResponse
public Mono
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:
Returns:
updateKeyProperties
public Mono
KeyProperties汇报 与KeyOperation指定的 KeyVaultKey关联,但不是密钥保管库中指定 KeyVaultKey 的加密密钥材料。 更新操作对现有存储KeyVaultKey的更改KeyProperties和KeyProperties请求中未指定的更改保持不变。 无法更改自身的加密密钥材料 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:
Returns:
updateKeyPropertiesWithResponse
public Mono
KeyProperties汇报 与KeyOperation指定的 KeyVaultKey关联,但不是密钥保管库中指定 KeyVaultKey 的加密密钥材料。 更新操作对现有存储KeyVaultKey的更改KeyProperties和KeyProperties请求中未指定的更改保持不变。 无法更改自身的加密密钥材料 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:
Returns:
updateKeyRotationPolicy
public Mono
使用提供的名称汇报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:
Returns:
updateKeyRotationPolicyWithResponse
public Mono
使用提供的名称汇报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:
Returns: