Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Пример WS2007FederationHttp демонстрирует использование WS2007FederationHttpBindingстандартной привязки, которую можно использовать для создания федеративных сценариев, поддерживающих спецификацию WS-Trust версии 1.3.
Замечание
Процедура установки и инструкции по сборке для этого примера находятся в конце этого раздела.
Пример состоит из клиентской программы на основе консоли (Client.exe), программы службы маркеров безопасности на основе консоли (Securitytokenservice.exe) и консольной программы службы (Service.exe). Служба реализует контракт, определяющий шаблон связи запроса и ответа. Контракт определяется интерфейсом ICalculator, который предоставляет математические операции (Add, Subtract, Multiply и Divide). Клиент получает маркер безопасности из службы маркеров безопасности (STS) и выполняет синхронные запросы к службе для данной математической операции. Затем служба отвечает с результатом. Действие клиента отображается в окне консоли.
Пример делает ICalculator контракт доступным с помощью ws2007FederationHttpBinding элемента. Конфигурация этой привязки на клиенте показана в следующем коде:
<bindings>
<ws2007FederationHttpBinding>
<binding name="ServiceFed" >
<security mode ="Message">
<message issuedKeyType ="SymmetricKey"
issuedTokenType ="http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV1.1" >
<!-- Endpoint address and binding for Security Token Service -->
<issuer address ="http://localhost:8000/sts/windows"
binding ="ws2007HttpBinding" />
</message>
</security>
</binding>
</ws2007FederationHttpBinding>
</bindings>
На <параметре безопасности> значение security определяет, какой режим безопасности следует использовать. В этом примере message используется безопасность, поэтому <сообщение> указывается внутри <системы безопасности>. Элемент <издателя> в <сообщении> указывает адрес и привязку для STS, которая выдает маркер безопасности клиенту для аутентификации клиента в ICalculator службе.
Конфигурация этой привязки в службе показана в следующем коде:
<bindings>
<ws2007FederationHttpBinding>
<binding name="ServiceFed" >
<security mode ="Message">
<message issuedKeyType ="SymmetricKey"
issuedTokenType ="http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV1.1" >
<!-- Metadata address for Security Token Service -->
<issuerMetadata address ="http://localhost:8000/sts/mex" >
<identity>
<certificateReference storeLocation ="CurrentUser"
storeName="TrustedPeople"
x509FindType ="FindBySubjectDistinguishedName"
findValue ="CN=STS" />
</identity>
</issuerMetadata>
</message>
</security>
</binding>
</ws2007FederationHttpBinding>
</bindings>
На <параметре безопасности> значение security определяет, какой режим безопасности следует использовать. В этом примере message используется безопасность, поэтому <сообщение> указывается внутри <системы безопасности>. Элемент <issuerMetadata> внутри ws2007FederationHttpBinding указывает адрес и идентификацию конечной точки, которую можно использовать для получения метаданных для STS.
Поведение службы отображается в следующем коде:
<behaviors>
<serviceBehaviors>
<behavior name ="ServiceBehaviour" >
<serviceDebug includeExceptionDetailInFaults ="true"/>
<serviceMetadata httpGetEnabled ="true"/>
<serviceCredentials>
<issuedTokenAuthentication>
<knownCertificates>
<add storeLocation ="LocalMachine"
storeName="TrustedPeople"
x509FindType="FindBySubjectDistinguishedName"
findValue="CN=STS" />
</knownCertificates>
</issuedTokenAuthentication>
<serviceCertificate storeLocation ="LocalMachine"
storeName ="My"
x509FindType ="FindBySubjectDistinguishedName"
findValue ="CN=localhost"/>
</serviceCredentials>
</behavior>
</serviceBehaviors>
</behaviors>
< > позволяет службе указывать ограничения на токены, которые клиенты могут предъявлять во время аутентификации. Эта конфигурация указывает, что токены, подписанные сертификатом, у которого имя субъекта CN=STS, принимаются сервисом.
STS делает одну конечную точку доступной с помощью стандарта WS2007HttpBinding. Служба отвечает на запросы клиентов на получение токенов. Если клиент проходит проверку подлинности с помощью учетной записи Windows, служба выдает маркер, содержащий имя пользователя клиента в качестве утверждения. В рамках создания токена STS подписывает токен с помощью закрытого ключа, связанного с сертификатом CN=STS. Кроме того, он создает симметричный ключ и шифрует его с помощью открытого ключа, связанного с сертификатом CN=localhost. При возвращении маркера клиенту служба STS также предоставляет симметричный ключ. Клиент представляет выданный маркер ICalculator службе и подтверждает, что он знает симметричный ключ, подписав сообщение с этим ключом.
При запуске примера запрос токена безопасности отображается в консольном окне STS. Запросы и ответы операции отображаются в окнах консоли клиента и службы. Нажмите клавишу ВВОД в любом из окон консоли, чтобы завершить работу приложения.
Add(100,15.99) = 115.99
Subtract(145,76.54) = 68.46
Multiply(9,81.25) = 731.25
Divide(22,7) = 3.14285714285714
Press <ENTER> to terminate client.
Файл Setup.bat , включенный в этот пример, позволяет настроить сервер и stS с соответствующими сертификатами для запуска локального приложения. Пакетный файл создает два сертификата в хранилище сертификатов LocalMachine/TrustedPeople. Первый сертификат имеет имя субъекта CN=STS и используется службой STS для подписи маркеров безопасности, которые служба выдает клиенту. Второй сертификат имеет имя субъекта CN=localhost и используется службой STS для шифрования ключа так, чтобы служба могла его расшифровать.
Настройка, сборка и запуск примера
Убедитесь, что вы выполнили процедуру настройки One-Time для образцов Windows Communication Foundation.
Откройте командную строку разработчика для Visual Studio с правами администратора и запустите файл Setup.bat, чтобы создать необходимые сертификаты.
Этот пакетный файл использует Certmgr.exeи Makecert.exe , распределенные с помощью пакета SDK для Windows. Однако необходимо запустить Setup.bat из командной строки Visual Studio, чтобы включить сценарий для поиска этих средств.
Чтобы создать версию решения на C# или Visual Basic .NET, следуйте инструкциям по сборке примеров Windows Communication Foundation .
Чтобы запустить пример в конфигурации с одним или несколькими компьютерами, следуйте инструкциям в разделе "Примеры Windows Communication Foundation". Если вы используете Windows Vista, необходимо запустить Service.exe, Client.exeи SecurityTokenService.exe с повышенными привилегиями (щелкните правой кнопкой мыши файлы и нажмите кнопку "Запустить от имени администратора").