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


Útmutató: OpenID-identitásszolgáltató konfigurálása az ACS felügyeleti szolgáltatással

Frissítve: 2015. június 19.

A következőkre vonatkozik: Azure

Érvényesség

  • Microsoft® Azure™ Access Control Service (ACS)

  • OpenID 2.0

Összefoglalás

Ez a témakör az OpenID protokollt támogató identitásszolgáltatók hozzáadásához szükséges alapvető lépéseket ismerteti. Az OpenID-identitásszolgáltatók a felügyeleti szolgáltatással adhatók hozzá az ACS-hez. Az OpenID-identitásszolgáltatók nem vehetők fel az ACS felügyeleti portál használatával. Ebben a témakörben az OpenID 2.0 specifikációra hivatkozunk, mivel ez az ACS által támogatott specifikációs verzió.

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 ügyfélalkalmazásának megvalósítása

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

Célkitűzések

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

  • Az OpenID-identitásszolgáltató hozzáadásához szükséges lépések felsorolása.

Áttekintés

A felügyeleti szolgáltatás egy webszolgáltatás, amely az ACS egyik fő ö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. Az OpenID identitásszolgáltatók ACS-jének hozzáadásával megtakaríthatja az internetes szintű identitáskezelési mechanizmus fejlesztését és fenntartását. OpenID-identitásszolgáltató hozzáadásának feladatához írjon egy kódot, amely a megadott lépéseket követi. 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 ügyfélalkalmazásának megvalósítása

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

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.

A szükséges információk összegyűjtése után hozzon létre egy minta konzolalkalmazást, amely futtatja az OpenID-identitásszolgáltató 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 = "...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;

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 a ConsoleApplication1.ServiceReference1 utolsó deklarációját. Ebben az esetben eltérő lehet, ha módosította az alapértelmezett értékeket a konzolalkalmazás létrehozásakor, vagy amikor hozzáadta a hivatkozást a felügyeleti szolgáltatáshoz.

3. lépés – A felügyeleti szolgáltatás ügyfélalkalmazásának megvalósítása

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

A felügyeleti szolgáltatás ügyfélalkalmazásá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áad egy OpenID-identitásszolgáltatót a korábban létrehozott Felügyeleti szolgáltatás ügyfél használatával.

OpenID-identitásszolgáltató hozzáadása

  1. A Main metóduson belül inicializálja a felügyeleti szolgáltatásügyfélt.

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

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

                var openId = new IdentityProvider
                {
                    DisplayName = identityProviderName,
                    Description = identityProviderName,
                    WebSSOProtocolType = "OpenId",
                    IssuerId = issuer.Id
                };
    
                svc.AddObject("IdentityProviders", openId);
    
  4. Frissítse az identitásszolgáltató bejelentkezési címét. Ebben a gyakorlatban a www.myopenid.com fogja használni bejelentkezési címként. Más OpenID-identitásszolgáltatók közé tartozik a Google és a Yahoo!, és saját bejelentkezési címük van. Ezek, https://www.google.com/accounts/o8/ud és https://open.login.yahooapis.com/openid/op/auth, illetve.

                var openIdAddress = new IdentityProviderAddress
                {
                    Address = "https://www.myopenid.com/server",
                    EndpointType = "SignIn"
                };
    
                svc.AddRelatedObject(openId, "IdentityProviderAddresses", openIdAddress);
                svc.SaveChanges();
    
  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 = openId.Id,
                            RelyingPartyId = rp.Id
                        });
                    }
                }
    
                svc.SaveChanges(SaveChangesOptions.Batch);