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


Пример федерации

В примере федерации показана федеративная безопасность.

Подробные сведения об образце

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='http://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='http://localhost/FederationSample/HomeRealmSTS/STS.svc/mex' >
                    <identity>
                        <dns value ='HomeRealmSTS.com' />
                    </identity>
                </issuerMetadata>
            </message>
        </security>
    </binding>
</wsFederationHttpBinding>

Ниже приведена последовательность событий при получении доступа к операции BuyBook.

  1. Клиент проходит проверку подлинности в службе маркеров безопасности HomeRealm с использованием учетных данных Windows.

  2. Служба маркеров безопасности HomeRealm выдает маркер, который может использоваться для проверки подлинности в службе маркеров безопасности BookStore.

  3. Клиент проходит проверку подлинности в службе маркеров безопасности BookStore с использованием маркера, выданного службой маркеров безопасности HomeRealm.

  4. Служба маркеров безопасности BookStore выдает маркер, который может использоваться для проверки подлинности в службе BookStore.

  5. Клиент проходит проверку подлинности в службе BookStore с использованием маркера, выданного службой маркеров безопасности BookStore.

  6. Клиент получает доступ к операции BuyBook.

В приведенных ниже инструкциях описаны настройка и запуск данного образца.

Примечание.

Для выполнения этого примера необходимо иметь разрешения на запись в каталог wwwroot .

Настройка, сборка и выполнение образца

  1. Откройте окно командной строки SDK. Выполните Setup.bat в пути образца. При этом будут созданы требуемые для образца виртуальные каталоги и установлены необходимые сертификаты с соответствующими разрешениями.

    Примечание.

    Пакетный файл Setup.bat предназначен для запуска из командной строки Windows SDK. Требуется, чтобы переменная среды MSSDK указывала на каталог, в котором установлен пакет SDK. Эта переменная среды автоматически устанавливается в командной строке Windows SDK. В Windows Vista необходимо убедиться, что совместимость управления IIS 6.0 установлена, так как настройка использует сценарии администратора IIS. Для запуска скрипта настройки в Windows Vista требуются права администратора.

  2. Откройте FederationSample.sln в Visual Studio и выберите " Создать решение " в меню "Сборка ". При этом будут построены и развернуты в IIS общие файлы проекта, служба Bookstore, служба маркеров безопасности Bookstore, служба маркеров безопасности HomeRealm. Кроме того, при этом будет построено клиентское приложение Bookstore. Его исполняемый файл BookStoreClient.exe будет размещен в папке FederationSample\BookStoreClient\bin\Debug.

  3. Дважды щелкните BookStoreClient.exe. Отобразится окно BookStoreClient.

  4. Вы можете просмотреть книги, доступные в книжном магазине, нажав кнопку "Обзор книг".

  5. Чтобы приобрести определенную книгу, выберите книгу в списке и нажмите кнопку "Купить книгу". Приложение запустится и пройдет проверку подлинности с использованием проверки подлинности Windows со службой маркеров безопасности HomeRealm.

    Конфигурация данного примера позволяет пользователям приобретать книги, которые стоят 15 долларов США или меньше. Попытка приобрести книгу, стоимость которой превышает 15 долларов США, приводит к тому, что клиент получает сообщение «Доступ запрещен» от службы Book Store.

    Примечание.

    Пример не обновляет кредитный лимит пользователя после покупки. Вы можете многократно приобрести книги в пределах (фиксированного) кредитного лимита пользователя.

Очистка

Запустите Cleanup.bat. При этом будут удалены виртуальные каталоги и сертификаты, созданные во время установки.