Přístup ke konfiguračnímu serveru a registru služeb

Poznámka:

Plány Basic, Standarda Enterprise vstoupily do důchodového období 17. března 2025. Další informace najdete v oznámení o vyřazení Azure Spring Apps.

Tento článek se vztahuje na:✅ Basic/Standard ❎ Enterprise

Tento článek vysvětluje, jak získat přístup k Spring Cloud Config Serveru a registru služby Spring Cloud spravovanému službou Azure Spring Apps pomocí řízení přístupu na základě role (RBAC) microsoftu Entra.

Poznámka:

Aplikace nasazené a spuštěné ve službě Azure Spring Apps se automaticky připojí k ověřování a autorizaci na základě certifikátů při přístupu ke spravovanému serveru Spring Cloud Config Server a registru služeb. Pro tyto aplikace nemusíte postupovat podle těchto pokynů. Související certifikáty jsou plně spravované platformou Azure Spring Apps a automaticky se vloží do aplikace při připojení ke konfiguračnímu serveru a registru služeb.

Přiřadit roli uživateli, skupině, MSI nebo aplikačnímu objektu Microsoft Entra

Přiřaďte roli [uživateli | skupině | service-principal | managed-identity] na úrovni [management-group | subscription | resource-group | resource].

Název role Popis
Čtenář konfiguračního serveru Azure Spring Apps Povolit přístup pro čtení ke konfiguračnímu serveru Azure Spring Apps
Přispěvatel konfiguračního serveru Azure Spring Apps Povolte přístup ke čtení, zápisu a odstranění konfiguračního serveru Azure Spring Apps.
Čtečka registru služeb Azure Spring Apps Povolit přístup pro čtení ke službě Azure Spring Apps Service Registry.
Přispěvatel registru služby Azure Spring Apps Povolte přístup ke službě Azure Spring Apps Service Registry pro čtení, zápis a odstranění.

Podrobný postup najdete v tématu Přiřazování rolí Azure s využitím webu Azure Portal.

Přístup ke koncovým bodům konfiguračního serveru a registru služeb

Po přiřazení role může přiřazený získat přístup k serveru Spring Cloud Config Server a koncovým bodům registru služby Spring Cloud pomocí následujících postupů:

  1. Získejte přístupový token. Jakmile má uživatel Microsoft Entra přiřazenou roli, může se pomocí následujících příkazů přihlásit k Azure CLI pomocí uživatele, instančního objektu nebo spravované identity a získat přístupový token. Podrobnosti najdete v tématu Ověřování Azure CLI.

    az login
    az account get-access-token
    
  2. Vytvořte koncový bod. Podporujeme výchozí koncové body Spring Cloud Config Serveru a registru služby Spring Cloud spravovaného službou Azure Spring Apps.

    • https://SERVICE_NAME.svc.azuremicroservices.io/eureka/<path>
    • https://SERVICE_NAME.svc.azuremicroservices.io/config/<path>

    Poznámka:

    Pokud používáte Microsoft Azure provozovaný společností 21Vianet, nahraďte *.azuremicroservices.io s *.microservices.azure.cn. Další informace najdete v části Kontrola koncových bodů v Azure ve vývojářské příručce Microsoft Azure provozované společností 21Vianet.

  3. Získejte přístup ke složenému koncovému bodu pomocí přístupového tokenu. Vložte přístupový token do hlavičky, která poskytuje autorizaci: --header 'Authorization: Bearer {TOKEN_FROM_PREVIOUS_STEP}'.

    Příklad:

    a. Přistupte k takovému koncovému bodu, jako je https://SERVICE_NAME.svc.azuremicroservices.io/config/actuator/health, abyste zjistili stav konfiguračního serveru.

    b. Přejděte ke koncovému bodu https://SERVICE_NAME.svc.azuremicroservices.io/eureka/eureka/apps, abyste viděli zaregistrované aplikace v registru služeb Spring Cloud Service Registry (Eureka zde).

    Pokud je 401 Unauthorizedodpověď, zkontrolujte, jestli je role úspěšně přiřazená. Než se role projeví nebo ověří, že platnost přístupového tokenu nevypršela, bude trvat několik minut.

Další informace o koncovém bodu poháněcího zařízení najdete v tématu Koncové body připravené pro produkční prostředí.

Koncové body Eureka najdete v tématu Eureka-REST-operations.

Informace o koncových bodech konfiguračního serveru a podrobné informace o cestě najdete v tématu ResourceController.java a EncryptionController.java.

Registrace aplikací Spring Boot do Spring Cloud Config Serveru a registru služeb spravovaného službou Azure Spring Apps

Po přiřazení role můžete zaregistrovat aplikace Spring Boot do Spring Cloud Config Serveru a registru služeb spravovaného službou Azure Spring Apps s ověřováním tokenu Microsoft Entra. Konfigurační server i registr služby podporují vlastní šablonu REST, která vloží nosný token pro ověřování.

Další informace najdete v ukázkách Přístup ke spravovanému konfiguračnímu serveru Azure Spring Apps a Přístup k spravovanému registru služeb Azure Spring Apps. Následující části popisují některé důležité podrobnosti v těchto ukázkách.

V AccessTokenManager.java:

AccessTokenManager zodpovídá za získání přístupového tokenu z Microsoft Entra ID. Nakonfigurujte přihlašovací informace hlavního objektu služby v souboru application.properties a inicializujte ApplicationTokenCredentials, abyste získali token. Tento soubor najdete v obou ukázkách.

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

V CustomConfigServiceBootstrapConfiguration.java:

CustomConfigServiceBootstrapConfiguration implementuje vlastní šablonu REST pro konfigurační server a vloží token z Microsoft Entra ID jako Authorization hlavičky. Tento soubor najdete v ukázce konfiguračního serveru.

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

}

V CustomRestTemplateTransportClientFactories.java:

Předchozí dvě třídy jsou určené pro implementaci vlastní šablony REST pro Spring Cloud Service Registry. Část intercept je stejná jako na konfiguračním serveru výše. Nezapomeňte přidat factory.mappingJacksonHttpMessageConverter() do převaděčů zpráv. Tento soubor najdete v ukázce registru služby Spring Cloud.

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

Pokud používáte aplikace v clusteru Kubernetes, doporučujeme, abyste pro registraci v Spring Cloud Service Registry použili IP adresu pro přístup.

eureka.instance.prefer-ip-address=true

Další kroky