Exporter (0) Imprimer
Développer tout

utilisation du service de gestion pour configurer Facebook en tant que fournisseur d'identité Internet

Publication: avril 2011

Mis à jour: mai 2011

S'applique à: Windows Azure

S'applique à

  • Service de contrôle d'accès (ACS, Access Control Service) Microsoft® Windows Azure™ AppFabric

  • Facebook

Résumé

Cette rubrique décrit les étapes élémentaires à effectuer pour ajouter Facebook en tant que fournisseur d'identité. Facebook peut être ajouté en tant que fournisseur d'identité à ACS à l'aide du portail de gestion, à l'adresse http://portal.windows.net (http://go.microsoft.com/fwlink/?LinkID=129428), ou peut être automatisé avec le service de gestion ACS. L'utilisation du service de gestion s'avère notamment utile lors de scénarios au cours desquels vous créez une interface utilisateur personnalisée en vue de gérer ACS ou lors de l'automatisation de l'intégration d'un nouveau locataire à des solutions SaaS (logiciel en tant que service) prenant en charge plusieurs locataires.

Table des matières

  • Objectifs

  • Vue d'ensemble

  • Résumé des étapes

  • Étape 1 : Collecte des informations sur la configuration

  • Étape 2 : Ajout de références aux services et assemblys requis

  • Étape 3 : Implémentation du proxy du service de gestion

  • Étape 4 : Ajout d'un fournisseur d'identité

  • Étape 5 : Test de votre travail

Objectifs

  • Identifier les informations sur la configuration et les conditions préalables requises.

  • Répertorier les étapes requises pour ajouter Facebook en tant que fournisseur d'identité.

  • S'assurer de la réussite de la configuration.

Vue d'ensemble

Le service de gestion est un service Web constituant l'un des composants clés d'ACS. Le service de gestion présente les fonctionnalités disponibles via l'interface utilisateur du portail de gestion. Toutes les opérations pouvant être effectuées dans le portail de gestion peuvent également l'être à l'aide du service de gestion. L'ajout de Facebook en tant que fournisseur d'identité à ACS vous permet de gagner du temps au niveau du développement et de conserver le mécanisme de gestion des identités à l'échelle d'Internet. Pour configurer Facebook en tant que fournisseur d'identité, vous devez écrire du code à l'aide de la procédure ci-après. Cette rubrique décrit ces étapes élémentaires.

Résumé des étapes

  • Étape 1 : Collecte des informations sur la configuration

  • Étape 2 : Ajout de références aux services et assemblys requis

  • Étape 3 : Implémentation du proxy du service de gestion

  • Étape 4 : Ajout d'un fournisseur d'identité

  • Étape 5 : Test de votre travail

Étape 1 : Collecte des informations sur la configuration

Cette étape identifie les informations sur la configuration requises et vous indique comment les collecter. Vous devez collecter les informations suivantes :

  • Nom d'utilisateur de l'identité du service de gestion : ManagementClient.

  • Mot de passe de l'identité du service de gestion : pour obtenir le mot de passe de l'identité de service du service de gestion, procédez comme suit :

    1. Connectez-vous au Portail de gestion du service de contrôle d'accès (http://go.microsoft.com/fwlink/?LinkID=129428).

    2. Dans la section Administration, cliquez sur le lien Service de gestion.

    3. Sur la page Service de gestion, cliquez sur le lien ManagementClient (ManagementClient correspond au nom d'utilisateur réel du service).

    4. Dans la section Informations d'identification, cliquez sur le lien Clé symétrique ou Mot de passe. La valeur indiquée dans chacun de ces champs est identique. Il s'agit du mot de passe.

  • L'espace de noms de votre service

  • Nom d'hôte ACS : généralement accesscontrol.windows.net.

  • Secret de l'application et ID de l'application Facebook : suivez les instructions de la rubrique Configuration de Facebook en tant que fournisseur d'identité.

Après avoir collecté les informations requises, procédez comme suit pour créer un exemple d'application de console qui exécutera le code en vue d'ajouter Facebook en tant que fournisseur d'identité :

  1. Ouvrez Visual Studio® 2010 et créez un projet d'application de console.

  2. Dans la classe Programme, affectez les informations collectées auparavant aux variables d'étendue du module, en utilisant le code semblable à celui indiqué ci-après.

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";

Étape 2 : Ajout de références aux services et assemblys requis

Cette étape identifie et ajoute les dépendances aux services et assemblys requises.

Pour ajouter les dépendances aux services et assemblys requises

  1. Ajoutez une référence à System.Web.Extensions.

  2. Ajoutez une référence de service au service de gestion. L'URL du service de gestion est unique dans votre espace de noms et se présente comme suit :

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

  3. Ajoutez les déclarations suivantes.

    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;
    
    

Remarquez la dernière déclaration, ConsoleApplication1.ServiceReference1, car elle peut varier dans votre cas si vous avez modifié des valeurs par défaut lors de la création de votre application de console ou lors de l'ajout de la référence au service de gestion.

Étape 3 : Implémentation du proxy du service de gestion

Cette étape permet de créer une méthode qui encapsule l'implémentation du proxy du service de gestion.

Pour implémenter le proxy du service de gestion

  1. Ajoutez la méthode suivante à la classe Program.

    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. Implémentez la méthode GetTokenWithWritePermission et ses méthodes d'aide. Le jeton SWT OAuth est alors ajouté à l'en-tête Autorisation de la demande 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;
    
            }
    
    
    
    

Étape 4 : Ajout d'un fournisseur d'identité

Cette étape permet d'ajouter Facebook en tant que fournisseur d'identité à l'aide du proxy du service de gestion créé précédemment.

Pour ajouter Facebook en tant que fournisseur d'identité

  1. Dans la méthode Main, initialisez le proxy du service de gestion.

    ManagementService svc = CreateManagementServiceClient();
    
    
  2. Ajoutez votre fournisseur d'identité en tant qu'émetteur.

    Issuer issuer = new Issuer
    {
       Name = identityProviderName + “-” + facebookAppId
    };
    svc.AddToIssuers(issuer);
    svc.SaveChanges(SaveChangesOptions.Batch);
    
    
  3. Créez un fournisseur d'identité.

    var facebook = new IdentityProvider
    {
        DisplayName = identityProviderName,
        LoginLinkName = "Facebook",
        LoginParameters = "email",
        WebSSOProtocolType = "Facebook",
        IssuerId = issuer.Id
    };
    
    svc.AddObject("IdentityProviders", facebook);
    
    
  4. Créez une clé de signature de fournisseur d'identité basée sur le certificat obtenu auparavant.

    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. Rendez le fournisseur d'identité disponible pour les parties de confiance, à l'exception du service de gestion.

    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);
    
    

Étape 5 : Test de votre travail

Pour tester votre travail

  1. Connectez-vous au Portail de gestion du service de contrôle d'accès (http://go.microsoft.com/fwlink/?LinkID=129428).

  2. Sur la page Service de contrôle d'accès, cliquez sur le lien Groupes de règles dans la section Relations d'approbation.

  3. Cliquez sur n'importe quelle règle disponible.

  4. Sur la page Modifier le groupe de règles, cliquez sur le lien Ajouter une règle.

  5. Sur la page Ajouter une règle de revendication, choisissez le fournisseur d'identité que vous venez d'ajouter dans la liste déroulante de la section Émetteur de la revendication.

  6. Conservez les autres valeurs par défaut.

  7. Cliquez sur Enregistrer.

Vous venez de créer une règle de transfert direct pour le fournisseur d'identité.

Afficher:
© 2014 Microsoft