Freigeben über


Zugreifen auf den Konfigurationsserver und die Dienstregistrierung

Hinweis

Die Pläne Basic, Standard und Enterprise gelten ab Mitte März 2025 als veraltet und werden über einen Zeitraum von drei Jahren eingestellt. Es wird empfohlen, auf Azure Container Apps umzustellen. Weitere Informationen finden Sie in der Ankündigung zur Einstellung von Azure Spring Apps.

Der Plan Standardverbrauch und dediziert gilt ab dem 30. September 2024 als veraltet und wird nach sechs Monaten vollständig eingestellt. Es wird empfohlen, auf Azure Container Apps umzustellen. Weitere Informationen finden Sie unter Migrieren vom Plan „Standardverbrauch und dediziert“ von Azure Spring Apps zu Azure Container Apps.

Dieser Artikel gilt für: ✔️ Basic/Standard ❌ Enterprise

In diesem Artikel erfahren Sie, wie Sie mithilfe der rollenbasierten Zugriffssteuerung (Role-Based Access Control, RBAC) von Microsoft Entra auf Spring Cloud Config Server und Spring Cloud Service Registry zugreifen, die von Azure Spring Apps verwaltet werden.

Hinweis

Anwendungen, die im Azure Spring Apps-Dienst bereitgestellt und ausgeführt werden, werden automatisch mit der zertifikatbasierten Authentifizierung und Autorisierung vernetzt, wenn sie auf den verwalteten Spring Cloud-Konfigurationsserver (Config Server) und die -Dienstregistrierung zugreifen. Sie müssen diese Anleitung für diese Anwendungen nicht befolgen. Die zugehörigen Zertifikate werden vollständig von der Azure Spring Apps-Plattform verwaltet und automatisch in Ihre Anwendung eingefügt, wenn eine Verbindung mit Config Server und der Dienstregistrierung besteht.

Zuweisen einer Rolle zu einem Microsoft Entra-Benutzer, zu einer Microsoft Entra-Gruppe, zu einer MSI oder zu einem Dienstprinzipal

Weisen Sie die Rolle dem/r [user | group | service-principal | managed-identity] mit dem Umfang [management-group | subscription | resource-group | resource] zu.

Rollenname Beschreibung
Azure Spring Apps Config Server-Leser Gewährt Lesezugriff auf den Azure Spring Apps Config Server.
Azure Spring Apps Config Server-Mitwirkender Gewährt Lese-, Schreib- und Löschzugriff auf den Azure Spring Apps Config Server.
Azure Spring Apps Service Registry-Leser Gewährt Lesezugriff auf die Azure Spring Apps Service Registry.
Azure Spring Apps Service Registry-Mitwirkender Gewährt Lese-, Schreib- und Löschzugriff auf die Azure Spring Apps Service Registry.

Ausführliche Informationen finden Sie unter Zuweisen von Azure-Rollen über das Azure-Portal.

Zugreifen auf Config Server- und Service Registry-Endpunkte

