Sdílet prostřednictvím


Rychlý start: Klientská knihovna certifikátů služby Azure Key Vault pro Javu (certifikáty)

Začínáme s klientskou knihovnou certifikátů služby Azure Key Vault pro Javu Podle následujících kroků nainstalujte balíček a vyzkoušejte ukázkový kód pro základní úlohy.

Tip

Pokud pracujete s prostředky certifikátů služby Azure Key Vault v aplikaci Spring, doporučujeme jako alternativu zvážit Spring Cloud Azure . Spring Cloud Azure je opensourcový projekt, který poskytuje bezproblémovou integraci Spring se službami Azure. Další informace o Službě Spring Cloud Azure a příklad použití certifikátů služby Key Vault najdete v tématu Povolení HTTPS ve Spring Bootu s certifikáty služby Azure Key Vault.

Další prostředky:

Požadavky

V tomto rychlém startu se předpokládá, že používáte Azure CLI a Apache Maven v okně terminálu s Linuxem.

Nastavení

Tento rychlý start používá knihovnu identit Azure s Azure CLI k ověření uživatele ve službách Azure. Vývojáři můžou také k ověřování volání použít Visual Studio nebo Visual Studio Code. Další informace najdete v tématu Ověřování klienta pomocí klientské knihovny Azure Identity.

Přihlášení k Azure

  1. Spusťte příkaz login.

    az login
    

    Pokud rozhraní příkazového řádku může otevřít výchozí prohlížeč, provede to a načte přihlašovací stránku Azure.

    V opačném případě otevřete stránku https://aka.ms/devicelogin prohlížeče a zadejte autorizační kód zobrazený v terminálu.

  2. Přihlaste se pomocí přihlašovacích údajů vašeho účtu v prohlížeči.

Vytvoření nové konzolové aplikace v Javě

V okně konzoly pomocí mvn příkazu vytvořte novou konzolovou aplikaci Java s názvem akv-certificates-java.

mvn archetype:generate -DgroupId=com.keyvault.certificates.quickstart
                       -DartifactId=akv-certificates-java
                       -DarchetypeArtifactId=maven-archetype-quickstart
                       -DarchetypeVersion=1.4
                       -DinteractiveMode=false

Výstup z generování projektu bude vypadat přibližně takto:

