الوصول إلى خادم التكوين وسجل الخدمة

إشعار

يعد Azure Spring Apps هو الاسم الجديد لخدمة Azure Spring Cloud. رغم أن الخدمة تحمل اسماً جديداً، سترى الاسم القديم في بعض الأماكن لفترة من الوقت بينما نعمل على تحديث الأصول مثل لقطات الشاشة، ومقاطع الفيديو، والرسوم التخطيطية.

تنطبق هذه المقالة على: ✔️ Basic/Standard ❌ Enterprise

تشرح هذه المقالة كيفية الوصول إلى خادم تكوين Spring Cloud وسجل خدمة Spring Cloud المدار بواسطة Azure Spring Apps باستخدام التحكم في الوصول المستند إلى الدور (RBAC) من Microsoft Entra.

إشعار

يتم توصيل التطبيقات التي يتم نشرها وتشغيلها داخل خدمة Azure Spring Apps تلقائيا بالمصادقة والتخويل على أساس الشهادة عند الوصول إلى Spring Cloud Config Server المدار وService Registry. لا تحتاج إلى متابعة هذه الإرشادات لهذه التطبيقات. تُدار الشهادات ذات الصلة بشكل كامل بواسطة النظام الأساسي لـAzure Spring Apps، ويتم إضافتها تلقائيا إلى التطبيق الخاص بك عند الاتصال بـConfig Server وService Registry.

تعيين دور لمستخدم/مجموعة Microsoft Entra أو MSI أو كيان الخدمة

تعيين الدور إلى [المستخدم | المجموعة | كيان الخدمة | الهوية المدارة] في نطاق [مجموعة مدارة | اشتراك | مجموعة موارد | مورد].

اسم الدور ‏‏الوصف
Azure Spring Apps Config Server Reader السماح بالوصول للقراءة فقط لخادم Azure Spring Apps Config Server.
Azure Spring Apps Config Server Reader السماح بالوصول للقراءة والكتابة والحذف لخادم Azure Spring Apps Config Server.
Azure Spring Apps Service Registry Reader السماح بالوصول للقراءة فقط لـAzure Spring Apps Service Registry.
Azure Spring Apps Service Registry Reader السماح بالوصول للقراءة والكتابة والحذف لـAzure Spring Apps Service Registry.

للحصول على خطوات تفصيلية، راجع تعيين أدوار Azure باستخدام مدخل Azure.

الوصول إلى Config Server وService Registry Endpoints

بعد تعيين الدور، يمكن للمعين له الوصول إلى Spring Cloud Config Server ونقاط نهاية Spring Cloud Service Registry باستخدام الإجراءات الآتية:

  1. احصل على الرمز المميز للوصول. بعد تعيين دور لمستخدم Microsoft Entra، يمكنه استخدام الأوامر التالية لتسجيل الدخول إلى Azure CLI باستخدام المستخدم أو كيان الخدمة أو الهوية المدارة للحصول على رمز مميز للوصول. للتفاصيل، راجع مصادقة Azure CLI.

    az login
    az account get-access-token
    
  2. شكل نقطة النهاية. ندعم نقاط النهاية الافتراضية لخادم Spring Cloud Config Server وSpring Cloud Service Registry الذي تديره Azure Spring Apps.

    • 'https://SERVICE_NAME.svc.azuremicroservices.io/eureka/{path}'
    • 'https://SERVICE_NAME.svc.azuremicroservices.io/config/{path}'

    إشعار

    إذا كنت تستخدم Microsoft Azure المشغل بواسطة 21Vianet، فاستبدل *.azuremicroservices.io ب *.microservices.azure.cn. لمزيد من المعلومات، راجع القسم التحقق من نقاط النهاية في Azure في Microsoft Azure المشغل بواسطة دليل مطور 21Vianet.

  3. قم بالوصول إلى نقطة النهاية المكونة باستخدام الرمز المميز للوصول. قم بوضع الرمز المميز للوصول في «عنوان» لتوفير التخويل: --header 'Authorization: Bearer {TOKEN_FROM_PREVIOUS_STEP}'.

    على سبيل المثال:

    أ. الوصول إلى نقطة نهاية مثل https://SERVICE_NAME.svc.azuremicroservices.io/config/actuator/health رؤية الحالة الصحية لخادم التكوين.

    ب. الوصول إلى نقطة نهاية مثل https://SERVICE_NAME.svc.azuremicroservices.io/eureka/eureka/apps رؤية التطبيقات المسجلة في Spring Cloud Service Registry (يوريكا هنا).

    إذا كانت الاستجابة هي 401 Unauthorized، فتحقق لمعرفة ما إذا تم تعيين الدور بنجاح. سيستغرق الأمر عدة دقائق لتفعيل الدور أو للتحقق من أن الرمز المميز للوصول لم تنته صلاحيته.

