Exportar (0) Imprimir
Expandir todo
Expandir Minimizar

Procedimiento: Usar el servicio de administración para configurar AD FS 2.0 como proveedor de identidades empresariales

Publicada: abril de 2011

Actualizado: febrero de 2014

Se aplica a: Azure

  • Servicio de control de acceso (ACS) de Microsoft® Windows Azure™ AppFabric

  • Servicios de federación de Microsoft Active Directory® (AD FS) 2.0

En este tema se muestran los pasos básicos necesarios para agregar como proveedor de identidades. se puede agregar como proveedor de identidades en ACS, mediante el portal de administración, en http://portal.windows.net (http://go.microsoft.com/fwlink/?LinkID=129428) o se puede automatizar mediante el servicio de administración de ACS. Trabajar con el servicio de administración resulta útil, por ejemplo, en aquellos escenarios en los que se crea una interfaz de usuario personalizada para administrar ACS o cuando se automatiza la integración de una nueva empresa para soluciones de software alojado como servicio (SaaS) multiempresa.

  • Objetivos

  • Información general

  • Resumen de pasos

  • Paso 1: Recopilar información de configuración

  • Paso 2: Agregar referencias a los servicios y ensamblados necesarios

  • Paso 3: Implementar el proxy de servicio de administración

  • Paso 4: Agregar un proveedor de identidades

  • Paso 5: Probar el trabajo

  • Identificar los requisitos previos necesarios y la información de configuración.

  • Enumerar los pasos necesarios para agregar como proveedor de identidades.

  • Probar que la configuración sea correcta.

El servicio de administración es un servicio web que se incluye entre los componentes clave de ACS. El servicio de administración expone la funcionalidad que está disponible a través de la interfaz de usuario del portal de administración. Todo aquello que puede realizarse en el portal de administración también se puede hacer mediante el servicio de administración. Agregar Microsoft como proveedor de identidades en ACS permite reutilizar la inversión realizada en la administración de identidades corporativas para soluciones basadas en nube. Para cumplir la tarea de configurar como proveedor de identidades, se debe escribir un código que siga pasos específicos. En este tema se presentan estos pasos básicos.

  • Paso 1: Recopilar información de configuración

  • Paso 2: Agregar referencias a los servicios y ensamblados necesarios

  • Paso 3: Implementar el proxy de servicio de administración

  • Paso 4: Agregar un proveedor de identidades

  • Paso 5: Probar el trabajo

