Configuración de Azure Active Directory para la autenticación de cliente

Advertencia

En este momento, la autenticación de cliente de AAD y el servicio de token de identidad administrada son mutuamente incompatibles en Linux.

Para los clústeres que se ejecutan en Azure, es recomendable proteger el acceso a los puntos de conexión de administración con Azure Active Directory (Azure AD). En este artículo se describe cómo configurar Azure AD para autenticar a los clientes de un clúster de Service Fabric.

En Linux, debe realizar los pasos siguientes antes de crear el clúster. En Windows, también tiene la opción de configurar la autenticación de Azure AD para un clúster existente.

En este artículo, el término "aplicación" se usará para hacer referencia a aplicaciones de Azure Active Directory, no a aplicaciones de Service Fabric; la distinción se realizará cuando sea necesario. Azure AD permite a las organizaciones (conocidas como inquilinos) administrar el acceso de los usuarios a las aplicaciones.

Un clúster de Service Fabric ofrece diversos puntos de entrada a su funcionalidad de administración, como Service Fabric Explorer y Visual Studio basados en web. Como consecuencia, creará dos aplicaciones de Azure AD para controlar el acceso al clúster: una aplicación web y una aplicación nativa. Una vez creadas las aplicaciones, asignará usuarios a los roles de solo lectura y administrador.

Nota:

En este momento, Service Fabric no admite la autenticación de Azure AD para el almacenamiento.

Nota:

Es un problema conocido que las aplicaciones y los nodos de los clústeres habilitados para AAD de Linux no se pueden ver en Azure Portal.

Prerrequisitos

En este artículo se supone que ya ha creado un inquilino. En caso de que no lo haya hecho, lea Obtención de un inquilino de Azure Active Directory.

Para simplificar algunos de los pasos necesarios para configurar Azure AD con un clúster de Service Fabric, hemos creado un conjunto de scripts de Windows PowerShell.

  1. Clone el repositorio en su equipo.
  2. Asegúrese de cumplir todos los requisitos previos para los scripts instalados.

Creación de aplicaciones de Azure AD y asignación de usuarios a roles

Usaremos dos aplicaciones de Azure AD para controlar el acceso al clúster: una aplicación web y una aplicación nativa. Una vez que cree las aplicaciones para representar el clúster, creará usuarios para los roles compatibles con Service Fabric: solo lectura y administrador.

Ejecute SetupApplications.ps1 y proporcione el identificador de inquilino, el nombre del clúster y la dirección URL de respuesta de la aplicación web como parámetros. Especifique también los nombres de usuario y las contraseñas para los usuarios. Por ejemplo:

$Configobj = .\SetupApplications.ps1 -TenantId '0e3d2646-78b3-4711-b8be-74a381d9890c' -ClusterName 'mysftestcluster' -WebApplicationReplyUrl 'https://mysftestcluster.eastus.cloudapp.azure.com:19080/Explorer/index.html' -AddResourceAccess
.\SetupUser.ps1 -ConfigObj $Configobj -UserName 'TestUser' -Password 'P@ssword!123'
.\SetupUser.ps1 -ConfigObj $Configobj -UserName 'TestAdmin' -Password 'P@ssword!123' -IsAdmin

Nota

Para las nubes nacionales (por ejemplo, Azure Government, Azure China, Azure Alemania), también debe especificar el parámetro -Location.

Ejecute el comando Get-AzureSubscription de PowerShell para encontrar su TenantId. Al ejecutar este comando se muestra el valor de TenantId para cada suscripción.

El valor de ClusterName se usa como prefijo en las aplicaciones de Azure AD que crea el script. No es necesario que coincida exactamente con el nombre del clúster real. Está diseñado solo para facilitar la asignación de artefactos de Azure AD al clúster de Service Fabric con el que se utilizan.

El valor de WebApplicationReplyUrl es el punto de conexión predeterminado al que Azure AD devuelve a los usuarios cuando terminan el inicio de sesión. Establézcalo como el punto de conexión de Service Fabric Explorer para el clúster. Si va a crear aplicaciones de Azure AD para representar un clúster existente, asegúrese de que esta dirección URL coincida con el punto de conexión del clúster existente. Si va a crear aplicaciones para un nuevo clúster, planifique el punto de conexión que tendrá el clúster y asegúrese de no usar el punto de conexión de un clúster existente. De forma predeterminada, el punto de conexión Service Fabric Explorer es:

https://<cluster_domain>:19080/Explorer

Se le pedirá que inicie sesión en una cuenta con privilegios administrativos para el inquilino de Azure AD. Una vez iniciada la sesión, el script creará las aplicaciones web y nativa para representar el clúster de Service Fabric. Si examina las aplicaciones del inquilino en Azure Portal, debería ver dos entradas nuevas:

  • ClusterName_Cluster
  • ClusterName_Client

