Образец федерации
В данном образце демонстрируется федеративная безопасность.
Подробные сведения об образце
В Windows Communication Foundation (WCF) предусмотрена поддержка развертывания архитектуры федеративной безопасности с помощью wsFederationHttpBinding. Привязка wsFederationHttpBinding обеспечивает наличие безопасной и надежной привязки, которая поддерживает возможность взаимодействия. Данная привязка предполагает использование протокола HTTP в качестве базового транспортного механизма для взаимодействия типа «запрос-ответ» и текста/XML в качестве формата подключения для кодирования. Дополнительные сведения о федерации в WCF см. в разделе Федерация.
Сценарий состоит из 4 частей:
служба BookStore;
служба маркеров безопасности BookStore;
служба маркеров безопасности HomeRealm;
клиент BookStore.
Служба BookStore поддерживает две операции: BrowseBooks
и BuyBook
. Служба позволяет выполнять анонимный доступ к операции BrowseBooks
, но требует доступ с проверкой подлинности к операции BuyBooks
. Проверка подлинности принимает форму маркера, выданного службой маркеров безопасности BookStore. Файл конфигурации службы BookStore указывает клиентам на службу маркеров безопасности BookStore с помощью wsFederationHttpBinding.
<wsFederationHttpBinding>
<!-- This is the Service binding for the BuyBooks endpoint. It redirects clients to the BookStore STS -->
<binding name='BuyBookBinding'>
<security mode="Message">
<message>
<issuerMetadata
address='https://localhost/FederationSample/BookStoreSTS/STS.svc/mex' >
<identity>
<dns value ='BookStoreSTS.com'/>
</identity>
</issuerMetadata>
</message>
</security>
</binding>
</wsFederationHttpBinding>
Затем служба маркеров безопасности BookStore требует, чтобы проверка подлинности клиента выполнялась с помощью маркера, выданного службой маркеров безопасности HomeRealm. И снова файл конфигурации службы маркеров безопасности BookStore указывает клиентам на службу маркеров безопасности HomeRealm с помощью wsFederationHttpBinding.
<wsFederationHttpBinding>
<!-- This is the binding for the clients requesting tokens from this STS. It redirects clients to the HomeRealm STS -->
<binding name='BookStoreSTSBinding'>
<security mode='Message'>
<message>
<issuerMetadata
address='https://localhost/FederationSample/HomeRealmSTS/STS.svc/mex' >
<identity>
<dns value ='HomeRealmSTS.com' />
</identity>
</issuerMetadata>
</message>
</security>
</binding>
</wsFederationHttpBinding>
Ниже приведена последовательность событий при получении доступа к операции BuyBook
.
Клиент проходит проверку подлинности в службе маркеров безопасности HomeRealm с использованием учетных данных Windows.
Служба маркеров безопасности HomeRealm выдает маркер, который может использоваться для проверки подлинности в службе маркеров безопасности BookStore.
Клиент проходит проверку подлинности в службе маркеров безопасности BookStore с использованием маркера, выданного службой маркеров безопасности HomeRealm.
Служба маркеров безопасности BookStore выдает маркер, который может использоваться для проверки подлинности в службе BookStore.
Клиент проходит проверку подлинности в службе BookStore с использованием маркера, выданного службой маркеров безопасности BookStore.
Клиент получает доступ к операции
BuyBook
.
В приведенных ниже инструкциях описаны настройка и запуск данного образца.
Примечание |
---|
Для запуска этого образца необходимо разрешение на запись в каталог wwwroot. |
Настройка, построение и выполнение образца
Откройте окно командной строки пакета SDK. Выполните Setup.bat в пути образца. При этом будут созданы требуемые для образца виртуальные каталоги и установлены необходимые сертификаты с соответствующими разрешениями.
Примечание Пакетный файл Setup.bat предназначен для запуска из командной строки Windows SDK. Требуется, чтобы переменная среды MSSDK указывала на каталог, в котором установлен пакет SDK. Эта переменная среды автоматически устанавливается в командной строке Windows SDK. При работе в Windows Vista необходимо удостовериться, что установлен пакет совместимости управления IIS 6.0, поскольку в процессе установки используются сценарии администратора IIS. Для запуска скрипта установки в Windows Vista требуются права администратора. Откройте файл FederationSample.sln в Visual Studio и выберите команду Построить решение из меню Построение. При этом будут построены и развернуты в IIS общие файлы проекта, служба Bookstore, служба маркеров безопасности Bookstore, служба маркеров безопасности HomeRealm. Кроме того, при этом будет построено клиентское приложение Bookstore. Его исполняемый файл BookStoreClient.exe будет размещен в папке FederationSample\BookStoreClient\bin\Debug.
Дважды щелкните BookStoreClient.exe. Отобразится окно BookStoreClient.
Можно просматривать книги, имеющиеся в книжном магазине, нажав кнопку Просмотр книг.
Для того чтобы купить какую-либо конкретную книгу, выберите книгу из списка и щелкните Купить книгу. Приложение запустится и пройдет проверку подлинности с использованием проверки подлинности Windows со службой маркеров безопасности HomeRealm.
Конфигурация данного образца позволяет пользователям приобретать книги, которые стоят 15 долларов США или меньше. Попытка приобрести книгу, стоимость которой превышает 15 долларов США, приводит к тому, что клиент получает сообщение «Доступ запрещен» от службы Book Store.
Примечание В данном образце кредитный лимит пользователя после покупки не обновляется. Можно повторно приобрести книги на сумму в пределах пользовательского (фиксированного) кредитного лимита.
Очистка
- Запустите Cleanup.bat. При этом будут удалены виртуальные каталоги и сертификаты, созданные во время установки.
Примечание |
---|
Образцы уже могут быть установлены на компьютере. Перед продолжением проверьте следующий каталог (по умолчанию).
<диск_установки>:\WF_WCF_Samples
Если этот каталог не существует, перейдите на страницу Образцы Windows Communication Foundation (WCF) и Windows Workflow Foundation (WF) для .NET Framework 4, чтобы загрузить все образцы Windows Communication Foundation (WCF) и WF. Этот образец расположен в следующем каталоге.
<диск_установки>:\WF_WCF_Samples\WCF\Scenario\Federation
|