Nach dem Zuweisen der Rolle kann deren Empfänger auf die Spring Cloud Config Server- und Spring Cloud Service Registry-Endpunkte mithilfe des folgenden Verfahrens zugreifen:

  1. Rufe ein Zugriffstoken ab. Nachdem einem Microsoft Entra-Benutzer die Rolle zugewiesen wurde, kann er sich mithilfe der folgenden Befehle bei der Azure CLI mit Benutzeranmeldeinformationen, einem Dienstprinzipal oder einer verwalteten Identität anmelden, um ein Zugriffstoken zu erhalten. Ausführliche Informationen finden Sie unter Anmelden mit der Azure CLI.

    az login
    az account get-access-token
    
  2. Erstellen Sie den Endpunkt. Wir unterstützen die Standardendpunkte von Spring Cloud Config Server und Spring Cloud Service Registry, die von Azure Spring Apps verwaltet werden.

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

    Hinweis

    Wenn Ihre Microsoft Azure-Instanz von 21Vianet betrieben wird, ersetzen Sie *.azuremicroservices.io durch *.microservices.azure.cn. Weitere Informationen finden Sie im Abschnitt Überprüfen von Endpunkten in Azure im Entwicklerhandbuch zu Microsoft Azure, betrieben von 21Vianet.

  3. Greifen Sie mit dem Zugriffstoken auf den erstellten Endpunkt zu. Fügen Sie das Zugriffstoken in einen Header ein, um die Autorisierung zu ermöglichen: --header 'Authorization: Bearer {TOKEN_FROM_PREVIOUS_STEP}'.

    Zum Beispiel:

    a. Greifen Sie auf einen Endpunkt wie https://SERVICE_NAME.svc.azuremicroservices.io/config/actuator/health zu, um den Integritätsstatus von Config Server anzuzeigen.

    b. Greifen Sie auf einen Endpunkt wie https://SERVICE_NAME.svc.azuremicroservices.io/eureka/eureka/apps zu, um die registrierten Apps in Spring Cloud Service Registry (in diesem Fall Eureka) anzuzeigen.

    Wenn die Antwort 401 Unauthorized lautet, überprüfen Sie, ob die Rolle erfolgreich zugewiesen wurde. Es dauert einige Minuten, bis die Rolle wirksam wird. Sie können auch überprüfen, ob das Zugriffstoken abgelaufen ist.

Weitere Informationen zum Aktuatorendpunkt finden Sie unter Produktionsbereite Endpunkte.

Informationen zu Eureka-Endpunkten finden Sie unter Eureka-REST-Vorgänge.

Informationen zu Konfigurationsserverendpunkten und ausführlichen Pfadinformationen finden Sie unter ResourceController.java und EncryptionController.java.

Registrieren von Spring Boot-Apps bei Spring Cloud Config Server und der Service Registry, die von Azure Spring Apps verwaltet werden

Nachdem die Rolle zugewiesen wurde, können Sie Spring Boot-Apps bei Spring Cloud Config Server und Service Registry registrieren, die von Azure Spring Apps mit Microsoft Entra-Tokenauthentifizierung verwaltet werden. Sowohl Config Server als auch die Service Registry unterstützen benutzerdefinierte REST-Vorlagen zum Einfügen des Bearertokens für die Authentifizierung.

Weitere Informationen finden Sie in den Beispielen Zugreifen auf den von Azure Spring Apps verwalteten Config Server und Zugreifen auf die von Azure Spring Apps verwaltete Service Registry. In den folgenden Abschnitten werden einige wichtige Details in diesen Beispielen erläutert.

In AccessTokenManager.java:

AccessTokenManager ist für das Abrufen eines Zugriffstokens aus Microsoft Entra ID verantwortlich. Konfigurieren Sie die Anmeldeinformationen des Dienstprinzipals in der Datei application.properties, und initialisieren Sie ApplicationTokenCredentials, um das Token abzurufen. Sie finden diese Datei in beiden Beispielen.

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 implementiert die benutzerdefinierte REST-Vorlage für Config Server und fügt das Token aus Microsoft Entra ID als Authorization-Header ein. Sie finden diese Datei im Config Server-Beispiel.

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:

Die vorherigen beiden Klassen dienen zur Implementierung der benutzerdefinierten REST-Vorlage für Spring Cloud Service Registry. Der intercept-Teil ist mit dem in Config Server weiter oben identisch. Achten Sie darauf, den Nachrichtenkonvertern factory.mappingJacksonHttpMessageConverter() hinzuzufügen. Sie finden diese Datei im Spring Cloud Service Registry-Beispiel.

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

Wenn Sie Anwendungen in einem Kubernetes-Cluster ausführen, wird empfohlen, eine IP-Adresse zu verwenden, um Spring Cloud Service Registry für den Zugriff zu registrieren.

eureka.instance.prefer-ip-address=true

Nächste Schritte