Exporter (0) Imprimer
Développer tout
Développer Réduire

Procédure : Utiliser le service de gestion ACS pour configurer Facebook en tant que fournisseur d'identité Internet

Publication: avril 2011

Mis à jour: février 2014

S'applique à: Azure

  • Microsoft® Azure™ Access Control Service (ACS)

  • Facebook

Cette rubrique décrit les étapes de base nécessaires pour ajouter Facebook comme fournisseur d'identité. Vous pouvez ajouter Facebook comme fournisseur d'identité dans ACS à l'aide du portail de gestion disponible à l'adresse http://portal.windows.net (http://go.microsoft.com/fwlink/?LinkID=129428) ou automatiser ce processus à l'aide du service de gestion ACS. L'utilisation du service de gestion est utile par exemple dans les scénarios où vous créez une interface utilisateur personnalisée pour la gestion d'ACS ou lors de l'automatisation de l'ajout d'un nouveau locataire pour des solutions SaaS (Software as a Service) mutualisées.

  • Objectifs

  • Vue d'ensemble

  • Résumé des étapes

  • Étape 1 – Recueillir les informations de configuration

  • Étape 2 – Ajouter des références aux services et assemblys requis

  • Étape 3 – Implémenter le proxy du service de gestion

  • Étape 4 – Ajouter un fournisseur d'identité

  • Étape 5 – Tester votre travail

  • Identifier les informations de configuration et les éléments requis.

  • Dresser la liste des étapes nécessaires pour ajouter Facebook comme fournisseur d'identité.

  • Vérifier que la configuration a réussi.

Le service de gestion est un service web qui est l'un des principaux composants d'ACS. Le service de gestion expose une fonctionnalité accessible via l'interface utilisateur du portail de gestion. Tout ce qui peut être fait dans le portail de gestion peut également l'être à l'aide du service de gestion. L'ajout de Facebook comme fournisseur d'identité dans ACS vous permet de réduire les tâches nécessaires au développement et à la maintenance du mécanisme de gestion des identités à l'échelle d'Internet. Pour configurer Facebook comme fournisseur d'identité, vous devez écrire du code qui suit des étapes spécifiques. Cette rubrique décrit ces étapes de base.

  • Étape 1 – Recueillir les informations de configuration

  • Étape 2 – Ajouter des références aux services et assemblys requis

  • Étape 3 – Implémenter le proxy du service de gestion

  • Étape 4 – Ajouter un fournisseur d'identité

  • Étape 5 – Tester votre travail

Cette étape identifie et montre comment recueillir les informations de configuration nécessaires. Vous devez recueillir les informations suivantes :

  • Nom d'utilisateur de l'identité du service de gestionManagementClient.

  • Mot de passe de l'identité du service de gestion—Pour obtenir le mot de passe de l'identité du service pour le service de gestion :

    1. Connectez-vous au portail de gestion Access Control Service (http://go.microsoft.com/fwlink/?LinkID=129428).

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

    3. Dans la page Service de gestion, cliquez sur le lien ManagementClient (ManagementClient est le nom d'utilisateur pour le service).

    4. Dans la section Informations d'identification, cliquez sur le lien Clé symétrique ou Mot de passe. Les valeurs de ces deux zones sont identiques. 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.

  • ID d'application Facebook et secret d'application—Suivez les instructions fournies dans la rubrique Configuration de Facebook en tant que fournisseur d'identité.

Après avoir recueilli les informations nécessaires, suivez ces étapes pour créer un exemple de console application qui exécutera le code pour ajouter Facebook comme fournisseur d'identité :

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

  2. Dans la classe Programme, attribuez les informations recueillies précédemment aux variables d'étendue du module, en utilisant un code semblable à celui qui suit.

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

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

  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 à votre espace de noms et ressemble à la chaîne suivante :

    https://VOTRE_ESPACE_DE_NOMS.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;
    
    

Notez que la dernière déclaration, ConsoleApplication1.ServiceReference1, peut être différente si vous avez modifié les valeurs par défaut lors de la création de votre application console ou lors de l'ajout de la référence au service de gestion.

Cette étape crée une méthode qui encapsule l'implémentation du 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'assistance. Cela ajoutera le jeton OAuth SWT à l'en-tête Authorization de la requête 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;
    
            }
    
    
    
    

Cette étape ajoute Facebook comme fournisseur d'identité à l'aide du proxy de service de gestion que vous avez créé précédemment.

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

    ManagementService svc = CreateManagementServiceClient();
    
    
  2. Ajoutez votre fournisseur d'identité comme é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 du fournisseur d'identité basée sur le certificat obtenu précédemment.

    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é accessible aux 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);
    
    

  1. Connectez-vous au portail de gestion Access Control Service (http://go.microsoft.com/fwlink/?LinkID=129428).

  2. Dans la page Access Control Service, cliquez sur le lien Groupes de règles dans la section Relations d'approbation.

  3. Cliquez sur l'une des règles disponibles.

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

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

  6. Conservez les autres valeurs par défaut.

  7. Cliquez sur Enregistrer.

Vous venez de créer une règle directe (pass-through) pour le fournisseur d'identité.

Ajouts de la communauté

AJOUTER
Microsoft réalise une enquête en ligne pour recueillir votre opinion sur le site Web de MSDN. Si vous choisissez d’y participer, cette enquête en ligne vous sera présentée lorsque vous quitterez le site Web de MSDN.

Si vous souhaitez y participer,
Afficher:
© 2014 Microsoft