Поделиться через


Практическое руководство. Использование службы управления ACS для настройки AD FS 2.0 в качестве поставщика удостоверений Enterprise

Обновлено: 19 июня 2015 г.

Область применения: Azure

Применяется к

  • Служба контроля доступа Microsoft® Azure™ (ACS)

  • Службы федерации Microsoft Active Directory (AD FS) 2.0

Сводка

В этом разделе объясняется, как добавить поставщика удостоверений в пространство имен или приложение проверяющей стороны. Для выполнения этой задачи можно использовать службу управления ACS. Служба управления особенно полезна при создании пользовательского пользовательского интерфейса для управления ACS и автоматизации добавления новых клиентов для мультитенантных решений saaS.

Содержимое

  • Задачи

  • Обзор

  • Сводка действий

  • Шаг 1. Сбор сведений о конфигурации

  • Шаг 2. Добавление ссылок на требуемые службы и сборки

  • Шаг 3. Реализация прокси-сервера службы управления

  • Шаг 4. Добавление поставщика удостоверений

  • Шаг 5. Тестирование работы

Задачи

  • Определите требования и сведения о конфигурации.

  • Перечислите необходимые шаги.

  • Проверьте успешность выполнения конфигурации.

Обзор

Служба управления ACS — это веб-служба, которая предоставляет функции ACS для кода. Служба управления ACS может получить доступ ко всем функциям ACS, включая подмножество функций, доступное в пользовательском интерфейсе портала управления ACS.

Добавление Корпорации Майкрософт в качестве поставщика удостоверений в ACS позволяет повторно использовать инвестиции, внесенные в управление корпоративными удостоверениями для облачных решений. Чтобы настроить в качестве поставщика удостоверений, необходимо написать код, который выполняет определенные действия. Они описаны в этом разделе.

Сводка действий

  • Шаг 1. Сбор сведений о конфигурации

  • Шаг 2. Добавление ссылок на требуемые службы и сборки

  • Шаг 3. Реализация прокси-сервера службы управления

  • Шаг 4. Добавление поставщика удостоверений

  • Шаг 5. Тестирование работы

Шаг 1. Сбор сведений о конфигурации

Этот шаг описывает сбор обязательных сведений о конфигурации. Необходимо собрать следующие сведения.

  • Имя пользователя удостоверения службы управления. Значение по умолчанию равно ManagementClient.

  • Пароль удостоверения службы управления.

  • Имя пространства имен.

  • Имя узла ACS: accesscontrol.windows.net

  • Строка сертификата подписи. Получите строку сертификата подписи AD FS из развертывания.

