Accéder à Config Server et Service Registry
Remarque
Les plans Essentiel, Standard et Entreprise seront déconseillés à compter de la mi-mars 2025, avec une période de mise hors service de 3 ans. Nous vous recommandons de passer à Azure Container Apps. Pour plus d’informations, consultez l’annonce de mise hors service d’Azure Spring Apps.
Le plan de consommation standard et dédiée sera déconseillé à compter du 30 septembre 2024, avec un arrêt complet après six mois. Nous vous recommandons de passer à Azure Container Apps. Pour plus d’informations, consultez Migrer le plan de consommation standard et dédiée Azure Spring Apps vers Azure Container Apps.
Cet article s’applique à : ✔️ De base/Standard ❌ Entreprise
Cet article explique comment accéder aux services Spring Cloud Config Server et Spring Cloud Service Registry managés par Azure Spring Apps à l’aide de la fonctionnalité RBAC (contrôle d’accès en fonction du rôle) de Microsoft Entra.
Remarque
Les applications déployées et exécutées dans le service Azure Spring Apps sont automatiquement associées à l’authentification et à l’autorisation basées sur les certificats lors de l’accès au serveur de configuration du Spring Cloud géré et à Config Server. Vous n’avez pas besoin de suivre ces conseils pour ces applications. Les certificats associés sont entièrement gérés par la plateforme Azure Spring Apps et sont automatiquement injectés dans votre application lorsque vous êtes connecté à Config Server et au registre de service.
Attribuer un rôle à l’utilisateur/au groupe Microsoft Entra, à MSI ou au principal du service
Attribuer le rôle à l'utilisateur [user | group | service-principal | managed-identity] à la portée [management-group | subscription | resource-group | resource].
Nom de rôle | Description |
---|---|
Lecteur Azure Spring Apps Config Server | Autoriser l'accès en lecture à Azure Spring Apps Config Server. |
Contributeur Azure Spring Apps Config Server | Autoriser l'accès en lecture, écriture et suppression à Azure Spring Apps Config Server. |
Lecteur Azure Spring Apps Service Registry | Autoriser l'accès en lecture à Azure Spring Apps Service Registry. |
Contributeur Azure Spring Apps Service Registry | Autoriser l'accès en lecture, écriture et suppression à Azure Spring Apps Service Registry. |
Pour connaître les étapes détaillées, consultez Attribuer des rôles Azure à l’aide du portail Azure.
Accéder aux points de terminaison de Config Server et Service Registry
Après l'attribution du rôle, le bénéficiaire peut accéder au Spring Cloud Config Server et aux points d'extrémité du Spring Cloud Service Registry à l'aide des procédures suivantes :
Obtenez un jeton d’accès. Une fois qu'un utilisateur de Microsoft Entra s'est vu attribuer le rôle, il peut utiliser les commandes suivantes pour se connecter à Azure CLI avec un utilisateur, un principal de service ou une identité gérée pour obtenir un jeton d'accès. Pour plus d’informations, consultez Authentifier Azure CLI.
az login az account get-access-token
Composez le point de terminaison. Nous prenons en charge les points de terminaison par défaut des services Spring Cloud Config Server et Spring Cloud Service Registry managés par Azure Spring Apps.
- 'https://SERVICE_NAME.svc.azuremicroservices.io/eureka/{path}'
- 'https://SERVICE_NAME.svc.azuremicroservices.io/config/{path}'
Remarque
Si vous utilisez Microsoft Azure opéré par 21Vianet, remplacez
*.azuremicroservices.io
par*.microservices.azure.cn
. Pour plus d’informations, consultez la section Vérifier les points de terminaison dans Azure dans le guide du développeur Microsoft Azure géré par 21Vianet.Accédez au point de terminaison composé avec le jeton d’accès. Placez le jeton d’accès dans un en-tête pour fournir l’autorisation :
--header 'Authorization: Bearer {TOKEN_FROM_PREVIOUS_STEP}'
.Par exemple :
a. Accédez à un point de terminaison comme
https://SERVICE_NAME.svc.azuremicroservices.io/config/actuator/health
pour voir l'état d’intégrité de Config Server.b. Accédez à un endpoint comme
https://SERVICE_NAME.svc.azuremicroservices.io/eureka/eureka/apps
pour voir les applications enregistrées dans le Spring Cloud Service Registry (Eureka ici).Si la réponse est
401 Unauthorized
, vérifiez si le rôle a bien été attribué. Il faudra plusieurs minutes pour que le rôle prenne effet ou pour vérifier que le jeton d'accès n'a pas expiré.
Pour plus d'informations sur le point de terminaison de l'actionneur, voir Points de terminaison prêts pour la production.
Pour les points de terminaison Eureka, voir Eureka-REST-operations
Pour les points de terminaison du serveur de configuration et les informations détaillées sur le chemin d'accès, voir ResourceController.java et EncryptionController.java .
Enregistrez les applications Spring Boot sur le serveur de configuration Spring Cloud et le registre de services gérés par Azure Spring Apps
Une fois le rôle attribué, vous pouvez enregistrer les applications Spring Boot sur Spring Cloud Config Server et Service Registry gérés par Azure Spring Apps avec l'authentification par jeton Microsoft Entra. Le serveur de configuration et le registre des services prennent en charge le modèle REST personnalisé pour injecter le jeton de porteur pour l'authentification.
Pour plus d'informations, consultez les échantillons Access Azure Spring Apps managed Config Server et Access Azure Spring Apps managed Service Registry. Les sections suivantes expliquent certains détails importants de ces échantillons.
In AccessTokenManager.java:
AccessTokenManager
est responsable de l’obtention d’un jeton d’accès à partir de Microsoft Entra ID. Configurez les informations de connexion du principal du service dans le fichier application.properties et initialisez ApplicationTokenCredentials
pour obtenir le jeton. Vous trouverez ce fichier dans les deux exemples.
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
implémente le modèle REST personnalisé pour le serveur de configuration et injecte le jeton à partir de Microsoft Entra ID en tant qu'en-têtes Authorization
. Vous pouvez trouver ce fichier dans l'exemple de Config Server.
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:
Les deux classes précédentes concernent l’implémentation du modèle de modèle REST personnalisé pour le Registre du service Spring Cloud. Le intercept
composant est le même que dans le serveur de configuration ci-dessus. Veillez à ajouter factory.mappingJacksonHttpMessageConverter()
aux convertisseurs de messages. Ce fichier se trouve dans l'exemple de Registre Spring Cloud service.
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;
}
Si vous exécutez des applications sur un cluster Kubernetes, nous vous recommandons d’utiliser une adresse IP pour inscrire le registre Spring Cloud service pour l’accès.
eureka.instance.prefer-ip-address=true
Étapes suivantes
- Authentifier Azure CLI
- Production ready endpoints (Points de terminaison prêts pour la production)
- Créer des rôles et des autorisations