Ú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óneve – ManagementClient.
Felügyeleti szolgáltatás identitásjelszava – A felügyeleti szolgáltatáshoz tartozó szolgáltatásidentitás-jelszó beszerzése:
Jelentkezzen be a Access Control Szolgáltatáskezelési portálra.
A Felügyelet szakaszban kattintson a Felügyeleti szolgáltatás hivatkozásra.
A Felügyeleti szolgáltatás lapon kattintson a ManagementClient hivatkozásra (a ManagementClient a szolgáltatás tényleges felhasználóneve).
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:
Nyissa meg Visual Studio ® 2010-et, és hozzon létre egy új konzolalkalmazás-projektet.
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
Adjon hozzá egy hivatkozást a System.Web.Extensions fájlhoz.
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
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
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; }
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
A Main metóduson belül inicializálja a felügyeleti szolgáltatásügyfélt.
ManagementService svc = CreateManagementServiceClient();
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);
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);
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();
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);