Access Config Server and Service Registry

Notitie

Azure Spring Apps is de nieuwe naam voor de Azure Spring Cloud-service. Hoewel de service een nieuwe naam heeft, ziet u de oude naam op sommige plaatsen terwijl we werken aan het bijwerken van assets, zoals schermopnamen, video's en diagrammen.

Dit artikel is van toepassing op: ✔️ Basic/Standard ❌ Enterprise

In dit artikel wordt uitgelegd hoe u toegang hebt tot de Spring Cloud-configuratieserver en het Spring Cloud-serviceregister dat wordt beheerd door Azure Spring Apps met behulp van op rollen gebaseerd toegangsbeheer (RBAC) van Microsoft Entra.

Notitie

Toepassingen die worden geïmplementeerd en uitgevoerd in de Azure Spring Apps-service, worden automatisch bekabeld met verificatie en autorisatie op basis van certificaten bij toegang tot de beheerde Spring Cloud-configuratieserver en -serviceregister. U hoeft deze richtlijnen voor deze toepassingen niet te volgen. De gerelateerde certificaten worden volledig beheerd door het Azure Spring Apps-platform en worden automatisch geïnjecteerd in uw toepassing wanneer deze is verbonden met Config Server en Service Registry.

Rol toewijzen aan Microsoft Entra-gebruiker/-groep, MSI of service-principal

Wijs de rol toe aan de [gebruiker | groep | service-principal | managed-identity] op [beheergroep | abonnement | resourcegroep | resource] bereik.

Rolnaam Beschrijving
Azure Spring Apps Config Server Reader Leestoegang tot Azure Spring Apps-configuratieserver toestaan.
Inzender voor Configuratieserver van Azure Spring Apps Lees-, schrijf- en verwijdertoegang tot Azure Spring Apps Config Server toestaan.
Azure Spring Apps Service Registry Reader Leestoegang tot Azure Spring Apps Service Registry toestaan.
Inzender voor Azure Spring Apps-serviceregister Lees-, schrijf- en verwijdertoegang tot Azure Spring Apps Service Registry toestaan.

Raadpleeg Azure-rollen toewijzen met Azure Portal voor informatie over het toewijzen van rollen.

Server- en serviceregistereindpunten voor Access

Nadat de rol is toegewezen, heeft de toegewezen gebruiker toegang tot de Spring Cloud-configuratieserver en de Eindpunten van het Spring Cloud-serviceregister met behulp van de volgende procedures:

  1. Een toegangstoken ophalen. Nadat een Microsoft Entra-gebruiker de rol heeft toegewezen, kunnen ze de volgende opdrachten gebruiken om zich aan te melden bij Azure CLI met een gebruiker, service-principal of beheerde identiteit om een toegangstoken op te halen. Zie Azure CLI verifiëren voor meer informatie.

    az login
    az account get-access-token
    
  2. Het eindpunt opstellen. We ondersteunen de standaardeindpunten van de Spring Cloud-configuratieserver en het Spring Cloud-serviceregister dat wordt beheerd door Azure Spring Apps.

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

    Notitie

    Als u Microsoft Azure gebruikt dat wordt beheerd door 21Vianet, vervangt u door *.azuremicroservices.io*.microservices.azure.cn. Zie de sectie Eindpunten controleren in Azure in de ontwikkelaarshandleiding van Microsoft Azure beheerd door 21Vianet voor meer informatie.

  3. Open het samengestelde eindpunt met het toegangstoken. Plaats het toegangstoken in een header om autorisatie te bieden: --header 'Authorization: Bearer {TOKEN_FROM_PREVIOUS_STEP}'.

    Voorbeeld:

    a. Open een eindpunt zoals https://SERVICE_NAME.svc.azuremicroservices.io/config/actuator/health de status van de configuratieserver.

    b. Open een eindpunt zoals https://SERVICE_NAME.svc.azuremicroservices.io/eureka/eureka/apps de geregistreerde apps in Spring Cloud Service Registry (Eureka hier).

    Als het antwoord is 401 Unauthorized, controleert u of de rol is toegewezen. Het duurt enkele minuten voordat de rol van kracht wordt of om te controleren of het toegangstoken niet is verlopen.

Zie Eindpunten die gereed zijn voor productie voor meer informatie over het eindpunt van de aandrijving.

Zie Eureka-REST-bewerkingen voor Eureka-eindpunten

Zie ResourceController.java en EncryptionController.java voor configuratieservereindpunten en gedetailleerde padinformatie.

Spring Boot-apps registreren bij Spring Cloud Config Server en Service Registry die worden beheerd door Azure Spring Apps

Nadat de rol is toegewezen, kunt u Spring Boot-apps registreren bij Spring Cloud Config Server en Service Registry die worden beheerd door Azure Spring Apps met Microsoft Entra-tokenverificatie. Zowel Config Server als Service Registry ondersteunen aangepaste REST-sjabloon om het bearer-token voor verificatie in te injecteren.

Zie voor meer informatie de voorbeelden access azure Spring Apps managed Config Server and Access Azure Spring Apps managed Service Registry. In de volgende secties worden enkele belangrijke details in deze voorbeelden uitgelegd.

In AccessTokenManager.java:

AccessTokenManager is verantwoordelijk voor het ophalen van een toegangstoken van Microsoft Entra ID. Configureer de aanmeldingsgegevens van de service-principal in het bestand application.properties en initialiseer ApplicationTokenCredentials om het token op te halen. U vindt dit bestand in beide voorbeelden.

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 implementeert de aangepaste REST-sjabloon voor de configuratieserver en injecteert het token van Microsoft Entra ID als Authorization headers. U vindt dit bestand in het voorbeeld van de configuratieserver.

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:

De vorige twee klassen zijn bedoeld voor de implementatie van de aangepaste REST-sjabloon voor Spring Cloud Service Registry. Het intercept onderdeel is hetzelfde als in de bovenstaande configuratieserver. Zorg ervoor dat u toevoegt factory.mappingJacksonHttpMessageConverter() aan de berichtconversieprogramma's. U vindt dit bestand in het Spring Cloud Service Registry-voorbeeld.

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

Als u toepassingen uitvoert op een Kubernetes-cluster, raden we u aan een IP-adres te gebruiken om Spring Cloud Service Registry te registreren voor toegang.

eureka.instance.prefer-ip-address=true

Volgende stappen