Accedere a Config Server e al registro del servizio
Nota
I piani Basic, Standard ed Enterprise saranno deprecati a partire dalla metà di marzo 2025, con un periodo di ritiro di 3 anni. È consigliabile eseguire la transizione ad App Azure Container. Per altre informazioni, vedere l'annuncio di ritiro di Azure Spring Apps.
Il piano Standard a consumo e dedicato sarà deprecato a partire dal 30 settembre 2024, con un arresto completo dopo sei mesi. È consigliabile eseguire la transizione ad App Azure Container. Per altre informazioni, vedere Eseguire la migrazione del consumo di Azure Spring Apps Standard e del piano dedicato alle app Azure Container.
Questo articolo si applica a: ✔️ Basic/Standard ❌ Enterprise
Questo articolo illustra come accedere al server di configurazione Spring Cloud e al Registro di sistema dei servizi Spring Cloud gestiti da Azure Spring Apps usando il controllo degli accessi in base al ruolo di Microsoft Entra.
Nota
Le applicazioni distribuite e in esecuzione all'interno del servizio Azure Spring Apps vengono collegate automaticamente con l'autenticazione basata su certificati e l'autorizzazione durante l'accesso al server di configurazione e al Registro di sistema di Spring Cloud gestiti. Non è necessario seguire queste indicazioni per queste applicazioni. I certificati correlati sono completamente gestiti dalla piattaforma Azure Spring Apps e vengono inseriti automaticamente nell'applicazione quando si è connessi al server di configurazione e al Registro di sistema del servizio.
Assegnare il ruolo all'utente/gruppo, all'identità del servizio gestito o all'entità servizio Microsoft Entra
Assegnare il ruolo all'ambito [user | group | service-principal | managed-identity] all'ambito [management-group | subscription | resource-group | resource].
Nome ruolo | Descrizione |
---|---|
Lettore del server di configurazione di Azure Spring Apps | Consentire l'accesso in lettura al server di configurazione di Azure Spring Apps. |
Collaboratore del server di configurazione di Azure Spring Apps | Consentire l'accesso in lettura, scrittura ed eliminazione al server di configurazione di Azure Spring Apps. |
Lettore del Registro di sistema del servizio Azure Spring Apps | Consentire l'accesso in lettura al Registro di sistema del servizio Azure Spring Apps. |
Collaboratore del Registro di sistema di Azure Spring Apps | Consentire l'accesso in lettura, scrittura ed eliminazione al Registro di sistema del servizio Azure Spring Apps. |
Per la procedura dettagliata, vedere Assegnare ruoli di Azure usando il portale di Azure.
Accedere agli endpoint del server di configurazione e del Registro di sistema dei servizi
Dopo l'assegnazione del ruolo, l'assegnatario può accedere al server di configurazione Spring Cloud e agli endpoint del Registro di sistema del servizio Spring Cloud usando le procedure seguenti:
Ottenere un token di accesso. Dopo aver assegnato il ruolo a un utente di Microsoft Entra, possono usare i comandi seguenti per accedere all'interfaccia della riga di comando di Azure con l'utente, l'entità servizio o l'identità gestita per ottenere un token di accesso. Per informazioni dettagliate, vedere Autenticare l'interfaccia della riga di comando di Azure.
az login az account get-access-token
Comporre l'endpoint. Sono supportati gli endpoint predefiniti del server di configurazione Spring Cloud e del Registro di sistema spring cloud gestiti da Azure Spring Apps.
- 'https://SERVICE_NAME.svc.azuremicroservices.io/eureka/{path}'
- 'https://SERVICE_NAME.svc.azuremicroservices.io/config/{path}'
Nota
Se si usa Microsoft Azure gestito da 21Vianet, sostituire
*.azuremicroservices.io
con*.microservices.azure.cn
. Per altre informazioni, vedere la sezione Controllare gli endpoint in Azure nella Guida per sviluppatori di Microsoft Azure gestita da 21Vianet.Accedere all'endpoint composto con il token di accesso. Inserire il token di accesso in un'intestazione per fornire l'autorizzazione:
--header 'Authorization: Bearer {TOKEN_FROM_PREVIOUS_STEP}'
.Ad esempio:
a. Accedere a un endpoint come
https://SERVICE_NAME.svc.azuremicroservices.io/config/actuator/health
visualizzare lo stato di integrità del server di configurazione.b. Accedere a un endpoint come
https://SERVICE_NAME.svc.azuremicroservices.io/eureka/eureka/apps
visualizzare le app registrate in Spring Cloud Service Registry (Eureka qui).Se la risposta è
401 Unauthorized
, verificare se il ruolo è stato assegnato correttamente. L'applicazione del ruolo richiederà alcuni minuti o per verificare che il token di accesso non sia scaduto.
Per altre informazioni sull'endpoint dell'attuatore, vedere Endpoint pronti per la produzione.
Per gli endpoint Eureka, vedere Eureka-REST-operations
Per informazioni dettagliate e sugli endpoint server di configurazione, vedere ResourceController.java e EncryptionController.java.
Registrare le app Spring Boot nel server di configurazione Spring Cloud e nel Registro di sistema dei servizi gestiti da Azure Spring Apps
Dopo aver assegnato il ruolo, è possibile registrare le app Spring Boot nel server di configurazione Spring Cloud e nel Registro di sistema gestito da Azure Spring Apps con l'autenticazione del token Microsoft Entra. Sia il server di configurazione che il Registro di sistema del servizio supportano un modello REST personalizzato per inserire il token di connessione per l'autenticazione.
Per altre informazioni, vedere gli esempi Access Azure Spring Apps managed Config Server and Access Azure Spring Apps managed Service Registry .For more information, see the samples Access Azure Spring Apps managed Config Server and Access Azure Spring Apps managed Service Registry. Le sezioni seguenti illustrano alcuni dettagli importanti in questi esempi.
In AccessTokenManager.java:
AccessTokenManager
è responsabile del recupero di un token di accesso da Microsoft Entra ID. Configurare le informazioni di accesso dell'entità servizio nel file application.properties e inizializzare ApplicationTokenCredentials
per ottenere il token. È possibile trovare questo file in entrambi gli esempi.
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
implementa il modello REST personalizzato per il server di configurazione e inserisce il token da Microsoft Entra ID come Authorization
intestazioni. Questo file è disponibile nell'esempio del server di configurazione.
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:
Le due classi precedenti sono per l'implementazione del modello REST personalizzato per Spring Cloud Service Registry. La intercept
parte è uguale a quella del server di configurazione precedente. Assicurarsi di aggiungere factory.mappingJacksonHttpMessageConverter()
ai convertitori di messaggi. È possibile trovare questo file nell'esempio di Registro di sistema dei servizi 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;
}
Se si eseguono applicazioni in un cluster Kubernetes, è consigliabile usare un indirizzo IP per registrare Spring Cloud Service Registry per l'accesso.
eureka.instance.prefer-ip-address=true