Rövid útmutató: Azure Key Vault-tanúsítvány ügyfélkódtár Java-hoz (tanúsítványok)

Ismerkedés a Java-hoz készült Azure Key Vault-tanúsítvány ügyfélkódtárával. Az alábbi lépéseket követve telepítse a csomagot, és próbálja ki az alapműveletek példakódját.

Tipp.

Ha az Azure Key Vault-tanúsítványok erőforrásaival dolgozik egy Spring-alkalmazásban, javasoljuk, hogy fontolja meg alternatívaként a Spring Cloud Azure-t. A Spring Cloud Azure egy nyílt forráskódú projekt, amely zökkenőmentes Spring-integrációt biztosít az Azure-szolgáltatásokkal. Ha többet szeretne megtudni a Spring Cloud Azure-ról, és egy Key Vault-tanúsítványokat használó példát szeretne látni, olvassa el a HTTPS engedélyezése a Spring Bootban az Azure Key Vault-tanúsítványokkal című témakört.

További források:

Előfeltételek

Ez a rövid útmutató feltételezi, hogy Az Azure CLI és az Apache Maven linuxos terminálablakban fut.

Beállítás

Ez a rövid útmutató az Azure Identity Library és az Azure CLI használatával hitelesíti a felhasználót az Azure Servicesben. A fejlesztők a Visual Studio vagy a Visual Studio Code használatával is hitelesíthetik a hívásaikat. További információ : Az ügyfél hitelesítése az Azure Identity ügyfélkódtárával.

Bejelentkezés az Azure-ba

  1. Futtassa a következő parancsot: login.

    az login
    

    Ha a parancssori felület meg tudja nyitni az alapértelmezett böngészőt, az meg fogja tenni, és betölt egy Azure-bejelentkezési lapot.

    Ellenkező esetben nyisson meg egy böngészőlapot, https://aka.ms/devicelogin és adja meg a terminálban megjelenő engedélyezési kódot.

  2. A böngészőben jelentkezzen be fiókja hitelesítő adataival.

Új Java-konzolalkalmazás létrehozása

A konzolablakban a mvn paranccsal hozzon létre egy új Java-konzolalkalmazást a névvel akv-certificates-java.

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

A projekt generálásának kimenete a következőhöz hasonlóan fog kinézni:

[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] ------------------------------------------------------------------------

Módosítsa a könyvtárat az újonnan létrehozott akv-certificates-java/ mappára.

cd akv-certificates-java

Telepítse a(z) csomagot

Nyissa meg a pom.xml fájlt a szövegszerkesztőben. Adja hozzá a következő függőségi elemeket a függőségek csoportjához.

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

Erőforráscsoport és kulcstartó létrehozása

Ez a rövid útmutató egy előre létrehozott Azure Key Vaultot használ. Kulcstartót az Azure CLI rövid útmutatójában, az Azure PowerShell gyorsútmutatójában vagy az Azure Portal rövid útmutatójában ismertetett lépések követésével hozhat létre.

Másik lehetőségként egyszerűen futtathatja az alábbi Azure CLI- vagy Azure PowerShell-parancsokat.

Fontos

Minden kulcstartónak egyedi névvel kell rendelkeznie. Cserélje le <az egyedi-keyvault-nevét> a kulcstartó nevére az alábbi példákban.

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

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

Hozzáférés biztosítása a kulcstartóhoz

Ha szerepköralapú hozzáférés-vezérléssel (RBAC) szeretne engedélyt adni az alkalmazásnak a kulcstartóhoz, rendeljen hozzá egy szerepkört az az role assignment create Azure CLI paranccsal.

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

Cserélje le <az alkalmazásazonosítót>, <az előfizetés-azonosítót>, <az erőforráscsoport nevét> és <az egyedi-kulcsvault-nevét> a tényleges értékekre. <Az app-id> a regisztrált alkalmazás (ügyfél) azonosítója az Azure AD-ben.

Környezeti változók beállítása

Ez az alkalmazás a key vault nevét használja egy úgynevezett KEY_VAULT_NAMEkörnyezeti változóként.

