Access Config Server och Service Registry

Kommentar

Azure Spring Apps är det nya namnet på Azure Spring Cloud-tjänsten. Även om tjänsten har ett nytt namn ser du det gamla namnet på vissa platser ett tag medan vi arbetar med att uppdatera tillgångar som skärmbilder, videor och diagram.

Den här artikeln gäller för: ✔️ Basic/Standard ❌ Enterprise

Den här artikeln beskriver hur du kommer åt Spring Cloud Config Server och Spring Cloud Service Registry som hanteras av Azure Spring Apps med hjälp av rollbaserad åtkomstkontroll i Microsoft Entra (RBAC).

Kommentar

Program som distribueras och körs i Azure Spring Apps-tjänsten kopplas automatiskt upp med certifikatbaserad autentisering och auktorisering vid åtkomst till den hanterade Spring Cloud Config Server och Service Registry. Du behöver inte följa den här vägledningen för dessa program. De relaterade certifikaten hanteras helt av Azure Spring Apps-plattformen och matas automatiskt in i ditt program när de är anslutna till Config Server och Service Registry.

Tilldela rollen till Microsoft Entra-användare/grupp, MSI eller tjänstens huvudnamn

Tilldela rollen till [användare | grupp | tjänsthuvudnamn | hanterad identitet] i [hanteringsgrupp | prenumeration | resursgrupp | resurs] omfång.

Rollnamn beskrivning
Azure Spring Apps-konfigurationsserverläsare Tillåt läsåtkomst till Azure Spring Apps Config Server.
Azure Spring Apps-konfigurationsserverdeltagare Tillåt läs-, skriv- och borttagningsåtkomst till Azure Spring Apps Config Server.
Registerläsare för Azure Spring Apps-tjänsten Tillåt läsåtkomst till Azure Spring Apps Service Registry.
Azure Spring Apps Service Registry-deltagare Tillåt läs-, skriv- och borttagningsåtkomst till Azure Spring Apps Service Registry.

Läs mer om att tilldela roller i Tilldela Azure-roller via Azure Portal.

Åtkomstkonfigurationsserver och tjänstregisterslutpunkter

När rollen har tilldelats kan den tilldelade personen komma åt Spring Cloud Config Server och Spring Cloud Service Registry-slutpunkterna med hjälp av följande procedurer:

  1. Hämta en åtkomsttoken. När en Microsoft Entra-användare har tilldelats rollen kan de använda följande kommandon för att logga in på Azure CLI med användaren, tjänstens huvudnamn eller hanterade identitet för att hämta en åtkomsttoken. Mer information finns i Autentisera Azure CLI.

    az login
    az account get-access-token
    
  2. Skriv slutpunkten. Vi stöder standardslutpunkterna för Spring Cloud Config Server och Spring Cloud Service Registry som hanteras av Azure Spring Apps.

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

    Kommentar

    Om du använder Microsoft Azure som drivs av 21Vianet ersätter *.azuremicroservices.io du med *.microservices.azure.cn. Mer information finns i avsnittet Kontrollera slutpunkter i Azure i utvecklarhandboken för Microsoft Azure som drivs av 21Vianet.

  3. Få åtkomst till den sammansatta slutpunkten med åtkomsttoken. Placera åtkomsttoken i en rubrik för att ge auktorisering: --header 'Authorization: Bearer {TOKEN_FROM_PREVIOUS_STEP}'.

    Till exempel:

    a. Få åtkomst till en slutpunkt som https://SERVICE_NAME.svc.azuremicroservices.io/config/actuator/health om du vill se hälsostatusen för konfigurationsservern.

    b. Få åtkomst till en slutpunkt som https://SERVICE_NAME.svc.azuremicroservices.io/eureka/eureka/apps om du vill se registrerade appar i Spring Cloud Service Registry (Eureka här).

    Om svaret är 401 Unauthorizedkontrollerar du om rollen har tilldelats. Det tar flera minuter innan rollen börjar gälla eller för att verifiera att åtkomsttoken inte har upphört att gälla.

Mer information om aktuatorslutpunkten finns i Produktionsklara slutpunkter.

För Eureka-slutpunkter, se Eureka-REST-operations

Information om konfigurationsserverslutpunkter och detaljerad sökväg finns i ResourceController.java och EncryptionController.java.

Registrera Spring Boot-appar till Spring Cloud Config Server och Service Registry som hanteras av Azure Spring Apps

När rollen har tilldelats kan du registrera Spring Boot-appar till Spring Cloud Config Server och Service Registry som hanteras av Azure Spring Apps med Microsoft Entra-tokenautentisering. Både Config Server och Service Registry stöder anpassad REST-mall för att mata in ägartoken för autentisering.

Mer information finns i exemplen Access Azure Spring Apps managed Config Server and Access Azure Spring Apps managed Service Registry. I följande avsnitt beskrivs några viktiga detaljer i de här exemplen.

I AccessTokenManager.java:

AccessTokenManager ansvarar för att hämta en åtkomsttoken från Microsoft Entra-ID. Konfigurera inloggningsinformationen för tjänstens huvudnamn i filen application.properties och initiera ApplicationTokenCredentials för att hämta token. Du hittar den här filen i båda exemplen.

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

I CustomConfigServiceBootstrapConfiguration.java:

CustomConfigServiceBootstrapConfiguration implementerar den anpassade REST-mallen för Config Server och matar in token från Microsoft Entra ID som Authorization rubriker. Du hittar den här filen i Config Server-exemplet.

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

}

I CustomRestTemplateTransportClientFactories.java:

De föregående två klasserna är till för implementeringen av den anpassade REST-mallen för Spring Cloud Service Registry. Delen intercept är densamma som i konfigurationsservern ovan. Se till att lägga factory.mappingJacksonHttpMessageConverter() till i meddelandekonverterarna. Du hittar den här filen i Spring Cloud Service Registry-exemplet.

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

Om du kör program i ett Kubernetes-kluster rekommenderar vi att du använder en IP-adress för att registrera Spring Cloud Service Registry för åtkomst.

eureka.instance.prefer-ip-address=true

Nästa steg