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

Poznámka:

Azure Spring Apps je nový název služby Azure Spring Cloud. Přestože má služba nový název, na některých místech uvidíte starý název, protože pracujeme na aktualizaci prostředků, jako jsou snímky obrazovky, videa a diagramy.

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řazení role k uživateli nebo skupině, MSI nebo instančnímu objektu Microsoft Entra

Přiřaďte roli k oboru [user | group | service-principal | managed-identity] v oboru [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.
Čtenář služby Azure Spring Apps Service Registry 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 ho .*.microservices.azure.cn Další informace najdete v části Kontrola koncových bodů v Azure v Microsoft Azure provozovaných vývojářskou příručkou společnosti 21Vianet.

  3. Získejte přístup ke složeného 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. Získejte přístup ke koncovému bodu, jako https://SERVICE_NAME.svc.azuremicroservices.io/config/actuator/health je stav konfiguračního serveru.

    b. Přejděte ke koncovému bodu, jako https://SERVICE_NAME.svc.azuremicroservices.io/eureka/eureka/apps je zobrazení registrovaných aplikací v registru služby Spring Cloud Service Registry (Eureka tady).

    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 pro Přístup ke spravovanému konfiguračnímu serveru Azure Spring Apps a k registru spravovaných 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 instančního objektu v souboru application.properties a inicializuje ApplicationTokenCredentials se pro získání tokenu. 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 pro přístup použít IP adresu.

eureka.instance.prefer-ip-address=true

Další kroky