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


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

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

Детали образца

Windows Communication Foundation (WCF) обеспечивает поддержку развертывания федеративных архитектур безопасности с помощью wsFederationHttpBinding. wsFederationHttpBinding обеспечивает безопасную, надежную и совместимую привязку, которая включает использование HTTP в качестве базового транспортного механизма для коммуникации запрос/ответ и текст/XML в качестве формата передачи для кодирования. Дополнительные сведения о федерации в WCF см. в разделе "Федерация".

Сценарий состоит из 4 частей:

  • Служба BookStore

  • BookStore STS

  • HomeRealm STS

  • Клиент BookStore

Сервис BookStore поддерживает две операции: BrowseBooks и BuyBook. Оно позволяет анонимный доступ к операции BrowseBooks, но требует проверки подлинности для доступа к операции BuyBooks. Аутентификация оформляется в виде маркера, выданного службой BookStore STS. Файл конфигурации для службы BookStore направляет клиентов на службу BookStore STS с помощью 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>

Служба STS BookStore требует, чтобы клиенты аутентифицировались с помощью токена, выданного службой STS HomeRealm. Опять же, файл конфигурации для службы STS BookStore указывает клиентам на службу STS 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 STS, используя учетные данные Windows.

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

  3. Клиент аутентифицируется в STS BookStore с помощью токена, выданного системой STS HomeRealm.

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

  5. Клиент аутентифицируется в сервисе BookStore с помощью токена, выданного BookStore STS.

  6. Клиент обращается к BuyBook операции.

См. следующие инструкции по настройке и запуску этого примера.

Замечание

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

Настройка, сборка и запуск примера

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

    Замечание

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

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

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

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

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

    Этот пример настроен для того, чтобы пользователи могли приобрести книги, которые стоят $ 15 или меньше. Попытка купить книги, которые стоят более $15, приводит к тому, что клиент получает сообщение "Доступ запрещен" от службы книжного магазина.

    Замечание

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

Очистка

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