[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Archetype: maven-archetype-quickstart:1.4
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: groupId, Value: com.keyvault.certificates.quickstart
[INFO] Parameter: artifactId, Value: akv-certificates-java
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Parameter: package, Value: com.keyvault.certificates.quickstart
[INFO] Parameter: packageInPathFormat, Value: com/keyvault/quickstart
[INFO] Parameter: package, Value: com.keyvault.certificates.quickstart
[INFO] Parameter: groupId, Value: com.keyvault.certificates.quickstart
[INFO] Parameter: artifactId, Value: akv-certificates-java
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Project created from Archetype in dir: /home/user/quickstarts/akv-certificates-java
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  38.124 s
[INFO] Finished at: 2019-11-15T13:19:06-08:00
[INFO] ------------------------------------------------------------------------

Změňte adresář na nově vytvořenou akv-certificates-java/ složku.

cd akv-certificates-java

Nainstalujte balíček .

Otevřete soubor pom.xml v textovém editoru. Do skupiny závislostí přidejte následující prvky závislostí.

    <dependency>
      <groupId>com.azure</groupId>
      <artifactId>azure-security-keyvault-certificates</artifactId>
      <version>4.1.3</version>
    </dependency>

    <dependency>
      <groupId>com.azure</groupId>
      <artifactId>azure-identity</artifactId>
      <version>1.2.0</version>
    </dependency>

Vytvoření skupiny prostředků a trezoru klíčů

V tomto rychlém startu se používá předem vytvořený trezor klíčů Azure. Trezor klíčů můžete vytvořit pomocí kroků v rychlém startu Azure CLI, rychlém startu Azure PowerShellu nebo rychlém startu webu Azure Portal.

Alternativně můžete spustit tyto příkazy Azure CLI nebo Azure PowerShellu.

Důležité

Každý trezor klíčů musí mít jedinečný název. Nahraďte <název-unique-keyvault-name> názvem vašeho trezoru klíčů v následujících příkladech.

az group create --name "myResourceGroup" -l "EastUS"

az keyvault create --name "<your-unique-keyvault-name>" -g "myResourceGroup" --enable-rbac-authorization

Udělení přístupu k trezoru klíčů

Pokud chcete aplikaci udělit oprávnění k trezoru klíčů prostřednictvím řízení přístupu na základě role (RBAC), přiřaďte roli pomocí příkazu Azure CLI az role assignment create.

az role assignment create --role "Key Vault Secrets User" --assignee "<app-id>" --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.KeyVault/vaults/<your-unique-keyvault-name>"

Nahraďte <app-id>hodnoty <resource-group-name> <subscription-id>a <your-unique-keyvault-name> skutečnými hodnotami. <app-id> je ID aplikace (klienta) vaší registrované aplikace v Microsoft Entra.

Nastavení proměnných prostředí

Tato aplikace používá název trezoru klíčů jako proměnnou prostředí s názvem KEY_VAULT_NAME.

Windows

set KEY_VAULT_NAME=<your-key-vault-name>

Windows PowerShell

$Env:KEY_VAULT_NAME="<your-key-vault-name>"

macOS nebo Linux

export KEY_VAULT_NAME=<your-key-vault-name>

Objektový model

Klientská knihovna certifikátů služby Azure Key Vault pro Javu umožňuje spravovat certifikáty. Část Příklady kódu ukazuje, jak vytvořit klienta, vytvořit certifikát, načíst certifikát a odstranit certifikát.

Celá konzolová aplikace je níže.

Příklady kódu

Přidání direktiv

Na začátek kódu přidejte následující direktivy:

import com.azure.core.util.polling.SyncPoller;
import com.azure.identity.DefaultAzureCredentialBuilder;

import com.azure.security.keyvault.certificates.CertificateClient;
import com.azure.security.keyvault.certificates.CertificateClientBuilder;
import com.azure.security.keyvault.certificates.models.CertificateOperation;
import com.azure.security.keyvault.certificates.models.CertificatePolicy;
import com.azure.security.keyvault.certificates.models.DeletedCertificate;
import com.azure.security.keyvault.certificates.models.KeyVaultCertificate;
import com.azure.security.keyvault.certificates.models.KeyVaultCertificateWithPolicy;

Ověření a vytvoření klienta

Žádosti o aplikace na většinu služeb Azure musí být autorizované. Použití defaultAzureCredential je doporučený postup pro implementaci připojení bez hesla ke službám Azure ve vašem kódu. DefaultAzureCredential podporuje více metod ověřování a určuje, která metoda se má použít za běhu. Tento přístup umožňuje vaší aplikaci používat různé metody ověřování v různých prostředích (místní a produkční) bez implementace kódu specifického pro prostředí.

V tomto rychlém startu DefaultAzureCredential se ověří v trezoru klíčů pomocí přihlašovacích údajů místního vývojového uživatele přihlášeného k Azure CLI. Když je aplikace nasazená do Azure, může stejný DefaultAzureCredential kód automaticky zjišťovat a používat spravovanou identitu přiřazenou ke službě App Service, virtuálnímu počítači nebo jiným službám. Další informace najdete v tématu Přehled spravované identity.

V tomto příkladu se název trezoru klíčů rozbalí na identifikátor URI trezoru klíčů ve formátu https://<your-key-vault-name>.vault.azure.net. Další informace o ověřování v trezoru klíčů najdete v příručce pro vývojáře.

String keyVaultName = System.getenv("KEY_VAULT_NAME");
String keyVaultUri = "https://" + keyVaultName + ".vault.azure.net";

CertificateClient certificateClient = new CertificateClientBuilder()
    .vaultUrl(keyVaultUri)
    .credential(new DefaultAzureCredentialBuilder().build())
    .buildClient();

Uložení tajného kódu

Teď, když je vaše aplikace ověřená, můžete v trezoru klíčů vytvořit certifikát pomocí této certificateClient.beginCreateCertificate metody. To vyžaduje název certifikátu a zásady certifikátu – přiřadili jsme hodnotu myCertificate proměnné certificateName v této ukázce a použili výchozí zásadu.

Vytvoření certifikátu je dlouhotrvající operace, pro kterou se můžete dotazovat na jeho průběh nebo počkat, až se dokončí.

SyncPoller<CertificateOperation, KeyVaultCertificateWithPolicy> certificatePoller =
    certificateClient.beginCreateCertificate(certificateName, CertificatePolicy.getDefault());
certificatePoller.waitForCompletion();

Jakmile se vytvoření dokončí, můžete certifikát získat pomocí následujícího volání:

KeyVaultCertificate createdCertificate = certificatePoller.getFinalResult();

Načtení certifikátu

Teď můžete pomocí metody načíst dříve vytvořený certifikát certificateClient.getCertificate .

KeyVaultCertificate retrievedCertificate = certificateClient.getCertificate(certificateName);

Teď můžete získat přístup k podrobnostem načteného certifikátu pomocí operací, jako je retrievedCertificate.getName, retrievedCertificate.getPropertiesatd. Stejně jako jeho obsah retrievedCertificate.getCer.

Odstranění certifikátu

Nakonec odstraníme certifikát z trezoru klíčů pomocí certificateClient.beginDeleteCertificate metody, což je také dlouhotrvající operace.

SyncPoller<DeletedCertificate, Void> deletionPoller = certificateClient.beginDeleteCertificate(certificateName);
deletionPoller.waitForCompletion();

Vyčištění prostředků

Pokud už nepotřebujete, můžete pomocí Azure CLI nebo Azure PowerShellu odebrat trezor klíčů a odpovídající skupinu prostředků.

az group delete -g "myResourceGroup"
Remove-AzResourceGroup -Name "myResourceGroup"

Ukázkový kód

package com.keyvault.certificates.quickstart;

import com.azure.core.util.polling.SyncPoller;
import com.azure.identity.DefaultAzureCredentialBuilder;

import com.azure.security.keyvault.certificates.CertificateClient;
import com.azure.security.keyvault.certificates.CertificateClientBuilder;
import com.azure.security.keyvault.certificates.models.CertificateOperation;
import com.azure.security.keyvault.certificates.models.CertificatePolicy;
import com.azure.security.keyvault.certificates.models.DeletedCertificate;
import com.azure.security.keyvault.certificates.models.KeyVaultCertificate;
import com.azure.security.keyvault.certificates.models.KeyVaultCertificateWithPolicy;

public class App {
    public static void main(String[] args) throws InterruptedException, IllegalArgumentException {
        String keyVaultName = System.getenv("KEY_VAULT_NAME");
        String keyVaultUri = "https://" + keyVaultName + ".vault.azure.net";

        System.out.printf("key vault name = %s and kv uri = %s \n", keyVaultName, keyVaultUri);

        CertificateClient certificateClient = new CertificateClientBuilder()
            .vaultUrl(keyVaultUri)
            .credential(new DefaultAzureCredentialBuilder().build())
            .buildClient();

        String certificateName = "myCertificate";

        System.out.print("Creating a certificate in " + keyVaultName + " called '" + certificateName + " ... ");

        SyncPoller<CertificateOperation, KeyVaultCertificateWithPolicy> certificatePoller =
            certificateClient.beginCreateCertificate(certificateName, CertificatePolicy.getDefault());
        certificatePoller.waitForCompletion();

        System.out.print("done.");
        System.out.println("Retrieving certificate from " + keyVaultName + ".");

        KeyVaultCertificate retrievedCertificate = certificateClient.getCertificate(certificateName);

        System.out.println("Your certificate's ID is '" + retrievedCertificate.getId() + "'.");
        System.out.println("Deleting your certificate from " + keyVaultName + " ... ");

        SyncPoller<DeletedCertificate, Void> deletionPoller = certificateClient.beginDeleteCertificate(certificateName);
        deletionPoller.waitForCompletion();

        System.out.print("done.");
    }
}

Další kroky

V tomto rychlém startu jste vytvořili trezor klíčů, vytvořili certifikát, načetli ho a pak ho odstranili. Další informace o službě Key Vault a její integraci s vašimi aplikacemi najdete v následujících článcích.