Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Пример 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 с повышенными привилегиями (щелкните правой кнопкой мыши файлы и нажмите кнопку "Запустить от имени администратора").