Postupy: Konfigurace zprostředkovatele identity OpenID pomocí služby ACS Management Service
Aktualizováno: 19. června 2015
Platí pro: Azure
Platí pro
Služba Microsoft® Azure™ Access Control (ACS)
OpenID 2.0
Souhrn
Toto téma popisuje základní kroky potřebné pro přidání zprostředkovatelů identity, které podporují protokol OpenID. Zprostředkovatelé identity OpenID je možné přidat do služby ACS pomocí služby pro správu. Zprostředkovatelé identity OpenID nelze přidat pomocí portálu pro správu služby ACS. V tomto tématu odkazujeme na specifikaci OpenID 2.0, protože se jedná o verzi specifikace, kterou služba ACS podporuje.
Obsah
Cíle
Přehled
Přehled kroků
Krok 1 – Shromažďování informací o konfiguraci
Krok 2 – Přidání odkazů na požadované služby a sestavení
Krok 3 – Implementace klienta služby pro správu
Krok 4 – Přidání zprostředkovatele identity
Cíle
Identifikujte požadované požadavky a informace o konfiguraci.
Uveďte kroky potřebné k přidání zprostředkovatele identity OpenID.
Přehled
Služba pro správu je webová služba, která je jednou z klíčových komponent služby ACS. Služba pro správu zveřejňuje funkce, které jsou k dispozici prostřednictvím uživatelského rozhraní portálu pro správu. Na portálu pro správu je možné provést také cokoli, co je možné provést pomocí služby pro správu. Přidání zprostředkovatelů identit OpenID ACS umožňuje ušetřit vývoj a údržbu mechanismu správy identit v internetovém měřítku. Pokud chcete provést úlohu přidání zprostředkovatele identity OpenID, napište kód, který se řídí konkrétními kroky. Toto téma popisuje tyto základní kroky.
Přehled kroků
Krok 1 – Shromažďování informací o konfiguraci
Krok 2 – Přidání odkazů na požadované služby a sestavení
Krok 3 – Implementace klienta služby pro správu
Krok 4 – Přidání zprostředkovatele identity
Krok 1 – Shromažďování informací o konfiguraci
Tento krok identifikuje a ukazuje, jak shromáždit požadované informace o konfiguraci. Potřebujete shromáždit následující informace:
Uživatelské jméno identity služby pro správu – ManagementClient.
Heslo identity služby pro správu – Získání hesla identity služby pro službu pro správu:
Přihlaste se k portálu pro správu služeb Access Control.
V části Správa klikněte na odkaz Služby pro správu .
Na stránce Služba pro správu klikněte na odkaz ManagementClient (ManagementClient je skutečné uživatelské jméno služby).
V části Přihlašovací údaje klikněte na symetrický klíč nebo odkaz Heslo . Hodnota v každé z nich je stejná. Toto je heslo.
Obor názvů vaší služby
Název hostitele ACS – obvykle accesscontrol.windows.net.
Po shromáždění požadovaných informací vytvořte ukázkovou konzolovou aplikaci, která spustí kód pro přidání zprostředkovatele identity OpenID:
Otevřete Visual Studio ® 2010 a vytvořte nový projekt konzolové aplikace.
Ve třídě Program přiřaďte informace shromážděné dříve proměnným oboru modulu pomocí kódu podobného následujícímu.
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;
Krok 2 – Přidání odkazů na požadované služby a sestavení
Tento krok identifikuje a přidá požadované závislosti do služeb a sestavení.
Přidání požadovaných závislostí do služeb a sestavení
Přidejte odkaz na System.Web.Extensions.
Přidejte odkaz na službu pro správu. Adresa URL služby pro správu je jedinečná pro váš obor názvů a vypadá podobně jako následující:
https:// UOURNAMESPACE.accesscontrol.windows.net/v2/mgmt/service
Přidejte následující deklarace.
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;
Všimněte si poslední deklarace ConsoleApplication1.ServiceReference1. Může se lišit v případě, že jste při vytváření konzolové aplikace změnili výchozí hodnoty nebo když jste přidali odkaz na službu pro správu.
Krok 3 – Implementace klienta služby pro správu
Tento krok vytvoří metodu zapouzdření implementace klienta služby pro správu.
Implementace klienta služby pro správu
Do třídy Program přidejte následující metodu.
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; }
Implementujte metodu GetTokenWithWritePermission a její pomocné metody. Přidá token SWT OAuth do hlavičky autorizace požadavku 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; }
Krok 4 – Přidání zprostředkovatele identity
Tento krok přidá zprostředkovatele identity OpenID pomocí klienta služby pro správu, který jste vytvořili dříve.
Přidání zprostředkovatele identity OpenID
Uvnitř metody Main inicializuje klienta služby pro správu.
ManagementService svc = CreateManagementServiceClient();
Přidejte svého zprostředkovatele identity jako vystavitele.
Issuer issuer = new Issuer { Name = identityProviderName }; svc.AddToIssuers(issuer); svc.SaveChanges(SaveChangesOptions.Batch);
Vytvořte zprostředkovatele identity.
var openId = new IdentityProvider { DisplayName = identityProviderName, Description = identityProviderName, WebSSOProtocolType = "OpenId", IssuerId = issuer.Id }; svc.AddObject("IdentityProviders", openId);
Aktualizujte přihlašovací adresu zprostředkovatele identity. V tomto cvičení použijete www.myopenid.com jako přihlašovací adresu. Ostatní zprostředkovatelé identity OpenID zahrnují Google a Yahoo!, a mají své vlastní přihlašovací adresy. Jsou https://www.google.com/accounts/o8/ud a https://open.login.yahooapis.com/openid/op/authv uvedeném pořadí.
var openIdAddress = new IdentityProviderAddress { Address = "https://www.myopenid.com/server", EndpointType = "SignIn" }; svc.AddRelatedObject(openId, "IdentityProviderAddresses", openIdAddress); svc.SaveChanges();
Zpřístupněte zprostředkovatele identity předávajícím stranám s výjimkou služby pro správu.
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);