Хотя создание канала вручную и выдача токена с помощью STS не является ошибкой, вы можете воспользоваться инфраструктурой WIF, чтобы сделать это за вас.
Если вы настроите свой клиент с помощью конфигурации, чтобы он знал о STS, платформа сама получит токен, используя учетные данные сообщения, которые вы установили на канале. Затем платформа установит свойство «IssuedToken» в учетных данных канала.
<ws2007HttpBinding>
<binding name="ws">
<security mode="TransportWithMessageCredential">
<message establishSecurityContext="false"
negotiateServiceCredential="true"
clientCredentialType="UserName" />
</security>
</binding>
</ws2007HttpBinding>
<customBinding>
<binding name="FederationDuplexTcpMessageSecurityBinding">
<reliableSession />
<security authenticationMode="SecureConversation">
<secureConversationBootstrap authenticationMode="IssuedTokenForSslNegotiated">
<issuedTokenParameters>
<issuer address="https://IdentityServer.domain/issue/wstrust/mixed/username" binding="ws2007HttpBinding" bindingConfiguration="ws" />
<issuerMetadata address="https://IdentityServer.domain/issue/wstrust/mex" />
<additionalRequestParameters>
<wsp:AppliesTo xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy">
<EndpointReference xmlns="http://www.w3.org/2005/08/addressing">
<Address>RelyingParty.com</Address>
</EndpointReference>
</wsp:AppliesTo>
</additionalRequestParameters>
</issuedTokenParameters>
</secureConversationBootstrap>
</security>
<tcpTransport />
</binding>
</customBinding>
Фрагмент кода выше показывает, как вы можете создать дуплексный канал, используя Secure Conversation и secureConversationBootstrap, чтобы обеспечить федеративную безопасность.
Одним из преимуществ этого является то, что вы также можете настроить свой собственный URI проверяющей стороны, поэтому вам не нужно использовать конечную точку WCF в качестве идентификатора проверяющей стороны.
Вам также потребуется настроить поведение федеративной службы для включения WIF следующим образом (useIdentityConfiguration важен, так как он включает WIF):
<behavior name="FederatedServiceBehaviour">
<clientCredentials useIdentityConfiguration="true" supportInteractive="false" >
<serviceCertificate/>
</clientCredentials>
</behavior>
Настройка конечной точки службы описана здесь: http://msdn.microsoft.com/en-us/library/cc668765%28v=vs.110%29.aspx (в некоторой степени)
Насколько я вижу, сам DuplexChannelFactory не предоставляет никакого метода для создания каналов с выпущенными токенами при прохождении через контекст экземпляра.
Надеюсь это поможет!
person
WillEllis
schedule
02.07.2014