Exportar (0) Imprimir
Expandir todo

Procedimiento: Usar el servicio de administración para configurar Facebook como proveedor de identidades de Internet

Publicada: abril de 2011

Actualizado: mayo de 2011

Se aplica a: Windows Azure

Se aplica a

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

  • Facebook

Resumen

En este tema se muestran los pasos básicos para agregar Facebook como proveedor de identidades. Facebook 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 con 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.

Contenido

  • 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

Objetivos

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

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

  • Probar que la configuración sea correcta.

Información general

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 Facebook como proveedor de identidades en ACS permite ahorrar en desarrollo y mantener el mecanismo de administración de identidades a nivel de Internet. Para cumplir la tarea de configurar Facebook como proveedor de identidades, se debe escribir un código que siga pasos específicos. En este tema se presentan estos pasos básicos.

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

Paso 1: Recopilar información de configuración

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 nombre del espacio de nombres de servicio

  • Nombre de host de ACS: normalmente accesscontrol.windows.net.

  • Identificador y secreto de aplicación de Facebook: siga las instrucciones del Procedimiento: Configurar Facebook como proveedor de identidades.

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 Facebook 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 acsManagementServicesRelativeUrl = "v2/mgmt/service/";


static string cachedSwtToken;
static string identityProviderName = "Facebook";

static string facebookAppId = "Your Facebook AppID";
static string facebookAppSecret = "Your Facebook Secret";

Paso 2: Agregar referencias a los servicios y ensamblados necesarios

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

Pasos para agregar las dependencias requeridas para los servicios y ensamblados

  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 exclusiva para su espacio de nombres y tiene un aspecto similar al 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;
    using System.Globalization;
    using System.Runtime.Serialization.Json;
    using ConsoleApplication1.ServiceReference1;
    
    

Observe la última declaración, ConsoleApplication1.ServiceReference1, puede variar si ha modificado los valores predeterminados al crear la aplicación de la consola o al agregar la referencia al servicio de administración.

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

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

Para implementar el proxy del servicio de administración

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

    public static ManagementService CreateManagementServiceClient()
            {
                string managementServiceEndpoint = String.Format(CultureInfo.InvariantCulture, "https://{0}.{1}/{2}",
                    serviceNamespace,
                    acsHostName,
                    acsManagementServicesRelativeUrl);
                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, "Bearer " + cachedSwtToken);
            }
    
            private static string GetTokenFromACS()
            {
                //
                // Request a token from ACS
                //
                WebClient client = new WebClient();
                client.BaseAddress = string.Format(CultureInfo.CurrentCulture, 
                                                   "https://{0}.{1}", 
                                                   serviceNamespace, 
                                                   acsHostName);
    
                NameValueCollection values = new NameValueCollection();
                values.Add("grant_type", "client_credentials");
                values.Add("client_id", serviceIdentityUsernameForManagement);
                values.Add("client_secret", serviceIdentityPasswordForManagement);
                values.Add("scope", client.BaseAddress + acsManagementServicesRelativeUrl);
    
                byte[] responseBytes = client.UploadValues("/v2/OAuth2-13", "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;
    
            }
    
    
    
    

Paso 4: Agregar un proveedor de identidades

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

Para agregar Facebook como proveedor de identidades

  1. En el método Principal, 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 + “-” + facebookAppId
    };
    svc.AddToIssuers(issuer);
    svc.SaveChanges(SaveChangesOptions.Batch);
    
    
  3. Cree un proveedor de identidades.

    var facebook = new IdentityProvider
    {
        DisplayName = identityProviderName,
        LoginLinkName = "Facebook",
        LoginParameters = "email",
        WebSSOProtocolType = "Facebook",
        IssuerId = issuer.Id
    };
    
    svc.AddObject("IdentityProviders", facebook);
    
    
  4. Cree una clave de firma del proveedor de identidades basada en el certificado obtenido anteriormente.

    var facebookKeys = new[]
        {
            new IdentityProviderKey
                {
                    IdentityProvider = facebook,
                    StartDate = DateTime.UtcNow,
                    EndDate = DateTime.UtcNow.AddYears(1),
                    Type = "ApplicationKey",
                    Usage = "ApplicationId",
                    Value = Encoding.UTF8.GetBytes(facebookAppId)
                },
            new IdentityProviderKey
                {
                    IdentityProvider = facebook,
                    StartDate = DateTime.UtcNow,
                    EndDate = DateTime.UtcNow.AddYears(1),
                    Type = "ApplicationKey",
                    Usage = "ApplicationSecret",
                    Value = Encoding.UTF8.GetBytes(facebookAppSecret)
                }
        };
    
    foreach (var key in facebookKeys)
    {
        svc.AddRelatedObject(facebook, "IdentityProviderKeys", key);
    }
    
    svc.SaveChanges(SaveChangesOptions.Batch);
    
    
  5. 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 = facebook.Id,
                RelyingPartyId = rp.Id
            });
        }
    }
    
    svc.SaveChanges(SaveChangesOptions.Batch);
    
    

Paso 5: Probar el trabajo

Para probar el trabajo

  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.

Mostrar:
© 2014 Microsoft