Экспорт (0) Печать
Развернуть все
Развернуть Свернуть

Инструкции использованию службы управления ACS для настройки поставщика интернет-удостоверений Facebook

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

Обновлено: Март 2015 г.

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

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

  • Facebook

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

  • Цели

  • Обзор

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

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

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

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

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

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

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

  • Перечислить действия, необходимые для добавления Facebook в качестве поставщика удостоверений.

  • Проверить правильность настройки.

Служба управления — это веб-служба, один из основных компонентов Служба управления доступом. Служба управления предоставляет возможности, доступные в пользовательском интерфейсе портала управления. Все, что можно сделать на портале управления, также можно сделать через службу управления. Если добавить Facebook как поставщик удостоверений в Служба управления доступом, вам не придется разрабатывать и поддерживать механизм управления удостоверениями для веб-приложений и сайтов. Чтобы настроить Facebook как поставщик удостоверений, необходимо написать код, выполняющий определенные действия. Они описаны в этом разделе.

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

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

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

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

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

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

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

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

    1. Войдите в портал управления службами управления доступом.

    2. В разделе Администрирование щелкните ссылку Служба управления.

    3. На странице Служба управления щелкните ссылку ManagementClient (ManagementClient — это фактическое имя пользователя для службы).

    4. В разделе Учетные данные щелкните ссылку Симметричный ключ или Пароль. Значение в обоих разделах одинаковое. Это и есть пароль.

  • Пространство имен вашей службы

  • Имя узла ACS — обычно это accesscontrol.windows.net.

  • Код и секрет приложения Facebook — следуйте инструкциям в разделе Инструкции Настройка Facebook в качестве поставщика удостоверений.

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

  1. Откройте среду Visual Studio® 2010 и создайте новый проект консольного приложения.

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

static string serviceIdentityUsernameForManagement = "ManagementClient";
static string serviceIdentityPasswordForManagement = "My Password for my ManagementClient";

static string serviceNamespace = "MyNameSpaceNoDots";
static string acsHostName = "accesscontrol.windows.net";
static string acsManagementServicesRelativeUrl = "v2/mgmt/service/";


static string cachedSwtToken;
static string identityProviderName = "Facebook";

static string facebookAppId = "Your Facebook AppID";
static string facebookAppSecret = "Your Facebook Secret";

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

  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;
    using System.Globalization;
    using System.Runtime.Serialization.Json;
    using ConsoleApplication1.ServiceReference1;
    
    

Обратите внимание на последнее объявление, ConsoleApplication1.ServiceReference1, оно может отличаться, если вы изменили значения по умолчанию при создании консольного приложения или добавлении ссылки на службу управления.

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

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

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

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

  1. Инициализируйте прокси-сервер службы управления в методе Main.

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

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

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

    var facebookKeys = new[]
        {
            new IdentityProviderKey
                {
                    IdentityProvider = facebook,
                    StartDate = DateTime.UtcNow,
                    EndDate = DateTime.UtcNow.AddYears(1),
                    Type = "ApplicationKey",
                    Usage = "ApplicationId",
                    Value = Encoding.UTF8.GetBytes(facebookAppId)
                },
            new IdentityProviderKey
                {
                    IdentityProvider = facebook,
                    StartDate = DateTime.UtcNow,
                    EndDate = DateTime.UtcNow.AddYears(1),
                    Type = "ApplicationKey",
                    Usage = "ApplicationSecret",
                    Value = Encoding.UTF8.GetBytes(facebookAppSecret)
                }
        };
    
    foreach (var key in facebookKeys)
    {
        svc.AddRelatedObject(facebook, "IdentityProviderKeys", key);
    }
    
    svc.SaveChanges(SaveChangesOptions.Batch);
    
    
  5. Сделайте поставщик удостоверений доступным для проверяющих сторон (за исключением службы управления).

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

  1. Войдите в портал управления службами управления доступом.

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

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

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

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

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

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

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

Добавления сообщества

ДОБАВИТЬ
Показ:
© 2015 Microsoft