للمزيد من المعلومات حول نقطة نهاية المشغل، راجع نقاط النهاية الجاهزة للإنتاج.

بالنسبة لنقاط نهاية Eureka، راجع عمليات Eureka-REST

للحصول على نقاط نهاية خادم التكوين ومعلومات تفصيلية للمسار، راجع ResourceController.java و EncryptionController.java.

قم بتسجيل تطبيقات Spring Boot على Spring Cloud Config Server وService Registry المدار بواسطة Azure Spring Apps

بعد تعيين الدور، يمكنك تسجيل تطبيقات Spring Boot إلى خادم تكوين Spring Cloud وسجل الخدمة المدار بواسطة Azure Spring Apps باستخدام مصادقة الرمز المميز ل Microsoft Entra. يدعم كل من Config Server وService Registry قالب REST المخصص لإدخال الرمز المميز للمالك إلى المصادقة.

للمزيد من المعلومات، راجع العينات الوصول إلى Config Server المدارة من Azure Spring Apps والوصول إلى Service Registry المدارة من Azure Spring Apps. توضح الأقسام التالية بعض التفاصيل الهامة في هذه العينات.

In AccessTokenManager.java:

AccessTokenManager مسؤول عن الحصول على رمز مميز للوصول من معرف Microsoft Entra. قم بتكوين معلومات تسجيل الدخول الخاصة بكيان الخدمة في ملف application.properties وتهيئتها ApplicationTokenCredentials للحصول على الرمز المميز. بإمكانك العثور على هذا الملف في كلتا العينتين.

prop.load(in);
tokenClientId = prop.getProperty("access.token.clientId");
String tenantId = prop.getProperty("access.token.tenantId");
String secret = prop.getProperty("access.token.secret");
String clientId = prop.getProperty("access.token.clientId");
credentials = new ApplicationTokenCredentials(
    clientId, tenantId, secret, AzureEnvironment.AZURE);

In CustomConfigServiceBootstrapConfiguration.java:

CustomConfigServiceBootstrapConfiguration تنفيذ قالب REST المخصص لخادم التكوين وإدخال الرمز المميز من معرف Microsoft Entra كعناوين Authorization . يمكنك العثور على هذا الملف في عينة Config Server.

public class RequestResponseHandlerInterceptor implements ClientHttpRequestInterceptor {

    @Override
    public ClientHttpResponse intercept(HttpRequest request, byte[] body, ClientHttpRequestExecution execution) throws IOException {
        String accessToken = AccessTokenManager.getToken();
        request.getHeaders().remove(AUTHORIZATION);
        request.getHeaders().add(AUTHORIZATION, "Bearer " + accessToken);

        ClientHttpResponse response = execution.execute(request, body);
        return response;
    }

}

In CustomRestTemplateTransportClientFactories.java:

الفئتان السابقتان موجودتان لتنفيذ قالب REST المخصص لـSpring Cloud Service Registry. الجزء intercept هو نفسه كما هو الحال في Config Server أعلاه. تأكد من إضافة factory.mappingJacksonHttpMessageConverter() إلى محولات الرسالة. يمكنك إجاد هذا الملف في عينة Spring Cloud Service Registry .

private RestTemplate customRestTemplate() {
    /*
     * Inject your custom rest template
     */
    RestTemplate restTemplate = new RestTemplate();
    restTemplate.getInterceptors()
        .add(new RequestResponseHandlerInterceptor());
    RestTemplateTransportClientFactory factory = new RestTemplateTransportClientFactory();

    restTemplate.getMessageConverters().add(0, factory.mappingJacksonHttpMessageConverter());

    return restTemplate;
}

في حال كنت تقوم بتشغيل تطبيقات على مجموعة Kubernetes، نوصي باستخدام عنوان IP لتسجيل Spring Cloud Service Registry للوصول.

eureka.instance.prefer-ip-address=true

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