Postupy: Konfigurace identit služeb pomocí služby ACS Management Service
Aktualizováno: 19. června 2015
Platí pro: Azure
Platí pro
- Microsoft Azure Active Directory Access Control (označované také jako služba Access Control nebo služba ACS)
Přehled
Identity služby ACS můžete nakonfigurovat pomocí portálu pro správu služby ACS (další informace najdete v tématu Identity služby) nebo služby pro správu služby ACS. Práce se službou ACS Management Service může být efektivnější, pokud vytváříte vlastní uživatelské rozhraní pro správu služby ACS nebo pokud chcete automatizovat onboarding nového tenanta pro řešení SaaS (Software as a Service) s více tenanty.
Postup konfigurace identit služeb pomocí služby ACS Management Service
Důležité
Před provedením následujících kroků se ujistěte, že váš systém splňuje všechny požadavky rozhraní .NET Framework a platformy, které jsou shrnuté v požadavcích služby ACS.
Pokud chcete nakonfigurovat identity služeb pomocí služby ACS Management Service, proveďte následující kroky:
Krok 1 – Shromažďování informací o konfiguraci služby ACS
Krok 2 – Vytvoření ukázkové konzolové aplikace
Krok 3 – Přidání odkazů na požadované služby a sestavení
Krok 4 – Implementace klienta služby pro správu
Krok 5 – Přidání identity služby
Krok 1 – Shromažďování informací o konfiguraci služby ACS
Pomocí portálu pro správu služby ACS můžete shromažďovat potřebné informace o konfiguraci. Další informace o tom, jak spustit portál pro správu služby ACS, najdete v tématu Portál pro správu služby ACS.
Shromažďování informací o konfiguraci služby ACS
Spusťte portál pro správu služby ACS. Další informace o tom, jak spustit portál pro správu služby ACS, najdete v tématu Portál pro správu služby ACS.
Získejte hodnotu účtu služby pro správu služby ACS. Můžete použít výchozí účet ManagementClient . Tuto hodnotu zobrazíte tak, že na portálu pro správu služby ACS kliknete na službu Pro správu v části Správa ve stromu na levé straně stránky.
Získejte hodnotu hesla účtu služby ACS Management Service. Chcete-li zobrazit tuto hodnotu, postupujte takto:
Na portálu pro správu služby ACS klikněte na Službu pro správu v části Správa ve stromu na levé straně stránky.
Na stránce Správa služby klikněte na ManagementClient v části Účty služby pro správu.
Na stránce Upravit účet služby správy v části Přihlašovací údaje klikněte na Heslo.
Na stránce Upravit přihlašovací údaje správy zkopírujte hodnotu do pole Heslo .
Získejte hodnotu oboru názvů Azure. Tuto hodnotu můžete získat z Azure Portal nebo z adresy URL portálu pro správu služby ACS. Například http://contoso.accesscontrol.windows.nethodnota oboru názvů Azure je contoso.
Získejte hodnotu názvu hostitele služby ACS. Obvykle je to accesscontrol.windows.net.
Krok 2 – Vytvoření ukázkové konzolové aplikace
V tomto kroku vytvoříte ukázkovou konzolovou aplikaci, která může spustit kód pro přidání identit služby ACS.
Vytvoření ukázkové konzolové aplikace
Otevřete Visual Studio 2012 a vytvořte nový projekt konzolové aplikace.
Do třídy Program přidejte následující kód a potom přiřaďte proměnné serviceIdentityPasswordForManagement, serviceNamespace a acsHostName k příslušným informacím o konfiguraci, které jste shromáždili v předchozím kroku.
public const string serviceIdentityUsernameForManagement = "ManagementClient"; public const string serviceIdentityPasswordForManagement = "My Password/Key for ManagementClient"; public const string serviceNamespace = "MyNameSpaceNoDots"; public const string acsHostName = "accesscontrol.windows.net"; public const string acsManagementServicesRelativeUrl = "v2/mgmt/service/"; static string cachedSwtToken;
Krok 3 – Přidání odkazů na požadované služby a sestavení
V tomto kroku identifikujete a přidáte požadované závislosti do služeb a sestavení.
Přidání požadovaných závislostí do služeb a sestavení
Klikněte pravým tlačítkem myši na Odkazy, klikněte na Přidat odkaz a přidejte odkaz na System.Web.Extensions.
Poznámka
Možná budete muset kliknout pravým tlačítkem myši na název ukázkové konzolové aplikace v Průzkumník řešení, vybrat vlastnosti a změnit cílovou architekturu ukázkové aplikace z klientského profilu rozhraní .NET Framework 4 (ve výchozím nastavení při vytváření nové konzolové aplikace) na rozhraní .NET Framework 4.
Klikněte pravým tlačítkem na Odkazy na službu, klikněte na Přidat odkaz na službu a 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, kde MyConsoleApplication je název konzolové aplikace a MyServiceReference je název odkazu na vaši službu:
using System; using System.Collections.Generic; using System.Linq; using System.Text; 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.Security.Cryptography; using System.Security.Cryptography.X509Certificates; using MyConsoleApplication.MyServiceReference;
Krok 4 – Implementace klienta služby pro správu
V tomto kroku implementujete 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; }
Do třídy Program přidejte následující kód pro vytvoření GetTokenWithWritePermission metoda a jeho pomocné metody. GetTokenWithWritePermission a jeho pomocné rutiny přidávají 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 5 – Přidání identity služby
V tomto kroku přidáte identitu služby pomocí klienta služby pro správu, který jste vytvořili v předchozím kroku. Identita služby ACS může jako typ přihlašovacích údajů použít heslo, symetrický klíč nebo certifikát X.509.
Přidání identity služby
Inicializace klienta služby pro správu přidáním následujícího kódu do main metody ve třídě Program :
ManagementService svc = CreateManagementServiceClient();
Proveďte některou z následujících akcí:
Pokud chcete přidat identitu služby přidruženou k heslu a uložit změny, přidejte do metody Main ve třídě Program následující kód:
Poznámka
Tuto identitu služby Můžete volat SampleServiceIdentity a nastavit jeho heslo na SampleServiceIdentityPassword, jak je znázorněno v kódu níže.
string name = "SampleServiceIdentity"; string password = "SampleServiceIdentityPassword"; ServiceIdentity sid = new ServiceIdentity() { Name = name }; DateTime startDate, endDate; startDate = DateTime.UtcNow; endDate = DateTime.MaxValue; ServiceIdentityKey key = new ServiceIdentityKey() { EndDate = endDate.ToUniversalTime(), StartDate = startDate.ToUniversalTime(), Type = "Password", Usage = "Password", Value = Encoding.UTF8.GetBytes(password), DisplayName = String.Format(CultureInfo.InvariantCulture, "{0} key for {1}", "Password", name) }; svc.AddToServiceIdentities(sid); svc.AddRelatedObject( sid, "ServiceIdentityKeys", key); svc.SaveChanges(SaveChangesOptions.Batch);
Pokud chcete přidat identitu služby asociované se symetrickým klíčem a uložit změny, přidejte do metody Main ve třídě Program následující kód:
Poznámka
Tuto identitu služby SampleServiceIdentity můžete volat a nastavit její symetrickou hodnotu klíče na SampleServiceIdentityPassword, jak je znázorněno v následujícím kódu.
string name = "SampleServiceIdentity"; string symKey = "SampleServiceIdentitySymmetricKey"; ServiceIdentity sid = new ServiceIdentity() { Name = name }; DateTime startDate, endDate; startDate = DateTime.UtcNow; endDate = DateTime.MaxValue; ServiceIdentityKey key = new ServiceIdentityKey() { EndDate = endDate.ToUniversalTime(), StartDate = startDate.ToUniversalTime(), Type = "Symmetric", Usage = "Signing", Value = Convert.FromBase64String(symKey), DisplayName = String.Format(CultureInfo.InvariantCulture, "{0} key for {1}", "Sym Key", name) }; svc.AddToServiceIdentities(sid); svc.AddRelatedObject( sid, "ServiceIdentityKeys", key); svc.SaveChanges(SaveChangesOptions.Batch);
Pokud chcete přidat identitu služby přidruženou k certifikátu X.509 a uložit změny, přidejte do metody Main ve třídě Program následující kód:
Poznámka
Tuto identitu služby můžete volat SampleServiceIdentity, jak je znázorněno v následujícím kódu.
V následujícím kódu nahraďte úplnou cestu k vaší . Soubor CER s plně kvalifikovanou cestou k certifikátu X.509 Pokud je například certifikát s názvem ACS2ClientCertificate.cer uložen v souboru C:\, správná hodnota je C:\ ACS2ClientCertificate.cerstring name = "SampleServiceIdentity"; X509Certificate2 cert = new X509Certificate2(@"Full path to your .CER file"); ServiceIdentity sid = new ServiceIdentity() { Name = name }; DateTime startDate, endDate; startDate = cert.NotBefore.ToUniversalTime(); endDate = cert.NotAfter.ToUniversalTime(); ServiceIdentityKey key = new ServiceIdentityKey() { EndDate = endDate.ToUniversalTime(), StartDate = startDate.ToUniversalTime(), Type = "X509Certificate", Usage = "Signing", Value = cert.GetRawCertData(), DisplayName = String.Format(CultureInfo.InvariantCulture, "{0} key for {1}", "Cert", name) }; svc.AddToServiceIdentities(sid); svc.AddRelatedObject( sid, "ServiceIdentityKeys", key); svc.SaveChanges(SaveChangesOptions.Batch);