Accéder à Config Server et Service Registry
Remarque
Azure Spring Apps est le nouveau nom du service Azure Spring Cloud. Bien que le service ait un nouveau nom, vous verrez l’ancien nom à divers endroits pendant un certain temps, car nous travaillons à mettre à jour les ressources telles que les captures d’écran, les vidéos et les diagrammes.
Cet article s’applique à : ✔️ De base/Standard ❌ Entreprise
Cet article explique comment accéder au serveur Spring Cloud Config Server et spring Cloud Service Registry gérés par Azure Spring Apps à l’aide du contrôle d’accès en fonction du rôle (RBAC) 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 Microsoft Entra a attribué le rôle, il peut utiliser les commandes suivantes pour se connecter à Azure CLI avec l’utilisateur, le principal de service ou l’identité managé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 gé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
, case activée pour voir si le rôle est correctement 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 inscrire des applications Spring Boot dans 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 Config Server 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