Share via


Acceso a Config Server y Service Registry

Nota:

Azure Spring Apps es el nuevo nombre del servicio Azure Spring Cloud. Aunque el servicio tiene un nuevo nombre, verá el nombre antiguo en algunos lugares durante un tiempo mientras trabajamos para actualizar recursos, como capturas de pantalla, vídeos y diagramas.

Este artículo se aplica a: ✔️ Nivel Básico o Estándar ❌ Nivel Enterprise

En este artículo se explica cómo acceder al registro de spring Cloud Config Server y spring Cloud Service Administrado por Azure Spring Apps mediante el control de acceso basado en rol (RBAC) de Microsoft Entra.

Nota:

Las aplicaciones implementadas y que se ejecutan dentro del servicio Azure Spring Apps se conectan automáticamente con la autenticación y autorización basadas en certificados al acceder a los servicios administrados Spring Cloud Config Server y Service Registry. No es necesario seguir estas instrucciones para estas aplicaciones. La plataforma Azure Spring Apps administra totalmente los certificados relacionados, que se insertan automáticamente en la aplicación cuando se conectan a Config Server y Service Registry.

Asignación de roles a microsoft Entra user/group, MSI o entidad de servicio

Asigne el rol al [usuario | grupo | entidad de servicio | identidad administrada] en el ámbito de [grupo de administración | suscripción | grupo de recursos | recurso].

Nombre de rol Descripción
Lector de Config Server de Azure Spring Apps Permite el acceso de lectura a Config Server de Azure Spring Apps.
Colaborador de Config Server de Azure Spring Apps Permite el acceso de lectura, escritura y eliminación en Config Server de Azure Spring Apps.
Lector del registro de servicios de Azure Spring Apps Permite el acceso de lectura en el registro de servicios de Azure Spring Apps.
Colaborador del registro de servicios de Azure Spring Apps Permite el acceso de lectura, escritura y eliminación en el registro de servicios de Azure Spring Apps.

Para asignar roles, consulte Asignación de roles de Azure mediante Azure Portal.

Acceso a los puntos de conexión de Config Server y Service Registry

Una vez asignado el rol, el usuario asignado puede acceder a los puntos de conexión de Config Server y Service Registry de Spring Cloud mediante estos procedimientos:

  1. Obtén un token de acceso. Una vez asignado el rol a un usuario de Microsoft Entra, puede usar los siguientes comandos para iniciar sesión en la CLI de Azure con el usuario, la entidad de servicio o la identidad administrada para obtener un token de acceso. Para obtener más información, consulte Autenticación en la CLI de Azure.

    az login
    az account get-access-token
    
  2. Cree el extremo. Se admiten los puntos de conexión predeterminados de Config Server y del registro de servicios de Spring Cloud administrados por Azure Spring Apps.

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

    Nota:

    Si usa Microsoft Azure operado por 21Vianet, reemplace por *.azuremicroservices.io*.microservices.azure.cn. Para más información, consulte la sección Comprobación de puntos de conexión en Azure en la guía para desarrolladores de 21Vianet operado por Microsoft Azure.

  3. Acceda al punto de conexión creado con el token de acceso. Coloque el token de acceso en un encabezado para proporcionar autorización: --header 'Authorization: Bearer {TOKEN_FROM_PREVIOUS_STEP}'.

    Por ejemplo:

    a. Acceda a un punto de conexión como https://SERVICE_NAME.svc.azuremicroservices.io/config/actuator/health para ver el estado de mantenimiento de Config Server.

    b. Acceda a un punto de conexión como https://SERVICE_NAME.svc.azuremicroservices.io/eureka/eureka/apps para ver las aplicaciones registradas en Service Registry de Spring Cloud (Eureka aquí).

    Si la respuesta es 401 Unauthorized, compruebe si el rol se ha asignado correctamente. El rol tardará varios minutos en entrar en vigor o en comprobar que el token de acceso no haya expirado.

Para más información sobre el punto de conexión del accionador, consulte Puntos de conexión listos para producción.

Para los puntos de conexión de Eureka, consulte Operaciones de REST de Eureka.

Para los puntos de conexión del servidor de configuración y la información detallada de la ruta de acceso, consulte ResourceController.java y EncryptionController.java.

Registro de aplicaciones de Spring Boot en Config Server y el registro de servicios de Spring Cloud administrados por Azure Spring Apps

Una vez asignado el rol, puede registrar aplicaciones de Spring Boot en Spring Cloud Config Server y el Registro de servicios administrados por Azure Spring Apps con autenticación de token de Microsoft Entra. Tanto Config Server como Service Registry admiten la plantilla de REST personalizada para insertar el token de portador para la autenticación.

Para más información, consulte los ejemplos de Acceso a Config Server administrado por Azure Spring Apps y Acceso al registro de servicios administrado por Azure Spring Apps. En las secciones siguientes se explican algunos detalles importantes de estos ejemplos.

En AccessTokenManager.java:

AccessTokenManager es responsable de obtener un token de acceso de Microsoft Entra ID. Configure la información de inicio de sesión de la entidad de servicio en el archivo application.properties e inicialice ApplicationTokenCredentials para obtener el token. Puede encontrar este archivo en ambos ejemplos.

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

En CustomConfigServiceBootstrapConfiguration.java:

CustomConfigServiceBootstrapConfiguration implementa la plantilla DE REST personalizada para Config Server e inserta el token de Microsoft Entra ID como Authorization encabezados. Este archivo se encuentra en el ejemplo 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;
    }

}

En CustomRestTemplateTransportClientFactories.java:

Las dos clases anteriores son para la implementación de la plantilla de REST personalizada para Service Registry de Spring Cloud. La parte intercept es la misma que se mostró anteriormente para Config Server. Asegúrese de agregar a factory.mappingJacksonHttpMessageConverter() los convertidores de mensajes. Puede encontrar este archivo en el ejemplo de Service Registry de 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;
}

Si ejecuta aplicaciones en un clúster de Kubernetes, se recomienda usar una dirección IP para registrar Service Registry de Spring Cloud para el acceso.

eureka.instance.prefer-ip-address=true

Pasos siguientes