Windows

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

Windows PowerShell

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

macOS vagy Linux

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

Objektummodell

A Java-hoz készült Azure Key Vault-tanúsítvány ügyféloldali kódtára lehetővé teszi a tanúsítványok kezelését. A Példakód szakasz bemutatja, hogyan hozhat létre ügyfelet, hozhat létre tanúsítványt, hogyan kérdezhet le tanúsítványt, és hogyan törölhet tanúsítványt.

A teljes konzolalkalmazás alább látható.

Kódpéldák

Irányelvek hozzáadása

Adja hozzá a következő irányelveket a kód elejéhez:

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;

Ügyfél hitelesítése és létrehozása

A legtöbb Azure-szolgáltatáshoz irányuló alkalmazáskéréseket engedélyezni kell. A DefaultAzureCredential használata ajánlott módszer az Azure-szolgáltatásokhoz való jelszó nélküli kapcsolatok implementálásához a kódban. DefaultAzureCredential több hitelesítési módszert támogat, és meghatározza, hogy melyik metódust kell használni futásidőben. Ez a megközelítés lehetővé teszi, hogy az alkalmazás különböző hitelesítési módszereket használjon különböző környezetekben (helyi és éles környezetben) környezetspecifikus kód implementálása nélkül.

Ebben a rövid útmutatóban DefaultAzureCredential az Azure CLI-be bejelentkezett helyi fejlesztő felhasználó hitelesítő adataival hitelesíti a Key Vaultot. Az alkalmazás Azure-ban való üzembe helyezésekor ugyanaz DefaultAzureCredential a kód automatikusan felderítheti és használhat egy App Service-hez, virtuális géphez vagy más szolgáltatáshoz hozzárendelt felügyelt identitást. További információ: Felügyelt identitás áttekintése.

Ebben a példában a kulcstartó neve ki van bontva a key vault URI formátumára https://<your-key-vault-name>.vault.azure.net. A Key Vaultba való hitelesítésről további információt a fejlesztői útmutatóban talál.

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

Titkos kód mentése

Az alkalmazás hitelesítése után létrehozhat egy tanúsítványt a kulcstartóban a certificateClient.beginCreateCertificate módszerrel. Ehhez a tanúsítvány és a tanúsítványházirend neve szükséges – a "myCertificate" értéket hozzárendeltük a certificateName mintában szereplő változóhoz, és egy alapértelmezett szabályzatot használunk.

A tanúsítványlétrehozás egy hosszú ideig futó művelet, amelynek során lekérdezheti annak állapotát, vagy megvárhatja, amíg befejeződik.

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

A tanúsítványt a létrehozás befejezése után az alábbi hívással szerezheti be:

KeyVaultCertificate createdCertificate = certificatePoller.getFinalResult();

Tanúsítvány lekérése

Most már lekérheti a korábban létrehozott tanúsítványt a certificateClient.getCertificate módszerrel.

KeyVaultCertificate retrievedCertificate = certificateClient.getCertificate(certificateName);

Mostantól hozzáférhet a lekért tanúsítvány részleteihez olyan műveletekkel, mint a retrievedCertificate.getName, retrievedCertificate.getPropertiesstb. Csakúgy, mint annak tartalmát retrievedCertificate.getCer.

Tanúsítvány törlése

Végül töröljük a tanúsítványt a kulcstartóból a certificateClient.beginDeleteCertificate metódussal, ami szintén egy hosszú ideig futó művelet.

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

Az erőforrások eltávolítása

Ha már nincs rá szükség, az Azure CLI vagy az Azure PowerShell használatával eltávolíthatja a kulcstartót és a megfelelő erőforráscsoportot.

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

Mintakó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.");
    }
}

Következő lépések

Ebben a rövid útmutatóban létrehozott egy kulcstartót, létrehozott egy tanúsítványt, lekérte, majd törölte. Ha többet szeretne megtudni a Key Vaultról és az alkalmazásokba való integrálásáról, folytassa az alábbi cikkekkel.