Инструкции по использованию службы управления ACS для настройки AD FS 2.0 в качестве поставщика удостоверений организации
TOC
Свернуть оглавление
Развернуть оглавление
Документ заархивирован, и сведения могли устареть

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

Опубликовано: Апрель 2011 г.

Обновлено: Июнь 2015 г.

Назначение: Azure

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

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

Этот раздел описывает способы добавления поставщика удостоверений в пространство имен или в приложение проверяющей стороны. Чтобы выполнить эту задачу, можно Служба управления доступом службу управления. Служба управления особенно полезна при создании пользовательского интерфейса для управления Служба управления доступом и при автоматизации добавления новых владельцев для мультитенантных решений типа "программное обеспечение как услуга" (SaaS).

  • Цели

  • Обзор

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Имя узла сервера управления доступом: accesscontrol.windows.net

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

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

  1. Перейдите на портал управления Microsoft Azure, выполните вход и щелкните Active Directory. (Совет по устранению неполадок. Элемент "Active Directory" отсутствует или недоступен) Для выполнения управления пространством имен Access Control выберите пространство имен и щелкните Управление. (Или щелкните Пространства имен Access Control, выберите пространство имен, а затем щелкните Управление.)

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

  3. Значение поля ИмяManagement Service identity username.

  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";
    
    
    

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

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

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

    https://ВАШЕПРОСТРАНСТВОИМЕН.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;
    
    

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

  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;
    
            }
    
    

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

  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);
    
    

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

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

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

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

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

  6. Нажмите кнопку Сохранить.

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

Показ:
© 2016 Microsoft