بداية سريعة: مكتبة عميل شهادة Azure Key Vault لـ Java (الشهادات)

ابدأ مع مكتبة عميل شهادة Azure Key Vault لـ Java. اتبع الخطوات أدناه لتثبيت الحزمة وجرب مثالاً على رمز للمهام الأساسية.

تلميح

إذا كنت تعمل مع موارد شهادات Azure Key Vault في تطبيق Spring، نوصيك بمراعاة Spring Cloud Azure كبديل. Spring Cloud Azure هو مشروع مفتوح المصدر يوفر تكامل Spring سلس مع خدمات Azure. لمعرفة المزيد حول Spring Cloud Azure، والاطلاع على مثال باستخدام شهادات Key Vault، راجع تمكين HTTPS في Spring Boot باستخدام شهادات Azure Key Vault.

موارد إضافية:

المتطلبات الأساسية

يفترض التشغيل السريع أنك تقوم بتشغيل Azure CLI وApache Maven في نافذة Linux الطرفية.

الإعداد

يُستخدم هذا التشغيل السريع مكتبة Azure Identity مع Azure CLI لمصادقة المستخدم إلىAzure Services. يمكن للمطورين أيضاً استخدام Visual Studio أو Visual Studio Code لمصادقة مكالماتهم، وللحصول على مزيد من المعلومات، راجع مصادقة العميل باستخدام مكتبة عميل Azure Identity.

تسجيل الدخول إلى Azure

  1. تشغيل الأمر login.

    az login
    

    في حال كان CLI يمكن فتح المستعرض الافتراضي الخاص بك، فإنه سيتم القيام بذلك وتحميل صفحة تسجيل الدخول Azure.

    بخلاف ذلك، افتح صفحة متصفح على https://aka.ms/devicelogin وأدخل رمز التفويض المعروض في جهازك.

  2. قم بتسجيل الدخول باستخدام بيانات اعتماد حسابك في المتصفح.

إنشاء تطبيق وحدة تحكم Java جديد

في نافذة وحدة التحكم، استخدم الأمر mvn لإنشاء تطبيق وحدة تحكم Java جديد باسم akv-certificates-java.

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

ستبدو المخرجات الناتجة عن إنشاء المشروع كما يلي:

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

تغيير الدليل إلى المجلد akv-certificates-java/ المنشأ حديثاً.

cd akv-certificates-java

تثبيت الحزمة

افتح ملف pom.xml في محرر النص. أضف عناصر التبعية التالية إلى مجموعة التبعيات.

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

إنشاء مجموعة موارد ومخزن رئيسي

يستخدم هذا التشغيل السريع مخزن مفاتيح Azure تم إنشاؤه مسبقا. يمكنك إنشاء مخزن بيانات سرية باتباع الخطوات الواردة في بداية سريعة إلى Azure CLI أو بداية سريعة إلى Azure PowerShell أو بداية سريعة إلى مدخل Microsoft Azure.

بدلا من ذلك، يمكنك تشغيل أوامر Azure CLI أو Azure PowerShell هذه.

هام

يجب أن يكون لكل مخزن رئيسي اسم فريد. استبدل <your-unique-keyvault-name> باسم المخزن الرئيس في الأمثلة التالية.

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

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

امنح حق الوصول إلى خزنة المفاتيح الخاصة بك

للحصول على أذونات إلى مخزن المفاتيح الخاص بك من خلال التحكم في الوصول المستند إلى الدور (RBAC)، قم بتعيين دور إلى "اسم المستخدم الأساسي" (UPN) باستخدام الأمر Azure CLI az role assignment create.

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

استبدل <upn>، <subscription-id>، <resource-group-name> و <your-unique-keyvault-name> بقيمك الفعلية. سيكون UPN الخاص بك عادة بتنسيق عنوان بريد إلكتروني (على سبيل المثال، username@domain.com).

تعيين متغيرات البيئة

يستخدم هذا التطبيق اسم مخزن البيانات السرية لك كمتغير بيئة يسمى KEY_VAULT_NAME.

Windows

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

Windows PowerShell

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

macOS أو Linux

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

نموذج الكائن