El script imprimirá el código JSON que necesita la plantilla de Azure Resource Manager al crear el clúster habilitado por AAD, por lo que es buena idea mantener abierta la ventana de PowerShell.

"azureActiveDirectory": {
  "tenantId":"<guid>",
  "clusterApplication":"<guid>",
  "clientApplication":"<guid>"
},

Ayuda de solución de problemas para configurar Azure Active Directory

Configurar y usar Azure AD puede resultar complicado, así que a continuación se proporcionan algunas indicaciones de lo que puede hacer para depurar el problema.

Service Fabric Explorer le solicita que seleccione el certificado

Problema

Después de conectarse correctamente a Azure AD en Service Fabric Explorer, el explorador vuelve a la página principal, pero un mensaje le pide que seleccione un certificado.

SFX certificate dialog

Motivo

Al usuario no se le ha asignado un rol en la aplicación de clúster de Azure AD. Por tanto, se produce un error en la autenticación de Azure AD en el clúster de Service Fabric. Service Fabric Explorer recurre a la autenticación de certificado.

Solución

Siga las instrucciones de configuración de Azure AD y de asignación de roles de usuario. Además, se recomienda activar "Asignación de usuario necesaria para acceder a la aplicación", como hace SetupApplications.ps1.

La conexión con PowerShell genera un error: "Las credenciales especificadas no son válidas".

Problema

Cuando usa PowerShell para conectarse al clúster en el modo de seguridad "AzureActiveDirectory", después de iniciar sesión correctamente en Azure AD, se produce un error de conexión con el mensaje: "Las credenciales especificadas no son válidas".

Solución

Esta solución es la mismo que la anterior.

Service Fabric Explorer devuelve un error al iniciar sesión: "AADSTS50011"

Problema

Al intentar iniciar sesión en Azure AD y Service Fabric Explorer, la página devuelve un error: "AADSTS50011: La dirección de respuesta <url> no coincide con las direcciones de respuesta configuradas para la aplicación: <guid>".

SFX reply address does not match

Motivo

La aplicación del clúster (web) que representa Service Fabric Explorer intenta la autenticación en Azure AD y, como parte de la solicitud, proporciona la dirección URL de retorno de redireccionamiento. Pero no aparece en la lista URL DE RESPUESTA de la aplicación Azure AD.

Solución

En la página de registro de la aplicación de Azure AD del clúster, seleccione Autenticación y, en la sección URI de redireccionamiento, agregue a la lista la dirección URL de Service Fabric Explorer. Guarde el cambio.

Web application reply URL

Al usar la autenticación de Azure AD para conectarse al clúster a través de PowerShell se produce un error de inicio de sesión: "AADSTS50011"

Problema

Cuando intenta conectarse a un clúster de Service Fabric con Azure AD a través de PowerShell, la página de inicio de sesión devuelve un error: "AADSTS50011: la dirección URL de respuesta especificada en la solicitud no coincide con las direcciones URL de respuesta configuradas para la aplicación: <guid>".

Motivo

De forma similar al problema anterior, PowerShell intenta autenticarse en Azure AD, que proporciona una dirección URL de redireccionamiento que no aparece en la lista de URL de respuesta de la aplicación de Azure AD.

Solución

Use el mismo proceso que en el problema anterior, pero establezca la dirección URL en urn:ietf:wg:oauth:2.0:oob (un redireccionamiento especial para la autenticación de la línea de comandos).

Conexión del clúster mediante la autenticación de Azure AD a través de PowerShell

Para conectar el clúster de Service Fabric, use el siguiente ejemplo de comando de PowerShell:

Connect-ServiceFabricCluster -ConnectionEndpoint <endpoint> -KeepAliveIntervalInSec 10 -AzureActiveDirectory -ServerCertThumbprint <thumbprint>

Para obtener más información, consulte el cmdlet Connect-ServiceFabricCluster.

¿Se puede reutilizar el mismo inquilino de Azure AD para varios clústeres?

Sí. Pero recuerde agregar la dirección URL de Service Fabric Explorer a la aplicación del clúster (web). De lo contrario, Service Fabric Explorer no funciona.

¿Por qué todavía necesito el certificado de servidor con Azure AD habilitado?

FabricClient y FabricGateway realizan una autenticación mutua. Durante la autenticación de Azure AD, la integración de Azure AD proporciona una identidad del cliente al servidor y el cliente usa el certificado de servidor para comprobar la identidad del servidor. Para más información sobre cómo funciona el certificado en Service Fabric, consulte Certificados X.509 y Service Fabric.

Pasos siguientes

Después de configurar las aplicaciones de Azure Active Directory y establecer los roles para los usuarios, configure e implemente un clúster.