Postupy: Konfigurace aplikací předávající strany pomocí služby správy služby ACS
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
Aplikace předávající strany služby ACS můžete nakonfigurovat pomocí portálu pro správu služby ACS (další informace najdete v tématu Aplikace předávající strany) nebo pomocí 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 aplikací předávající strany pomocí služby pro správu služby ACS
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 aplikace předávající strany pomocí služby ACS Management Service, proveďte následující kroky:
Krok 1 – shromáždě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í aplikace předávající strany
Krok 1 – shromáždění informací o konfiguraci služby ACS
Pomocí portálu pro správu služby ACS můžete shromáždit 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. Pokud chcete 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 Služby správy klikněte na ManagementClient v části Účty služby pro správu.
Na stránce Upravit účet služby pro správu klikněte v části Přihlašovací údaje na Heslo.
Na stránce Upravit přihlašovací údaje správy zkopírujte hodnotu do pole Heslo .
Získejte název 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 v http://contoso.accesscontrol.windows.netnázvu oboru názvů je contoso.
Získejte název hostitele 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í skupin a pravidel pravidel služby ACS.
Vytvoření ukázkové konzolové aplikace
Otevřete Visual Studio 2012 a vytvořte nový projekt konzolové aplikace pod Windows nainstalovanou šablonou.
Do třídy Program přidejte následující kód a pak přiřaďte proměnné serviceIdentityPasswordForManagement, serviceNamespace a acsHostName příslušné konfigurační informace, 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řazené 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:// YOURNAMESPACE.accesscontrol.windows.net/v2/mgmt/service
Přidejte následující deklarace, kde MyConsoleApplication je název vaší konzolové aplikace:
using System; using System.IO; 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; }
Přidejte Metodu GetTokenWithWritePermission a její pomocné metody do třídy Program . GetTokenWithWritePermission a jeho pomocné rutiny přidají 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í aplikace předávající strany
V tomto kroku vytvoříte ukázkovou aplikaci předávající strany s formátem tokenu SAML 2.0 (výchozí možnost), žádnou zásadou šifrování tokenu (výchozí možnost) přidruženou k zprostředkovateli identity Windows Live ID (účet Microsoft), 600 sekund životnosti tokenu (výchozí možnost) a buď vlastní podpisový certifikát tokenu X.509 pro aplikaci předávající strany, nebo podpisový certifikát tokenu pro aplikaci předávající strany nebo podpisový certifikát tokenu pro Access Control oboru názvů.
Přidání aplikace předávající strany s podpisovým certifikátem tokenu oboru názvů Access Control
Inicializace klienta služby správy přidáním následujícího kódu do metody Main ve třídě Program :
ManagementService svc = CreateManagementServiceClient();
Přidejte novou aplikaci předávající strany (můžete ji volat MyRelyingPartyApplication, jak je znázorněno v následujícím kódu), a uložte změny přidáním následujícího kódu do metody Main ve třídě Program :
Poznámka
Nahraďte úplnou cestu k vaší . Soubor PFX v následujícím kódu s platnou úplnou cestou k vašemu certifikátu X.509. Pokud je například certifikát s názvem ACS2ClientCertificate.cer uložen pod C:, správná hodnota je C:\ ACS2ClientCertificate.cer
V kódu níže nahraďte "MyCertificatePassword" správným heslem pro váš certifikát X.509.//Create Relying Party Application RelyingParty relyingParty = new RelyingParty() { Name = "MyRelyingPartyApplication", AsymmetricTokenEncryptionRequired = false, TokenType = "SAML_2_0", TokenLifetime = 3600 }; svc.AddToRelyingParties(relyingParty); //Create the Realm Address RelyingPartyAddress realmAddress = new RelyingPartyAddress() { Address = "http://TestRelyingParty.com/Realm", EndpointType = "Realm" }; svc.AddRelatedObject(relyingParty, "RelyingPartyAddresses", realmAddress); //Create the Return URL Address RelyingPartyAddress replyAddress = new RelyingPartyAddress() { Address = "http://TestRelyingParty.com/Reply", EndpointType = "Reply" }; svc.AddRelatedObject(relyingParty, "RelyingPartyAddresses", replyAddress); // Create a Rule Group for This Relying Party Application RuleGroup rg = new RuleGroup(); rg.Name = "SampleRuleGroup For " + relyingParty.Name; svc.AddToRuleGroups(rg); // Assign This New Rule Group to Your New Relying Party Application RelyingPartyRuleGroup relyingPartyRuleGroup = new RelyingPartyRuleGroup(); svc.AddToRelyingPartyRuleGroups(relyingPartyRuleGroup); svc.AddLink(relyingParty, "RelyingPartyRuleGroups", relyingPartyRuleGroup); svc.AddLink(rg, "RelyingPartyRuleGroups", relyingPartyRuleGroup); //Save Your New Relying Party Application svc.SaveChanges(SaveChangesOptions.Batch);
Přidání aplikace předávající strany s vyhrazeným podpisovým certifikátem tokenu
Inicializace klienta služby správy přidáním následujícího kódu do metody Main ve třídě Program :
ManagementService svc = CreateManagementServiceClient();
Vytvořte pomocnou funkci ReadBytesFromPfxFile pro čtení bajtů z vašeho certifikátu X.509 přidáním následujícího kódu do třídy Program:
//Helper Function to Read Bytes from Your .pfx file public static byte[] ReadBytesFromPfxFile(string pfxFileName, string protectionPassword) { byte[] signingCertificate; using (FileStream stream = File.OpenRead(pfxFileName)) { using (BinaryReader br = new BinaryReader(stream)) { signingCertificate = br.ReadBytes((int)stream.Length); } } return signingCertificate; }
Přidejte novou aplikaci předávající strany (můžete ji volat MyRelyingPartyApplication, jak je znázorněno v následujícím kódu), a uložte změny přidáním následujícího kódu do metody Main ve třídě Program :
Poznámka
Nahraďte úplnou cestu k vaší . Soubor PFX v následujícím kódu s platnou úplnou cestou k vašemu certifikátu X.509. Pokud je například certifikát s názvem ACS2ClientCertificate.cer uložen pod C:, správná hodnota je C:\ ACS2ClientCertificate.cer
V kódu níže nahraďte "MyCertificatePassword" správným heslem pro váš certifikát X.509.//Create Relying Party Application RelyingParty relyingParty = new RelyingParty() { Name = "MyRelyingPartyApplication", AsymmetricTokenEncryptionRequired = false, TokenType = "SAML_2_0", TokenLifetime = 3600 }; svc.AddToRelyingParties(relyingParty); //Create the Realm Address RelyingPartyAddress realmAddress = new RelyingPartyAddress() { Address = "http://TestRelyingParty.com/Realm", EndpointType = "Realm" }; svc.AddRelatedObject(relyingParty, "RelyingPartyAddresses", realmAddress); //Create the Return URL Address RelyingPartyAddress replyAddress = new RelyingPartyAddress() { Address = "http://TestRelyingParty.com/Reply", EndpointType = "Reply" }; svc.AddRelatedObject(relyingParty, "RelyingPartyAddresses", replyAddress); //Create a Signing Certificate X509Certificate2 cert = new X509Certificate2(@"Full path to your .PFX file", "MyCertificatePassword"); DateTime startDate, endDate; startDate = cert.NotBefore.ToUniversalTime(); endDate = cert.NotAfter.ToUniversalTime(); string pfxFileName = @"Full path to your .PFX file"; string pfxPassword = @"MyCertificatePassword"; byte[] signingCertificate = ReadBytesFromPfxFile(pfxFileName, pfxPassword); RelyingPartyKey relyingPartyKey = new RelyingPartyKey() { StartDate = startDate.ToUniversalTime(), EndDate = endDate.ToUniversalTime(), Type = "X509Certificate", Usage = "Signing", IsPrimary = true, Value = signingCertificate, Password = Encoding.UTF8.GetBytes("MyCertificatePassword") }; svc.AddRelatedObject(relyingParty, "RelyingPartyKeys", relyingPartyKey); // Create a Rule Group for This Relying Party Application RuleGroup rg = new RuleGroup(); rg.Name = "SampleRuleGroup For " + relyingParty.Name; svc.AddToRuleGroups(rg); // Assign This New Rule Group to Your New Relying Party Application RelyingPartyRuleGroup relyingPartyRuleGroup = new RelyingPartyRuleGroup(); svc.AddToRelyingPartyRuleGroups(relyingPartyRuleGroup); svc.AddLink(relyingParty, "RelyingPartyRuleGroups", relyingPartyRuleGroup); svc.AddLink(rg, "RelyingPartyRuleGroups", relyingPartyRuleGroup); //Save Your New Relying Party Application svc.SaveChanges(SaveChangesOptions.Batch);