Чтобы найти имя пользователя и пароль удостоверения службы управления, выполните следующие действия.

  1. Перейдите на портал управления Microsoft Azure (https://manage.WindowsAzure.com), войдите в систему и щелкните Active Directory. (Совет по устранению неполадок: элемент Active Directory отсутствует или недоступен) Чтобы управлять пространством имен контроль доступа, выберите пространство имен и нажмите кнопку "Управление". (Или щелкните Пространства имен Access Control, выберите пространство имен, а затем щелкните Управление.)

  2. Нажмите Служба управления и выберите службу управления, например ManagementClient.

  3. Значение поля "Имя " — имя пользователя удостоверения службы управления.

  4. В разделе Учетные данные нажмите Пароль. Значение поля "Пароль" является паролем службы управления.

После сбора необходимых сведений выполните следующие действия, чтобы создать пример консольного приложения, которое выполнит код для добавления в качестве поставщика удостоверений:

  1. Запустите Visual Studio и создайте проект консольного приложения.

  2. В классе Программа присвойте значения сведений о конфигурации переменным с модульной областью действия. Следующий образец кода показывает, как это можно сделать.

    static string serviceIdentityUsernameForManagement = "ManagementClient";
    static string serviceIdentityPasswordForManagement = "ManagementClientPasswordValue";
    
    static string serviceNamespace = "MyNameSpaceNoDots";
    static string acsHostName = "accesscontrol.windows.net";
    
    static string signingCertificate = "Very long string representing ADFS signing certificate";
    
    static string cachedSwtToken;
    static string identityProviderName = "My Other ADFS Identity Provider";
    

Шаг 2. Добавление ссылок на требуемые службы и сборки

На этом шаге определяются и добавляются необходимые зависимости от служб и сборок.

Добавление необходимых зависимостей в службах и сборках

  1. Добавьте ссылку на System.Web.Extensions.

  2. Добавьте ссылку на службу управления. URL-адрес службы управления уникален для вашего пространства имен и выглядит следующим образом:

    https:// YOURNAMESPACE.accesscontrol.windows.net/v2/mgmt/service

  3. Добавьте следующие объявления.

    using System.Web; 
    using System.Net; 
    using System.Data.Services.Client; 
    using System.Collections.Specialized; 
    using System.Web.Script.Serialization;
    

Шаг 3. Реализация прокси-сервера службы управления

На этом шаге создается метод, инкапсулирующий реализацию прокси-сервера службы управления.

Реализация прокси-сервера службы управления

  1. Добавьте следующий метод в класс Program.

    public static ManagementService CreateManagementServiceClient()
            {
                string managementServiceHead = "v2/mgmt/service/";
                string managementServiceEndpoint = 
    string.Format("https://{0}.{1}/{2}", 
    serviceNamespace, 
    acsHostName, 
    managementServiceHead);
                ManagementService managementService = 
    new ManagementService(new Uri(managementServiceEndpoint));
    
                managementService.SendingRequest += GetTokenWithWritePermission;
    
                return managementService;
            }
    
  2. Реализуйте метод GetTokenWithWritePermission и его вспомогательные методы. При этом в заголовок авторизации запроса HTTP будет добавлен токен SWT OAuth.

            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, 
     string.Format("OAuth {0}", 
     cachedSwtToken));
            }
    
            private static string GetTokenFromACS()
            {
                // request a token from ACS
                WebClient client = new WebClient();
                client.BaseAddress = string.Format("https://{0}.{1}", 
          serviceNamespace, 
          acsHostName);
    
                NameValueCollection values = new NameValueCollection();
    
                values.Add("grant_type", "password");
                values.Add("client_id", serviceIdentityUsernameForManagement);
                values.Add("username", serviceIdentityUsernameForManagement);
                values.Add("client_secret", serviceIdentityPasswordForManagement);
                values.Add("password", serviceIdentityPasswordForManagement);
    
                byte[] responseBytes = 
    client.UploadValues("/v2/OAuth2-13/rp/AccessControlManagement", 
          "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. Добавление поставщика удостоверений

Этот шаг добавляется в качестве поставщика удостоверений с помощью созданного ранее прокси-сервера службы управления.

Добавление AD FS 2.0 в качестве поставщика удостоверений

  1. Выполните инициализацию прокси-сервера службы управления.

    ManagementService svc = CreateManagementServiceClient();
    
  2. Добавьте свой поставщик удостоверений в качестве издателя.

    Issuer issuer = new Issuer
           {
           Name = identityProviderName
    };
           svc.AddToIssuers(issuer);
           svc.SaveChanges(SaveChangesOptions.Batch);
    
  3. Создайте поставщик удостоверений.

    IdentityProvider identityProvider = new IdentityProvider()
    {
        DisplayName = identityProviderName,
        Description = identityProviderName,
        WebSSOProtocolType = "WsFederation",
        IssuerId = issuer.Id
    };
           svc.AddObject("IdentityProviders", identityProvider);
    
  4. Создайте ключ подписи поставщика удостоверений на основе сертификата, полученного ранее.

    IdentityProviderKey identityProviderKey = new IdentityProviderKey()
    {
        DisplayName = "SampleIdentityProviderKeyDisplayName",
        Type = "X509Certificate",
        Usage = "Signing",
        Value = Convert.FromBase64String(signingCertificate),
        IdentityProvider = identityProvider,
        StartDate = startDate,
        EndDate = endDate,
    };
          svc.AddRelatedObject(identityProvider, 
    "IdentityProviderKeys", 
    identityProviderKey);
    
  5. Обновите адрес для входа поставщика удостоверений.

    IdentityProviderAddress realm = new IdentityProviderAddress()
    {
        Address = "http://SampleIdentityProvider.com/sign-in/",
        EndpointType = "SignIn",
        IdentityProvider = identityProvider,
    };
    svc.AddRelatedObject(identityProvider, "IdentityProviderAddresses", realm);
    
    svc.SaveChanges(SaveChangesOptions.Batch);
    
  6. Сделайте поставщик удостоверений доступным для проверяющих сторон (за исключением службы управления).

    foreach (RelyingParty rp in svc.RelyingParties)
    {
        // skip the built-in management RP. 
        if (rp.Name != "AccessControlManagement")
        {
            svc.AddToRelyingPartyIdentityProviders(new RelyingPartyIdentityProvider()
            {
                IdentityProviderId = identityProvider.Id,
                RelyingPartyId = rp.Id
            });
        }
    }
    
    svc.SaveChanges(SaveChangesOptions.Batch);
    

Шаг 5. Тестирование работы

Проверка работы

  1. На странице Служба контроля доступа щелкните ссылку Группы правил в разделе Отношения доверия.

  2. Щелкните любое из доступных правил.

  3. На странице Изменение группы правил щелкните ссылку Добавить правило.

  4. На странице Добавление правила утверждения выберите добавленный поставщик удостоверений из списка в разделе Издатель утверждений.

  5. Оставьте для других параметров значения по умолчанию.

  6. Выберите команду Сохранить.

Вы создали сквозное правило для поставщика удостоверения.