تتيح لك مكتبة عميل شهادة Azure Key Vault لـ Java إدارة الشهادات. يوضح قسم أمثلة التعليمات البرمجية كيفية إنشاء عميل وإنشاء شهادة واسترداد شهادة وحذف شهادة.

يوجد تطبيق وحدة التحكم بالكامل أدناه.

أمثلة على التعليمات البرمجية

أضف توجيهات

إضافة التوجيهات التالية إلى أعلى التعليمة البرمجية الخاصة بك:

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;

مصادقة عميل وإنشاؤه

يجب التصريح بطلبات التطبيق إلى معظم خدمات Azure. استخدام DefaultAzureCredential هو الأسلوب الموصى به لتنفيذ الاتصالات بدون كلمة مرور بخدمات Azure في التعليمات البرمجية الخاصة بك. DefaultAzureCredential يدعم أساليب مصادقة متعددة ويحدد الأسلوب الذي يجب استخدامه في وقت التشغيل. يمكن هذا النهج تطبيقك من استخدام أساليب مصادقة مختلفة في بيئات مختلفة (البيئة المحلية مقابل بيئة التشغيل) دون تنفيذ التعليمات البرمجية الخاصة بالبيئة.

في هذا التشغيل السريع، DefaultAzureCredential يصادق على key vault باستخدام بيانات اعتماد مستخدم التطوير المحلي الذي سجل الدخول إلى Azure CLI. عند نشر التطبيق إلى Azure، يمكن لنفس DefaultAzureCredential التعليمات البرمجية اكتشاف واستخدام هوية مدارة تلقائيا تم تعيينها إلى App Service أو Virtual Machine أو خدمات أخرى. لمزيد من المعلومات، راجع نظرة عامة على الهوية المُدارة.

في هذا المثال، يتم توسيع اسم مخزن المفاتيح الخاص بك إلى URI لمخزن المفاتيح، بالتنسيق https://<your-key-vault-name>.vault.azure.net. لمزيد من المعلومات حول المصادقة إلى مخزن المفاتيح، راجع دليل المطور.

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

حفظ سر

الآن بعد أن تمت مصادقة التطبيق الخاص بك، يمكنك إنشاء شهادة في مخزن المفاتيح الخاص بك باستخدام certificateClient.beginCreateCertificate الأسلوب . يتطلب هذا اسما للشهادة ونهج شهادة -- لقد قمنا بتعيين القيمة "myCertificate" إلى certificateName المتغير في هذا النموذج واستخدام نهج افتراضي.

تعد عملية إنشاء الشهادة عملية طويلة الأمد، حيث يمكنك التحقق من مدى تقدمها أو الانتظار حتى تكتمل.

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

يمكنك الحصول على الشهادة بمجرد اكتمال الإنشاء من خلال المكالمة التالية:

KeyVaultCertificate createdCertificate = certificatePoller.getFinalResult();

استرجاع الشهادة

يمكنك الآن استرداد الشهادة التي تم إنشاؤها مسبقا باستخدام certificateClient.getCertificate الأسلوب .

KeyVaultCertificate retrievedCertificate = certificateClient.getCertificate(certificateName);

يمكنك الآن الوصول إلى تفاصيل الشهادة المستردة مع عمليات مثل retrievedCertificate.getName، retrievedCertificate.getProperties، وما إلى ذلك. بالإضافة إلى محتوياته retrievedCertificate.getCer.

حذف شهادة

وأخيرا، دعنا نحذف الشهادة من مخزن المفاتيح الخاص بك باستخدام certificateClient.beginDeleteCertificate الأسلوب ، وهو أيضا عملية طويلة الأمد.

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

تنظيف الموارد

عندما لم تعد هناك حاجة، يمكنك استخدام Azure CLI أو Azure PowerShell لإزالة مخزن البيانات السرية ومجموعة الموارد المقابلة.

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

التعليمة البرمجية العينة

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

الخطوات التالية

في هذه البداية السريعة، قمت بإنشاء مخزن بيانات سرية وإنشاء شهادة واستردادها ثم حذفها. لمعرفة المزيد حول Key Vault وكيفية دمجه مع التطبيقات الخاصة بك، تابع المقالات أدناه.