Autenticar solicitudes de administración del servicio

Actualizado: junio de 2015

Las solicitudes realizadas al servicio de administración deben autenticarse mediante uno de los métodos siguientes:

Las solicitudes seguras para el servicio de administración se pueden autenticar mediante la creación de una aplicación de Azure AD y usando la Active Directory Authentication Library para obtener un token de acceso de la aplicación. Para obtener más información acerca de la autenticación con Azure AD, vea Escenarios de autenticación en Azure AD.

Haga lo siguiente para agregar una aplicación a Azure AD:

  1. Inicie sesión en el Portal de administración de Azure.

  2. Hacia la parte inferior del menú izquierdo, haga clic en Active Directory y luego en Directorio predeterminado.

  3. En la página Directorio predeterminado, debajo de Integrar aplicaciones, haga clic en Agregar una aplicación que está desarrollando.

    Agregar una aplicación de Azure AD
  4. Escriba el nombre de la aplicación, seleccione APLICACIÓN CLIENTE NATIVA y luego haga clic en la flecha derecha.

    Proporcionar un nombre para la aplicación
  5. Escriba un URI para la aplicación y luego haga clic en la marca de verificación. El URI incluye el nombre de la aplicación precedida por http://localhost/.

    Especificar la dirección URL de redireccionamiento
  6. Cuando se haya creado la aplicación, debe agregar permiso para que la aplicación acceda a las API de Administración de servicios. Vaya a la página de la aplicación y haga clic en Configurar.

  7. En la sección Permisos para otras aplicaciones de la parte inferior de la página de configuración, haga clic en Seleccionar aplicación y seleccione API de administración de servicios de Microsoft Azure.

    Asignar permisos a la aplicación
  8. Haga clic en Permisos delegados: 0 y luego seleccione Administración de servicios de Azure.

    Continuar estableciendo permisos
  9. Haga clic en Guardar en el menú inferior.

Puede instalar con facilidad la Active Directory Authentication Library en el proyecto de Visual Studio mediante el paquete NuGet. Para instalar el paquete, haga lo siguiente:

  1. Haga clic con el botón secundario en el Explorador de soluciones y haga clic en Administrar paquetes NuGet.

    Administrar paquetes NuGet
  2. Escriba Active Directory en el cuadro de búsqueda, haga clic en Instalar para el paquete de la Biblioteca de autenticación de Active Directory y luego siga las instrucciones para instalar el paquete.

    Instalar biblioteca de Active Directory

En el ejemplo de código siguiente se muestra cómo recuperar el token de acceso:


private static string GetAuthorizationHeader()
{
  AuthenticationResult result = null;
  
  var context = new AuthenticationContext("https://login.windows.net/{tenantId}");

  var thread = new Thread(() =>
  {
    result = context.AcquireToken(
      "https://management.core.windows.net/",
      "{clientId}",
      new Uri("{redirectUri}"));
  });

  thread.SetApartmentState(ApartmentState.STA);
  thread.Name = "AquireTokenThread";
  thread.Start();
  thread.Join();
            
  if (result == null)
  {
    throw new InvalidOperationException("Failed to obtain the JWT token");
  }

  string token = result.AccessToken;
  return token;
}

Cuando use el código que aparece anteriormente, tiene que reemplazar lo siguiente:

  • {tenantId} con el GUID de la aplicación. Para encontrar el GUID, vaya a la página Directorio predeterminado de la sección Active Directory del Portal de administración, seleccione la aplicación que ha creado anteriormente y luego haga clic en Ver extremos.

    Ver extremos

    Copie el GUID de la aplicación y reemplace el marcador de posición con él.

    Copiar el extremo de la aplicación
  • {clientId} con el identificador de cliente. Para encontrar el identificador del cliente, vaya a la página Configuración de la aplicación en el Portal de administración.

    Copiar el identificador del cliente de AD
  • {redirectUri} con el URI de redirección. Para encontrar el URI de redirección, vaya a la página Configuración de la aplicación en el Portal de administración.

    Copiar el URI de redireccionamiento de la aplicación

Use la siguiente línea de código para asignar el token que se devuelve del método GetAuthorizationHeader mostrado anteriormente a un variable que se puede usar por la solicitud:

string token = GetAuthorizationHeader();

Use las siguientes líneas de código para agregar el token a una solicitud:


HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
request.Headers.Add(HttpRequestHeader.Authorization, "Bearer " + token);

Las solicitudes seguras para el servicio de administración se pueden autenticar mediante certificados de administración sobre SSL. Para utilizar un certificado de administración, este debe cargarse en Azure. Después de agregar un certificado de administración a la suscripción, puede firmar las solicitudes del servicio mediante el certificado. Para obtener información sobre cómo crear certificados de administración y asociarlos a una suscripción, vea Crear y cargar un certificado de administración para Azure.

Al diseñar una aplicación, tenga en cuenta los siguientes puntos acerca de los certificados de administración:

  • La API de administración de servicios no comprueba si un certificado sigue siendo válido. La autenticación se realizará correctamente ante un certificado que haya expirado.

  • Todos los certificados de administración llevan el mismo conjunto de privilegios. No hay noción de autenticación “basada en roles” en la que un certificado de administración se pueda configurar en un rol y otro se configure en la misma suscripción en otro rol.

En el ejemplo siguiente se muestra cómo recuperar el certificado de administración usando las bibliotecas System.Net y System.Security.Cryptography.X509Certificates:


private static X509Certificate2 GetStoreCertificate(string thumbprint)
{
  List<StoreLocation> locations = new List<StoreLocation>
  { 
    StoreLocation.CurrentUser, 
    StoreLocation.LocalMachine
  };

  foreach (var location in locations)
  {
    X509Store store = new X509Store("My", location);
    try
    {
      store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);
      X509Certificate2Collection certificates = store.Certificates.Find(
        X509FindType.FindByThumbprint, thumbprint, false);
      if (certificates.Count == 1)
      {
        return certificates[0];
      }
    }
    finally
    {
      store.Close();
    }
  }
  throw new ArgumentException(string.Format(
    "A Certificate with Thumbprint '{0}' could not be located.",
    thumbprint));
}

Use la siguiente línea de código para asignar el certificado que se devuelve del método GetStoreCertificate mostrado anteriormente a un variable que se puede usar por la solicitud:

noteNota
Thumbprint representa la huella digital si agregaste un certificado de administración a la suscripción.


X509Certificate2 certificate = GetStoreCertificate(Thumbprint);

Use las siguientes líneas de código para agregar el certificado a una solicitud:


HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
request.ClientCertificates.Add(certificate);

Mostrar: