Основы разработки с Access Control Service 2.0



PBC203ILLЛабораторная работаОсновы разработки с Access Control Service 2.0Содержание TOC \o "1-3" \h \z \u 1.Обзор лабораторной работы PAGEREF _Toc306798815 \h 31.1.Описание PAGEREF _Toc306798816 \h 31.2. Цели PAGEREF _Toc306798817 \h 41.3. Системные требования PAGEREF _Toc306798818 \h 41.4. Настройка PAGEREF _Toc306798819 \h 41.5. Использование фрагментов кода PAGEREF _Toc306798820 \h 51.6. Упражнения PAGEREF _Toc306798821 \h 52. Упражнение 1: настройка аутентификации через несколько провайдеров входа PAGEREF _Toc306798822 \h 52.1. Задание 1: создание начального решения PAGEREF _Toc306798823 \h 52.2. Задание 2: создание ACS PAGEREF _Toc306798824 \h 102.3. Задание 3: настройка провайдеров входа PAGEREF _Toc306798825 \h 122.4. Задание 4: настройка веб-сайта PAGEREF _Toc306798826 \h 202.5. Задание 5: проверка PAGEREF _Toc306798827 \h 253. Упражнение 2: создание правил авторизации для вашего приложения PAGEREF _Toc306798828 \h 273.1. Задание 1: визуализация утверждений из токена PAGEREF _Toc306798829 \h 273.2. Задание 2: создание правил авторизации PAGEREF _Toc306798830 \h 303.3. Задание 3: добавление авторизации в веб-приложение PAGEREF _Toc306798831 \h 313.4. Задание 4: проверка PAGEREF _Toc306798832 \h 334. Упражнение 3: кастомизация UI выбора провайдеров входа PAGEREF _Toc306798833 \h 344.1. Задание 1: размещение страницы входа в рамках веб-приложения PAGEREF _Toc306798834 \h 344.2. Задание 2: проверка PAGEREF _Toc306798835 \h 395. Заключение PAGEREF _Toc306798836 \h 40Внимание: Для выполнения данной лабораторной работы необходима учетная запись Windows AzureВсе описанные в данном документе материалы находятся в каталоге C:\WAPTK\Labs\IntroToACS2\Пароль для входа в систему: Passw0rd!Обзор лабораторной работыОписание Соединение приложения с пользователями является базовой задачей любого решения, не зависимого от того, находится ли оно в облаке или локально.Развивающиеся стандарты помогают решить данную сложную задачу, в которой обычно пользователи зарегистрированы на разных сайтах, под разными именами. Тем не менее, задача приема пользователей с разных сайтов остается непростой в силу вариации протоколов и их версий. Сегодня вы хотите открыть вашему приложению доступ к пользователям с Facebook, Live ID, Google и бизнес организации, что требует изучения и имплементации 4х различных протоколов. Изменения происходят часто и быстро – вам необходимо поддерживать последнею версию механизма аутентификации. Все это отнимает определенное количество энергии, которое могло быть потрачено на более важные вещи – разработку нового функционала приложения.Рисунок 1Функциональная схема сервиса контроля доступаAppFabric Access Control Service (ACS) предоставляет вам возможность абстрагироваться от сложной разработки и поддержки различных протоколов провайдеров входа. ACS берет на себя всю работу по взаимодействию с провайдерами и нормализации результатов от них, предоставляя их в унифицированном виде, поддерживаемом .Net Framework (по большей части WIF). WIF позволяет вам в несколько кликов добавить менеджер аутентификации в ваше приложение, в том время ACS берет на себя ответственность за все, начиная с предоставления UI для выбора провайдера входа.В данной лабораторной работе вы научитесь использовать ACS в качестве менеджера входа для разных провайдеров, поймете насколько просто это можно сделать. Проще, чем объяснить это тут. 1.2. ЦелиВ данной лабораторной работе вы узнаете как:Настроить ваше приложение на использование ACS Настроить провайдеры входа в ACSНастроить правила и удостоверения в ACSДобавить в ваше приложение сценарий авторизацииКастомизировать UI выбора провайдеров входа1.3. Системные требованияДля успешного выполнения лабораторной работы вам необходимо следующее:Microsoft? Windows? Vista SP2 (32-bits or 64-bits) , Microsoft? Windows Server 2008 SP2 (32-bits or 64-bits), Microsoft? Windows Server 2008 R2, or Microsoft? Windows? 7 RTM (32-bits or 64-bits)Microsoft? Internet Information Services (IIS) 7.0Microsoft? .NET Framework 4Microsoft? Visual Studio 2010Microsoft? Windows Identity Foundation RuntimeMicrosoft? Windows Identity Foundation SDKMicrosoft? Windows PowerShell1.4. НастройкаНеобходимо выполнить следующие шаги для подготовки вашего компьютера к лабораторной работе:Открыть в Windows Explorer папкуC:\WAPTK\Labs\IntroToACS2\Source\SetupЗапустить двойным кликом мышки файл Dependencies.dep, который установит все необходимые для лабораторной работы компоненты и настройки. Заметка: Данная процедура может потребовать привилегированного режима запуска. Формат .dep ассоциирован с инструментом Dependency Checker во время установки. Дополнительную информацию, относящуюся к установке можно найти в Setup.docx в папке Assets тренировочного комплекта.1.5. Использование фрагментов кодаВ ходе выполнения работы вам необходимо будет вставлять блоки кода. Для вашего удобства большая часть кода предоставлена в виде Visual Studio Code Snippets, которые вы можете использовать из Visual Studio 2010, не вставляя код вручную. Если вы не знакомы с Visual Studio Code Snippets и хотите узнать как их использовать, необходимую информацию можно найти в Setup.docx в папке Assets тренировочного комплекта.1.6. УпражненияВ ходе данной лабораторной работы вы выполните следующие упражнения:Настройка аутентификации через несколько провайдеров входаСоздание правил авторизации для вашего приложенияКастомизация UI выбора провайдеров входа 2. Упражнение 1: настройка аутентификации через несколько провайдеров входаВ данном упражнении мы познакомитесь с основами ACS. Ваша задача добавить контроль доступа на только что созданный веб-сайт. Он будет принимать пользователей с Google, Yahoo! и Live ID. 2.1. Задание 1: создание начального решенияЗапустить Visual Studio 2010 в привилегированном режимеОткрыть пустое решение WebSiteACS.sln из папки Source\Ex01-AcceptUsersFromMultipleIPs\Begin.Создать новый веб-сайт ( Web Site) и указать путь .Рисунок SEQ Figure \* ARABIC 1Добавление нового веб-сайтаУдалите следующие папки из проекта: AccountScriptsДобавьте следующие файлы:About.aspxGlobal.asaxРисунок 3Структура проектаОткройте Site.master и удалите DIV с именем класса “loginDisplay” и NavigationMenu контрол....<div class="page"> <div class="header"> <div class="title"> <h1> My Application </h1> </div> <div class="loginDisplay"> <asp:LoginView ID="HeadLoginView" runat="server" EnableViewState="false"> <AnonymousTemplate> [ <a href="~/Account/Login.aspx" ID="HeadLoginStatus" runat="server">Log In</a> ] </AnonymousTemplate> <LoggedInTemplate> Welcome <span class="bold"><asp:LoginName ID="HeadLoginName" runat="server" /></span>! [ <asp:LoginStatus ID="HeadLoginStatus" runat="server" LogoutAction="Redirect" LogoutText="Log Out" LogoutPageUrl="~/"/> ] </LoggedInTemplate> </asp:LoginView> </div> <div class="clear hideSkiplink"> <asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false" IncludeStyleBlock="false" Orientation="Horizontal"> <Items> <asp:MenuItem NavigateUrl="~/Default.aspx" Text="Home"/> <asp:MenuItem NavigateUrl="~/About.aspx" Text="About"/> </Items> </asp:Menu> </div></div>...Код должен выглядеть следующим образом:...<div class="page"> <div class="header"> <div class="title"> <h1> My Application </h1> </div> <div class="clear hideSkiplink"> </div> </div>...Откройте Web.config и удалите следующие секции:connectionStringssystem.web/authenticationsystem.web/membershipsystem.web/profilesystem.web/roleManagerWeb.config должен выглядеть следующим образом.XML<?xml version="1.0"?><!-- For more information on how to configure your application, please visit --><configuration> <system.web> <compilation debug="false" targetFramework="4.0" /> </system.web> <system.webServer> <modules runAllManagedModulesForAllRequests="true"/> </system.webServer></configuration>Нажмите F5 и убедитесь в том, что все правильно работает. Если вас спросят про режим отладки, выберите “Modify the Web.config file to enable debugging”.Рисунок SEQ Figure \* ARABIC 2Режим отладкиРисунок SEQ Figure \* ARABIC 3Запущенное приложениеВеб-сайт работает без какой либо системы контроля доступа.2.2. Задание 2: создание ACSВ данном задании необходимо создать ACS. Для этого перейдите на и войдите с помощью Live ID.Выберите вкладку Service Bus, Access Control & CachingРисунок SEQ Figure \* ARABIC 4 Access Control Service порталСоздайте новое пространство имен Access Control Service Namespace. Это уникальный адрес, по которому будут доступны все ваши точки доступа. Для этого выберите AppFabric и нажмите кнопку New Namespace.Рисунок SEQ Figure \* ARABIC 5Создание пространства именВ диалоге укажите уникальное имя пространства имен и выберите регион.Рисунок SEQ Figure \* ARABIC 6Диалог создания нового пространства именПожалуйста, дождитесь момента, когда инициализация будет закончена.Рисунок SEQ Figure \* ARABIC 7Активация пространства имен2.3. Задание 3: настройка провайдеров входаВыберите созданное пространство имен и нажмите Access Control Service – Manage. Рисунок SEQ Figure \* ARABIC 8Меню управления пространствами именДанная операция откроет портал управления вашим пространством имен Access Control Service Management Portal. Рисунок SEQ Figure \* ARABIC 9Портал управления Access Control ServiceПортал управления позволяет выполнять различные настройки сервиса, такие как провайдеры входа и правила. Перейдите в меню управления провайдерами входа Identity Providers. Рисунок 12Провайдеры входаНажмите Add того чтобы добавить, выберите yahoo! и нажмите Next. Windows Live ID идет по умолчанию. Рисунок SEQ Figure \* ARABIC 10Добавление провайдера входаОставьте стандартные настройки и нажмите Save.Рисунок SEQ Figure \* ARABIC 11Страница настройки провайдераВыполните все те же самые шаги для добавления Google. Рисунок SEQ Figure \* ARABIC 12Финальный список провайдеров входаПерейдите в меню Relying Party Applications для регистрации вашего веб-сайта.Регистрация SEQ Figure \* ARABIC 13Relying Party приложенияНажмите Add, заполните форму следующим образом:Name: WebSiteACSMode: Enter settings manuallyRealm: URL: URL: Token format: SAML 1.1Token encryption policy: NoneToken lifetime (secs): 600Identity Providers: Google, Windows Live ID, Yahoo! Rule groups: Create New Rule GroupToken signing: Use service namespace certificate (standard)Рисунок SEQ Figure \* ARABIC 14Добавление Relying Party приложенияНажмите Save.Перейдите в меню Rule Groups для создания правил преобразования для вашего приложения.Рисунок SEQ Figure \* ARABIC 15Группы правил Рисунок SEQ Figure \* ARABIC 16ACS получает токены от разных систем в разных форматах. После этого он нормализует данные и отправляет их в настроенном формате вашему приложению Выберите Default Rule Group for WebSiteACS и нажмите Generate. Затем выберите все три провайдера и нажмите Generate. ACS создаст стандартные правила преобразования. Нажмите Save.Рисунок SEQ Figure \* ARABIC 17Создание правилРисунок SEQ Figure \* ARABIC 18Стандартные правила созданыПерейдите в меню Integration, которое содержите необходимую информацию для настройки вашего приложения.Скопируйте путь до файла WS-Federation Metadata. Он понадобится для настройки приложения.Рисунок SEQ Figure \* ARABIC 19Сохранение ссылки WS-Federation Metadata2.4. Задание 4: настройка веб-сайтаТеперь мы готовы к настройке приложения на прием токенов от ACS. Для этого выберите проект, нажмите на него правой кнопкой и запустите мастер Add STS Reference. Все необходимые настройки находятся в файле Metadata, путь к которому мы скопировали. Пожалуйста, пройдите все шаги Federation Utility, заполнив их правильным образом.На первой странице нажмите Next, используя автоматически заполненные настройки.Рисунок SEQ Figure \* ARABIC 20Первый экран Federation UtilityНа втором экране выберите опцию "Use an existing STS" и укажите путь до файла с мета данными. Нажмите Next.Рисунок SEQ Figure \* ARABIC 21Указываем путь до мета данныхНа странице STS signing certificate chain validation error укажите опцию Disable certificate chain validation и нажмите Next.Рисунок SEQ Figure \* ARABIC 22Опции проверки сертификатаНа странице Security token encryption выберите опцию No encryption и нажмите Next.Рисунок SEQ Figure \* ARABIC 23Шифрование токеновНа странице Offered claims нажмите Next.Рисунок SEQ Figure \* ARABIC 24Предоставленные утвержденияНа странице Summary нажмите Finish.2.5. Задание 5: проверкаНастало время проверить работоспособность нашего приложения. Для этого выполните следующие шаги:Запустите отладку нажатием F5.Выберите провайдер входа.Рисунок SEQ Figure \* ARABIC 25Выбор провайдера входаВведите свой логин и пароль, аутентифицируйтесь.Рисунок SEQ Figure \* ARABIC 26Вход через Live IDПосле успешного входа в Live ID вы попадете на ACS, который выполнит все необходимые действия, создаст новый токен и перенаправит вас с ним на веб-приложение.Процесс полностью прозрачен для пользователя, позволяет вам хорошо защитить ваше веб-приложение и всегда знать кто находится на страничке.Рисунок SEQ Figure \* ARABIC 27Пользователь аутентифицирован3. Упражнение 2: создание правил авторизации для вашего приложенияВ первом упражнение идет фокус на предоставлении возможности входа в ваше приложение через разные провайдеры. В данном упражнении мы уделим детальное внимание тому, что можно сделать с утверждениями, которые получаются в рамках токенов. В качестве примера будет рассмотрен сценарий авторизации.Задача очень простая – присвоить пользователю определенные права, которые будут использоваться сайтом для авторизации.3.1. Задание 1: визуализация утверждений из токенаWIF делает прекрасную работу по обработке всех низкоуровневых операциях. Перед тем как добавлять новые утверждения в токен давайте посмотрим, какие данные получает приложение в данный момент от ACS. Для этого используем отладочный компонент, который визуализирует данные. Скопируется готовое решение Ex01 в Source\Ex02-EasyAuthorizationWithACS\Begin.Рисунок SEQ Figure \* ARABIC 28Копирование решенияЗапустите Visual Studio 2010 в привилегированном режиме.Откройте скопированное решение WebSiteACS.sln из папки Source\Ex02-EasyAuthorizationWithACS\Begin.Откройте файл Default.aspx.Из Visual Studio Toolbox добавьте Security Token Visualizer Control на вашу страницу:Рисунок SEQ Figure \* ARABIC 29Security Token Visualizer Control in <cc1:SecurityTokenVisualizerControl ID="SecurityTokenVisualizerControl1" runat="server" />Откройте Web.config и добавьте следующую опцию saveBootstrapTokens в атрибут service в секцию microsoft.identityModel:XML<microsoft.identityModel> <service saveBootstrapTokens="true"> <audienceUris>Запустите отладку нажатием F5. Пройдите по той же цепочке входа, что и в первом упражнении.Раскройте Security Token Visualizer Control.Рисунок SEQ Figure \* ARABIC 30Security Token Visualizer Control Как мы видим токен содержит различную информацию: откуда пользователь пришел (провайдер входа), его уникальный идентификатор в этой системе, время издания токена и т.д. Сохраните утверждение nameidentifier. Оно может меняться в зависимости от выбранного провайдера, даже если используется аккаунт с одинаковым почтовым адресом.Рисунок SEQ Figure \* ARABIC 31Копируем nameidentifier утверждение3.2. Задание 2: создание правил авторизацииПерейдите на портал управления ACS (см. Упражнение 1). Перейдите в раздел Rule Groups.Рисунок SEQ Figure \* ARABIC 32Группы правилВыберите группу Default Rule Group for WebSiteACS.Нажмите Add для создания нового правила.Внесите следующие значения:If…Claim issuer / Identity Provider: Windows Live ID(And) Input claim type / Select type: (And) Input claim value / Enter value: сохраненный идентификаторThen…Output claim type / Enter type: claim value / Enter value: AdministratorRule informationDescription: Administrator claim ruleРисунок SEQ Figure \* ARABIC 33Добавление правилаНажмите Save.3.3. Задание 3: добавление авторизации в веб-приложениеТеперь после того как добавлено новое правило, приложение будет получать токены, содержащие дополнительную информацию о роли. Давайте добавим секретный контент на нашу страницу.Добавьте в файл Styles\Site.css следующий код:CSS.secretContent{ border-style: solid; background-color: Red; padding: 5px; color: White;}Откройте страницу Default.aspx и добавьте следующий Panel контрол:<p> You can also find <a href="" title="MSDN Docs">documentation on at MSDN</a>.</p> <asp:Panel Visible="false" CssClass="secretContent" runat="server" ID="SecretContent"> Secret Content (Only administrators can access this section)</asp:Panel><cc1:SecurityTokenVisualizerControl ID="SecurityTokenVisualizerControl1" runat="server" />Откройте Default.aspx.cs и добавьте следующее пространство имен: (Code Snippet – Introduction to AppFabric AC Lab - Ex02 Default.aspx.cs Usings – C#)C#using System.Threading;Добавьте следующий код в тело функции Page_Load: (Code Snippet – Introduction to AppFabric AC Lab - Ex02 Page_Load – C#)C#if (Thread.CurrentPrincipal.IsInRole("Administrator")){ this.SecretContent.Visible = true;}3.4. Задание 4: проверкаДля того чтобы проверить работоспособность нашего приложения выполните следующие шаги:Запустите отладку приложения F5.Войдите через Live ID, используя тот же аккаунт.Теперь вы должны увидеть секретный контент, который показан вам, как пользователю с правами администратора.Рисунок SEQ Figure \* ARABIC 34Секретный контентЗакройте браузер.Запустит снова отладку F5.Аутентифицируйтесь, используя другой Live ID аккаунт.Секретный контент больше не будет виден.Рисунок SEQ Figure \* ARABIC 35Секретный контент больше не виден4. Упражнение 3: кастомизация UI выбора провайдеров входаСуществуют различные сценарии, в которых вы хотите предоставлять пользователям свою страницу выбора провайдера входа. Например, это может быть нужно в случае, если вы хотите сделать какие-то страницы доступными не аутентифицированным пользователям. В последнем упражнение мы посмотрим, как просто это можно сделать.4.1. Задание 1: размещение страницы входа в рамках веб-приложенияСкопируйте готовое решение Ex02 в папку Source\Ex03-CustomSignInExperience\Begin.Рисунок SEQ Figure \* ARABIC 36Копирование законченного упражненияПерейдите на портал управления ACS.Перейдите в раздел Application Integration. Рисунок SEQ Figure \* ARABIC 37Application IntegrationВыберите ваше приложение (WebSiteACS).Рисунок SEQ Figure \* ARABIC 38Login Page IntegrationВ опции Option 2: Host the login page as part of your application нажмите Download Example Login Page.Рисунок SEQ Figure \* ARABIC 39Login Page IntegrationСохраните HTML в %SystemDrive%\inetpub\wwwroot\WebSiteACS.Запустите Visual Studio 2010 в привилегированном режим.Откройте WebSiteACS.sln из папки Source\Ex03-EasyAuthorizationWithACS\Begin.Добавьте в веб-сайт (Add Existing Item) скаченный HTML.Откройте добавленный файл.Замените у DIV с ID=“Banner” текст “Sign in to WebSiteACS” на “My custom login page for WebSiteACS”.HTML<div id="Main" style="display:none"> <div id="Banner" class="Banner"><b>My custom login page for WebSiteACS</b></div>Перейдите в секцию <style> и обновите следующие записи:div.SignInContentwidth: 1020px;height: 170px;div.Bannerwidth: 1020px;background: none repeat scroll 0 0 #4B6C9E;color: #F9F9F9;div.LeftAreawidth: 960px;CSS классы должны выглядеть следующим образом:CSSdiv.SignInContent{ text-align: center; margin-left: auto; margin-right: auto; border: solid 1px #BBBBBB; position: relative; width: 1020px; height: 170px;}div.Banner{ padding-top:10px; padding-bottom:10px; text-align: center; margin-left: auto; margin-right: auto; background: none repeat scroll 0 0 #4B6C9E; color: #F9F9F9; border-top: solid 1px #BBBBBB; border-left: solid 1px #BBBBBB; border-right: solid 1px #BBBBBB; width: 1020px;}div.LeftArea{ padding:15px 15px; width: 960px; height: 100%; position: absolute; top: 0px; left: 0px;}Откройте Web.config.Добавьте следующие настройки в раздел <configuration>: (Code Snippet – Introduction to AppFabric AC Lab - Ex03 Location - XML)XML<configuration> <configSections> ... </configSections> <location path="WebSiteACSLoginPageCode.html"> <system.web> <authorization> <allow users="*"/> </authorization> </system.web> </location> <location path="FederationMetadata"> … </location>В разделе microsoft.identityModel/service/federatedAuthentication/wsFederation обновите поле издателя на “”. Web.config должен выглядеть следующим образом.XML<microsoft.identityModel> <service saveBootstrapTokens="true"> ... <federatedAuthentication> <wsFederation passiveRedirectEnabled="true" issuer="" realm="" requireHttps="true"/> <cookieHandler requireSsl="true"/> </federatedAuthentication>Сохраните Web.config.4.2. Задание 2: проверкаДля того чтобы проверить работоспособность приложения выполните следующие шаги:Запустите отладку F5.Выберите предпочтительный провайдер входа и аутентифицируйтесь.Рисунок SEQ Figure \* ARABIC 40Кастомизированная страница входа5. Заключение В ходе данной лабораторной работы вы узнали как:Настроить аутентификацию через несколько провайдеров входаСоздать правила авторизации для вашего приложенияКастомизировать UI выбора провайдеров входа Данная лабораторная работа показывает базовые возможности и идеи, которые можно легко развить в ваших приложениях. ACS предоставляет приложениям удобный доступ к пользователям из разных систем входа, таким как Facebook, Google, Yahoo! И Live ID. Он имеет богатый набор возможностей для интеграции не только с сайтами, но и сервисами и другими партнерами входа. Выполнять продвинутые операции можно с помощью специального API. ................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download