Exportar (0) Imprimir
Expandir todo
Este tema aún no ha recibido ninguna valoración - Valorar este tema

Procedimiento: Usar el servicio de administración para configurar un proveedor de identidades OpenID

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

  • OpenID 2.0

Resumen

En este tema se describen los pasos básicos requeridos para agregar proveedores de identidades que admitan el protocolo OpenID. Los proveedores de identidades de OpenID se pueden agregar a ACS mediante el servicio de administración. Los proveedores de identidades de OpenID no se pueden agregar mediante el portal de administración de ACS. En este tema hacemos referencia a la especificación de OpenID 2.0 porque es la versión de la especificación que admite ACS.

Contenido

  • Objetivos

  • Información general

  • Resumen de pasos

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

  • Paso 2 – Agregar referencias a los ensamblados y servicios requeridos

  • Paso 3 – Implementar el cliente de servicio de administración

  • Paso 4 – Agregar un proveedor de identidades

Objetivos

  • Identifique la información de configuración y los requisitos previos requeridos.

  • Enumere los pasos requeridos para agregar un proveedor de identidades de OpenID.

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 funcionalidad disponible a través de la interfaz de usuario del portal de administración. Todo lo que se pueda lograr en el portal de administración también se puede realizar con el servicio de administración. Agregando proveedores de identidades de OpenID, ACS le permite ahorrar en el desarrollo y mantenimiento del mecanismo de administración de identidad de escala de Internet. Para llevar a cabo la tarea de agregar un proveedor de identidades de OpenID, escriba código que siga pasos específicos. En este tema se describen estos pasos básicos.

Resumen de pasos

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

  • Paso 2 – Agregar referencias a los ensamblados y servicios requeridos

  • Paso 3 – Implementar el cliente de servicio de administración

  • Paso 4 – Agregar un proveedor de identidades

Paso 1 – Recopilar información de configuración

En este paso se identifica y se muestra la manera de recopilar la información de configuración requerida. Tiene que recopilar la siguiente información:

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

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

    1. Inicie sesión en el portal de administración Servicio del 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 ClienteAdministración (ClienteAdministración es el nombre de usuario real para el servicio).

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

  • El espacio de nombres del servicio

  • Nombre de host de ACS: suele ser accesscontrol.windows.net.

Tras recopilar la información necesaria, siga estos pasos para crear una aplicación de consola de ejemplo que ejecutará el código para agregar el proveedor de identidades de OpenID:

  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 del ámbito de módulo, usando código similar a lo siguiente.


        static string serviceIdentityUsernameForManagement = "ManagementClient";
        static string serviceIdentityPasswordForManagement = "...update to your password...";

        static string serviceNamespace = "...update to your namespace...";
        static string acsHostName = "accesscontrol.windows.net";
        static string acsManagementServicesRelativeUrl = "v2/mgmt/service/";

        static string identityProviderName = "My Open ID Identity Provider";

        static string cachedSwtToken;


Paso 2 – Agregar referencias a los ensamblados y servicios requeridos

Este paso identifica y agrega las dependencias requeridas para los servicios y ensamblados.

Para agregar las dependencias requeridas para los servicios y ensamblados

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

  2. Agregar 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://SUESPACIODENOMBRES.accesscontrol.windows.net/v2/mgmt/service

  3. Agregue las siguientes declaraciones.

    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 en su caso si ha cambiado los valores predeterminados al crear la aplicación de consola o al agregar la referencia al servicio de administración.

Paso 3 – Implementar el cliente de servicio de administración

Este paso crea un método que encapsula la implementación del cliente del servicio de administración.

Para implementar el cliente 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étodo auxiliares. Agregará el token OAuth de SWT al encabezado de autorización de la solicitud de 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

Este paso agrega un proveedor de identidades OpenID mediante el cliente del servicio de administración que ha creado anteriormente.

Para agregar un proveedor de identidades de OpenID

  1. En el método Principal, inicialice el cliente del servicio de administración.

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

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

                var openId = new IdentityProvider
                {
                    DisplayName = identityProviderName,
                    Description = identityProviderName,
                    WebSSOProtocolType = "OpenId",
                    IssuerId = issuer.Id
                };
    
                svc.AddObject("IdentityProviders", openId);
    
    
    
  4. Actualice la dirección de inicio de sesión del proveedor de identidades. En este ejercicio usará www.myopenid.com como la dirección de inicio de sesión. Entre otros proveedores de identidades de OpenID se incluyen Google y Yahoo!, y tienen sus propias direcciones de inicio de sesión. Son https://www.google.com/accounts/o8/ud y https://open.login.yahooapis.com/openid/op/auth, respectivamente.

                var openIdAddress = new IdentityProviderAddress
                {
                    Address = "https://www.myopenid.com/server",
                    EndpointType = "SignIn"
                };
    
                svc.AddRelatedObject(openId, "IdentityProviderAddresses", openIdAddress);
                svc.SaveChanges();
    
    
    
  5. Haga que el proveedor de identidades esté disponible para los 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 = openId.Id,
                            RelyingPartyId = rp.Id
                        });
                    }
                }
    
                svc.SaveChanges(SaveChangesOptions.Batch);
    
    
    

¿Te ha resultado útil?
(Caracteres restantes: 1500)
Gracias por sus comentarios
Mostrar:
© 2014 Microsoft. Reservados todos los derechos.