En este paso se identifica y se muestra cómo recopilar la información de configuración necesaria. Se debe recopilar la siguiente información:

  • Nombre de usuario de la identidad del servicio de administración: Cliente de administración.

  • Contraseña de la identidad del servicio de administración: para obtener la contraseña de la identidad del servicio de administración:

    1. Inicie sesión en el Portal de administración del Servicio de control de acceso (http://go.microsoft.com/fwlink/?LinkID=129428).

    2. En la sección Administración, haga clic en el vínculo Servicio de administración.

    3. En la página Servicio de administración, haga clic en el vínculo Cliente de administración (Cliente de administración es el nombre de usuario real para el servicio).

    4. En la sección Credenciales, haga clic en el vínculo Clave simétrica o Contraseña. El valor es el mismo en cada uno. Ésta es la contraseña.

  • El espacio de nombres

  • Espacio de nombres de ACS: accesscontrol.windows.net.

  • Cadena del certificado de firma: la cadena del certificado de firma AD FS se obtiene de la implementación de .

Después de recopilar la información requerida, siga estos pasos para crear una aplicación de consola de ejemplo que ejecutará el código para agregar como proveedor de identidades:

  1. Abra Visual Studio® 2010 y cree un nuevo proyecto de aplicación de consola.

  2. En la clase Programa, asigne la información recopilada anteriormente a las variables de ámbito de módulo, mediante un código similar al siguiente.

    static string serviceIdentityUsernameForManagement = "ManagementClient";
    static string serviceIdentityPasswordForManagement = "My Password for my ManagementClient";
    
    static string serviceNamespace = "MyNameSpaceNoDots";
    static string acsHostName = "accesscontrol.windows.net";
    
    static string signingCertificate = "Very long string representing ADFS signing certificate";
    
    static string cachedSwtToken;
    static string identityProviderName = "My Other ADFS Identity Provider";
    
    
    

En este paso se identifican y se agregan las dependencias necesarias a los servicios y ensamblajes.

  1. Agregue una referencia a System.Web.Extensions.

  2. Agregue una referencia de servicio al servicio de administración. La dirección URL del servicio de administración es única para el espacio de nombres y es similar a la siguiente:

    https://ESPACIODENOMBRES.accesscontrol.windows.net/v2/mgmt/service

  3. Agregue las declaraciones siguientes.

    using System.Web; 
    using System.Net; 
    using System.Data.Services.Client; 
    using System.Collections.Specialized; 
    using System.Web.Script.Serialization;
    
    

En este paso se crea un método que encapsula la implementación del proxy del servicio de administración.

  1. Agregue el método siguiente a la clase Programa.

    public static ManagementService CreateManagementServiceClient()
            {
                string managementServiceHead = "v2/mgmt/service/";
                string managementServiceEndpoint = 
    string.Format("https://{0}.{1}/{2}", 
    serviceNamespace, 
    acsHostName, 
    managementServiceHead);
                ManagementService managementService = 
    new ManagementService(new Uri(managementServiceEndpoint));
    
                managementService.SendingRequest += GetTokenWithWritePermission;
    
                return managementService;
            }
    
    
  2. Implemente el método GetTokenWithWritePermission y sus métodos auxiliares. Se agregará el token SWT OAuth al encabezado de autorización de la solicitud HTTP.

    
            public static void GetTokenWithWritePermission(object sender, 
    SendingRequestEventArgs args)
            {
                GetTokenWithWritePermission((HttpWebRequest)args.Request);
            }
    
            public static void GetTokenWithWritePermission(HttpWebRequest args)
            {
                if (cachedSwtToken == null)
                {
                    cachedSwtToken = GetTokenFromACS();
                }
    
                args.Headers.Add(HttpRequestHeader.Authorization, 
     string.Format("OAuth {0}", 
     cachedSwtToken));
            }
    
            private static string GetTokenFromACS()
            {
                // request a token from ACS
                WebClient client = new WebClient();
                client.BaseAddress = string.Format("https://{0}.{1}", 
          serviceNamespace, 
          acsHostName);
    
                NameValueCollection values = new NameValueCollection();
    
                values.Add("grant_type", "password");
                values.Add("client_id", serviceIdentityUsernameForManagement);
                values.Add("username", serviceIdentityUsernameForManagement);
                values.Add("client_secret", serviceIdentityPasswordForManagement);
                values.Add("password", serviceIdentityPasswordForManagement);
    
                byte[] responseBytes = 
    client.UploadValues("/v2/OAuth2-13/rp/AccessControlManagement", 
          "POST", 
          values);
    
                string response = Encoding.UTF8.GetString(responseBytes);
    
                // Parse the JSON response and return the access token 
                JavaScriptSerializer serializer = new JavaScriptSerializer();
    
                Dictionary<string, object> decodedDictionary = 
    serializer.DeserializeObject(response) as Dictionary<string, object>;
    
                return decodedDictionary["access_token"] as string;
    
            }
    
    

En este paso se agrega como proveedor de identidades, mediante el proxy del servicio de administración creado anteriormente.

  1. Inicialice el proxy del servicio de administración.

    ManagementService svc = CreateManagementServiceClient();
    
    
  2. Agregue el proveedor de identidades como emisor.

    Issuer issuer = new Issuer
           {
           Name = identityProviderName
    };
           svc.AddToIssuers(issuer);
           svc.SaveChanges(SaveChangesOptions.Batch);
    
    
  3. Cree un proveedor de identidades.

    IdentityProvider identityProvider = new IdentityProvider()
    {
        DisplayName = identityProviderName,
        Description = identityProviderName,
        WebSSOProtocolType = "WsFederation",
        IssuerId = issuer.Id
    };
           svc.AddObject("IdentityProviders", identityProvider);
    
    
  4. Cree una clave de firma del proveedor de identidades basada en el certificado obtenido anteriormente.

    IdentityProviderKey identityProviderKey = new IdentityProviderKey()
    {
        DisplayName = "SampleIdentityProviderKeyDisplayName",
        Type = "X509Certificate",
        Usage = "Signing",
        Value = Convert.FromBase64String(signingCertificate),
        IdentityProvider = identityProvider,
        StartDate = startDate,
        EndDate = endDate,
    };
          svc.AddRelatedObject(identityProvider, 
    "IdentityProviderKeys", 
    identityProviderKey);
    
    
  5. Actualice la dirección de inicio de sesión del proveedor de identidades.

    IdentityProviderAddress realm = new IdentityProviderAddress()
    {
        Address = "http://SampleIdentityProvider.com/sign-in/",
        EndpointType = "SignIn",
        IdentityProvider = identityProvider,
    };
    svc.AddRelatedObject(identityProvider, "IdentityProviderAddresses", realm);
    
    svc.SaveChanges(SaveChangesOptions.Batch);
    
    
  6. Haga que el proveedor de identidades esté disponible para usuarios de confianza, excepto el servicio de administración.

    foreach (RelyingParty rp in svc.RelyingParties)
    {
        // skip the built-in management RP. 
        if (rp.Name != "AccessControlManagement")
        {
            svc.AddToRelyingPartyIdentityProviders(new RelyingPartyIdentityProvider()
            {
                IdentityProviderId = identityProvider.Id,
                RelyingPartyId = rp.Id
            });
        }
    }
    
    svc.SaveChanges(SaveChangesOptions.Batch);
    
    

  1. Inicie sesión en el Portal de administración del Servicio de control de acceso (http://go.microsoft.com/fwlink/?LinkID=129428).

  2. En la página Servicio de control de acceso, haga clic en el vínculo Grupos de reglas de la sección Relaciones de confianza.

  3. Haga clic en cualquiera de las reglas disponibles.

  4. En la página Editar grupo de reglas, haga clic en el vínculo Agregar regla.

  5. En la página Agregar regla de notificación, elija el nuevo proveedor de identidades agregado en la lista desplegable de la sección Emisor de la notificación.

  6. Deje el resto de valores predeterminados.

  7. Haga clic en Guardar.

Acaba de crear una regla de paso a través para el proveedor de identidades.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft