Megosztás a következőn keresztül:


Útmutató: Az ACS felügyeleti szolgáltatás használata a Facebook internetes identitásszolgáltatóként való konfigurálásához

Frissítve: 2015. június 19.

A következőkre vonatkozik: Azure

Érvényesség

  • Microsoft® Azure™ Access Control Service (ACS)

  • Facebook

Összefoglalás

Ez a témakör a Facebook identitásszolgáltatóként való hozzáadásához szükséges alapvető lépéseket ismerteti. A Facebookot identitásszolgáltatóként a felügyeleti portálon lehet hozzáadni az ACS-hez, vagy automatizálható az ACS felügyeleti szolgáltatással. A felügyeleti szolgáltatás használata hasznos lehet például olyan helyzetekben, amikor egyéni felhasználói felületet hoz létre az ACS kezeléséhez, vagy amikor automatizálja egy új bérlő előkészítését több-bérlős szolgáltatott szoftver (SaaS) megoldásokhoz.

Tartalom

  • Célkitűzések

  • Áttekintés

  • A lépések összefoglalása

  • 1. lépés – Konfigurációs adatok gyűjtése

  • 2. lépés – Hivatkozások hozzáadása a szükséges szolgáltatásokhoz és szerelvényekhez

  • 3. lépés – A felügyeleti szolgáltatás proxyjának implementálása

  • 4. lépés – Identitásszolgáltató hozzáadása

  • 5. lépés – A munka tesztelése

Célkitűzések

  • Azonosítsa a szükséges előfeltételeket és konfigurációs információkat.

  • Sorolja fel a Facebook identitásszolgáltatóként való hozzáadásához szükséges lépéseket.

  • Ellenőrizze, hogy a konfiguráció sikeres-e.

Áttekintés

A Felügyeleti szolgáltatás egy webszolgáltatás, amely az ACS egyik legfontosabb összetevője. A felügyeleti szolgáltatás a Felügyeleti portál felhasználói felületén elérhető funkciókat tesz elérhetővé. A felügyeleti portálon elvégezhető feladatok a felügyeleti szolgáltatással is elvégezhetők. Ha a Facebookot identitásszolgáltatóként hozzáadja az ACS-hez, azzal megtakaríthatja az internetes szintű identitáskezelési mechanizmus fejlesztését és fenntartását. Ahhoz, hogy a Facebookot identitásszolgáltatóként konfigurálhassa, meg kell írnia a konkrét lépéseket követő kódot. Ez a témakör ezeket az alapvető lépéseket ismerteti.

A lépések összefoglalása

  • 1. lépés – Konfigurációs adatok gyűjtése

  • 2. lépés – Hivatkozások hozzáadása a szükséges szolgáltatásokhoz és szerelvényekhez

  • 3. lépés – A felügyeleti szolgáltatás proxyjának implementálása

  • 4. lépés – Identitásszolgáltató hozzáadása

  • 5. lépés – A munka tesztelése

1. lépés – Konfigurációs adatok gyűjtése

Ez a lépés azonosítja és bemutatja, hogyan gyűjtheti össze a szükséges konfigurációs adatokat. A következő információkat kell összegyűjtenie:

  • Felügyeleti szolgáltatás identitásának felhasználóneveManagementClient.

  • Felügyeleti szolgáltatás identitásjelszava – A felügyeleti szolgáltatáshoz tartozó szolgáltatásidentitás-jelszó beszerzése:

    1. Jelentkezzen be a Access Control Szolgáltatáskezelési portálra.

    2. A Felügyelet szakaszban kattintson a Felügyeleti szolgáltatás hivatkozásra.

    3. A Felügyeleti szolgáltatás lapon kattintson a ManagementClient hivatkozásra (a ManagementClient a szolgáltatás tényleges felhasználóneve).

    4. A Hitelesítő adatok szakaszban kattintson a szimmetrikus kulcsra vagy a Jelszó hivatkozásra. Az egyes értékek megegyeznek. Ez a jelszó.

  • A szolgáltatás névtere

  • ACS-állomásnév – általában accesscontrol.windows.net.

  • Facebook-alkalmazásazonosító és alkalmazáskulcs – Kövesse a Következő útmutató utasításait: A Facebook konfigurálása identitásszolgáltatóként.

A szükséges információk összegyűjtése után az alábbi lépéseket követve hozzon létre egy minta konzolalkalmazást, amely futtatja a Facebook identitásszolgáltatóként való hozzáadására szolgáló kódot:

  1. Nyissa meg Visual Studio ® 2010-et, és hozzon létre egy új konzolalkalmazás-projektet.

  2. A Program osztályban rendelje hozzá a korábban gyűjtött adatokat a modul hatókörének változóihoz az alábbihoz hasonló kód használatával.

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

2. lépés – Hivatkozások hozzáadása a szükséges szolgáltatásokhoz és szerelvényekhez

Ez a lépés azonosítja és hozzáadja a szükséges függőségeket a szolgáltatásokhoz és szerelvényekhez.

A szükséges függőségek hozzáadása a szolgáltatásokhoz és szerelvényekhez

  1. Adjon hozzá egy hivatkozást a System.Web.Extensions fájlhoz.

  2. Adjon hozzá egy szolgáltatáshivatkozást a felügyeleti szolgáltatáshoz. A felügyeleti szolgáltatás URL-címe egyedi a névtérben, és az alábbihoz hasonló:

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

  3. Adja hozzá a következő deklarációkat.

    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;
    

Figyelje meg az utolsó deklarációt, a ConsoleApplication1.ServiceReference1-et, amely a konzolalkalmazás létrehozásakor vagy a felügyeleti szolgáltatáshoz való hivatkozás hozzáadásakor módosította az alapértelmezett értékeket.

3. lépés – A felügyeleti szolgáltatás proxyjának implementálása

Ez a lépés létrehoz egy metódust, amely a felügyeleti szolgáltatás proxyjának megvalósítását foglalja magában.

A felügyeleti szolgáltatás proxyjának megvalósítása

  1. Adja hozzá a következő metódust a Program osztályhoz.

    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. Implementálja a GetTokenWithWritePermission metódust és annak segédmetódusait. Hozzáadja az SWT OAuth-jogkivonatot a HTTP-kérés engedélyezési fejlécéhez.

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

4. lépés – Identitásszolgáltató hozzáadása

Ez a lépés hozzáadja a Facebookot identitásszolgáltatóként a korábban létrehozott felügyeleti szolgáltatás proxyjával.

Facebook hozzáadása identitásszolgáltatóként

  1. A Main metódusban inicializálja a felügyeleti szolgáltatás proxyt.

    ManagementService svc = CreateManagementServiceClient();
    
  2. Adja hozzá identitásszolgáltatóját kiállítóként.

    Issuer issuer = new Issuer
    {
       Name = identityProviderName + “-” + facebookAppId
    };
    svc.AddToIssuers(issuer);
    svc.SaveChanges(SaveChangesOptions.Batch);
    
  3. Hozzon létre egy identitásszolgáltatót.

    var facebook = new IdentityProvider
    {
        DisplayName = identityProviderName,
        LoginLinkName = "Facebook",
        LoginParameters = "email",
        WebSSOProtocolType = "Facebook",
        IssuerId = issuer.Id
    };
    
    svc.AddObject("IdentityProviders", facebook);
    
  4. Hozzon létre egy identitásszolgáltató aláírókulcsát a korábban beszerzett tanúsítvány alapján.

    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. Tegye elérhetővé az identitásszolgáltatót a függő entitások számára, kivéve a felügyeleti szolgáltatást.

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

5. lépés – A munka tesztelése

A munka tesztelése

  1. Jelentkezzen be a Access Control Szolgáltatáskezelési portálra.

  2. A Access Control Szolgáltatás lapon kattintson a Szabálycsoportok hivatkozásra a Megbízhatósági kapcsolatok szakaszban.

  3. Kattintson bármelyik elérhető szabályra.

  4. A Szabálycsoport szerkesztése lapon kattintson a Szabály hozzáadása hivatkozásra.

  5. A Jogcímszabály hozzáadása lapon válassza ki az újonnan hozzáadott identitásszolgáltatót a Jogcímkibocsátó szakasz legördülő listájából.

  6. Hagyja meg a többi alapértelmezett értéket.

  7. Kattintson a Mentés gombra.

Most hozott létre egy átmenő szabályt az identitásszolgáltató számára.