551 lines
33 KiB
XML
Raw Normal View History

<?xml version="1.0" encoding="utf-8"?>
<Type Name="SslStreamSecurityBindingElement" FullName="System.ServiceModel.Channels.SslStreamSecurityBindingElement">
<TypeSignature Language="C#" Value="public class SslStreamSecurityBindingElement : System.ServiceModel.Channels.BindingElement, System.ServiceModel.Channels.ITransportTokenAssertionProvider, System.ServiceModel.Description.IPolicyExportExtension" />
<TypeSignature Language="ILAsm" Value=".class public auto ansi beforefieldinit SslStreamSecurityBindingElement extends System.ServiceModel.Channels.BindingElement implements class System.ServiceModel.Channels.ITransportTokenAssertionProvider, class System.ServiceModel.Description.IPolicyExportExtension" />
<AssemblyInfo>
<AssemblyName>System.ServiceModel</AssemblyName>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<Base>
<BaseTypeName>System.ServiceModel.Channels.BindingElement</BaseTypeName>
</Base>
<Interfaces>
<Interface>
<InterfaceName>System.ServiceModel.Channels.ITransportTokenAssertionProvider</InterfaceName>
</Interface>
<Interface>
<InterfaceName>System.ServiceModel.Description.IPolicyExportExtension</InterfaceName>
</Interface>
</Interfaces>
<Docs>
<remarks>
<attribution license="cc4" from="Microsoft" modified="false" />
<para>Transports that use a stream-oriented protocol such as TCP and named pipes support stream-based transport upgrades. Specifically, indigo1 provides security upgrades. The configuration of this transport security is encapsulated by this class as well as by <see cref="T:System.ServiceModel.Channels.SslStreamSecurityBindingElement" />, which can be configured and added to a custom binding. In addition, a third party can write their own custom StreamSecurityBindingElement. These binding elements extend the <see cref="T:System.ServiceModel.Channels.StreamUpgradeBindingElement" /> class that is called to build the client and server stream upgrade providers.</para>
<para>A custom binding contains a collection of binding elements arranged in a specific order: the element that represents the top of the binding stack is added first, the next element down in the binding stack is added second, and so on.</para>
<procedure>
<format type="text/html">
<h2>To add this class to a binding</h2>
</format>
<steps>
<step>
<para>Create a <see cref="T:System.ServiceModel.Channels.BindingElementCollection" />.</para>
</step>
<step>
<para>Create custom binding elements that are above this binding element in the binding stack, such as the optional <see cref="T:System.ServiceModel.Channels.TransactionFlowBindingElement" /> and <see cref="T:System.ServiceModel.Channels.ReliableSessionBindingElement" />.</para>
</step>
<step>
<para>Add the created elements in the order described previously to the <see cref="T:System.ServiceModel.Channels.BindingElementCollection" /> using the <see cref="M:System.ServiceModel.Channels.BindingElementCollection.InsertItem(System.Int32,System.ServiceModel.Channels.BindingElement)" /> method.</para>
</step>
<step>
<para>Create an instance of <see cref="T:System.ServiceModel.Channels.SslStreamSecurityBindingElement" /> and add it to the collection.</para>
</step>
<step>
<para>Add any additional custom binding elements to the collection, such as <see cref="T:System.ServiceModel.Channels.TcpTransportBindingElement" />.</para>
</step>
</steps>
</procedure>
<para>There are three scenarios in which you must either manually specify the correct UPN/SPN on the client endpoint after importing the WSDL, or specify a custom <see cref="T:System.ServiceModel.Security.IdentityVerifier" /> on the client’s <see cref="T:System.ServiceModel.Channels.SslStreamSecurityBindingElement" />.</para>
<list type="ordered">
<item>
<para>No service identity is published in WSDL. <see cref="F:System.ServiceModel.Configuration.AuthenticationMode.SspiNegotiatedOverTransport" /> and HTTPS are used (for example, a <see cref="T:System.ServiceModel.WSHttpBinding" /> with SecurityMode = <see cref="F:System.ServiceModel.SecurityMode.TransportWithMessageCredential" />). If the service is not running with the machine identity, you must manually specify the correct UPN/SPN on the client endpoint after importing the WSDL.</para>
</item>
<item>
<para>DNSservice identity is published in WSDL. <see cref="F:System.ServiceModel.Configuration.AuthenticationMode.SspiNegotiatedOverTransport" /> and <see cref="T:System.ServiceModel.Channels.SslStreamSecurityBindingElement" /> are used (for example, <see cref="T:System.ServiceModel.NetTcpBinding" /> with SecurityMode = <see cref="F:System.ServiceModel.SecurityMode.TransportWithMessageCredential" />) instead of a UPN/SPN. If the service is not running with the machine identity, or the DNS identity is not the machine's identity, you must manually specify the correct UPN/SPN on the client endpoint after importing the WSDL.</para>
</item>
<item>
<para> DNS identity is published in WSDL. If <see cref="T:System.ServiceModel.Channels.SslStreamSecurityBindingElement" /> is overridden on the client, you must specify a custom <see cref="T:System.ServiceModel.Security.IdentityVerifier" /> on the client's <see cref="T:System.ServiceModel.Channels.SslStreamSecurityBindingElement" />.</para>
</item>
</list>
<para>The following code shows how to manually specify the correct UPN/SPN on the client endpoint, as well as how to specify a custom <see cref="T:System.ServiceModel.Security.IdentityVerifier" /> on the client's <see cref="T:System.ServiceModel.Channels.SslStreamSecurityBindingElement" />.</para>
<code>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.IdentityModel.Claims;
using System.IdentityModel.Policy;
using System.Security.Cryptography.X509Certificates;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.ServiceModel.Description;
using System.ServiceModel.Security;
using System.Xml;
namespace ServiceNamespace
{
[ServiceContract]
interface IService
{
[OperationContract]
void DoSomething();
}
class DnsIdentityVerifier : IdentityVerifier
{
DnsEndpointIdentity _expectedIdentity;
public DnsIdentityVerifier(EndpointAddress serviceEndpoint)
{
_expectedIdentity = new DnsEndpointIdentity(serviceEndpoint.Uri.DnsSafeHost);
}
public override bool CheckAccess(EndpointIdentity identity, AuthorizationContext authContext)
{
Claim dnsClaim = authContext.Claims().Single(claim =&gt; claim.ClaimType == ClaimTypes.Dns);
return String.Equals(_expectedIdentity.IdentityClaim.Resource, dnsClaim.Resource);
}
public override bool TryGetIdentity(EndpointAddress reference, out EndpointIdentity identity)
{
identity = _expectedIdentity;
return true;
}
}
static class LinqExtensionForClaims
{
public static IEnumerable&lt;Claim&gt; Claims(this AuthorizationContext authContext)
{
if (null != authContext.ClaimSets)
{
foreach (ClaimSet claimSet in authContext.ClaimSets)
{
if (null != claimSet)
{
foreach (Claim claim in claimSet)
{
yield return claim;
}
}
}
}
}
}
class Service : IService
{
public void DoSomething()
{
Console.WriteLine("Service called.");
}
}
class Program
{
static void Main(string[] args)
{
string hostname = Dns.GetHostEntry(String.Empty).HostName;
NetTcpBinding serviceBinding = new NetTcpBinding(SecurityMode.TransportWithMessageCredential);
ServiceHost serviceHost = new ServiceHost(typeof(Service), new Uri(String.Format("net.tcp://{0}:8080/Service", hostname)));
serviceHost.Credentials.ServiceCertificate.SetCertificate(StoreLocation.LocalMachine, StoreName.My, X509FindType.FindByThumbprint, "8a 42 1b eb cf 8a 14 b1 de 83 d9 a5 70 88 0a 62 f9 bf 69 06");
ServiceEndpoint serviceEndpoint = serviceHost.AddServiceEndpoint(typeof(IService), serviceBinding, "Endpoint");
serviceHost.Open();
CustomBinding clientBinding = new CustomBinding(serviceBinding.CreateBindingElements());
SslStreamSecurityBindingElement sslStream = clientBinding.Elements.Find&lt;SslStreamSecurityBindingElement&gt;();
sslStream.IdentityVerifier = new DnsIdentityVerifier(serviceEndpoint.Address);
ChannelFactory&lt;IService&gt; channelFactory = new ChannelFactory&lt;IService&gt;(clientBinding, new EndpointAddress(serviceEndpoint.Address.Uri, UpnEndpointIdentity.CreateUpnIdentity("username@domain")));
channelFactory.Credentials.Windows.AllowNtlm = false;
IService channel = channelFactory.CreateChannel();
channel.DoSomething();
}
}
</code>
</remarks>
<summary>
<attribution license="cc4" from="Microsoft" modified="false" />
<para>Represents a custom binding element that supports channel security using an SSL stream.</para>
</summary>
</Docs>
<Members>
<Member MemberName=".ctor">
<MemberSignature Language="C#" Value="public SslStreamSecurityBindingElement ();" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor() cil managed" />
<MemberType>Constructor</MemberType>
<AssemblyInfo>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<Parameters />
<Docs>
<remarks>To be added.</remarks>
<summary>
<attribution license="cc4" from="Microsoft" modified="false" />
<para>Initializes a new instance of the <see cref="T:System.ServiceModel.Channels.SslStreamSecurityBindingElement" /> class. </para>
</summary>
</Docs>
</Member>
<Member MemberName="BuildChannelFactory&lt;TChannel&gt;">
<MemberSignature Language="C#" Value="public override System.ServiceModel.Channels.IChannelFactory&lt;TChannel&gt; BuildChannelFactory&lt;TChannel&gt; (System.ServiceModel.Channels.BindingContext context);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig virtual instance class System.ServiceModel.Channels.IChannelFactory`1&lt;!!TChannel&gt; BuildChannelFactory&lt;TChannel&gt;(class System.ServiceModel.Channels.BindingContext context) cil managed" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.ServiceModel.Channels.IChannelFactory&lt;TChannel&gt;</ReturnType>
</ReturnValue>
<TypeParameters>
<TypeParameter Name="TChannel" />
</TypeParameters>
<Parameters>
<Parameter Name="context" Type="System.ServiceModel.Channels.BindingContext" />
</Parameters>
<Docs>
<remarks>
<attribution license="cc4" from="Microsoft" modified="false" />
<para>This method creates a channel factory, which is used to create a channel that processes outgoing messages for this binding.</para>
</remarks>
<summary>
<attribution license="cc4" from="Microsoft" modified="false" />
<para>Creates a channel factory of a specified type.</para>
</summary>
<returns>
<attribution license="cc4" from="Microsoft" modified="false" />
<para>An <see cref="T:System.serviceModel.Channels.IChannelFactory" /> object that represents the channel factory of type <paramref name="TChannel" />.</para>
</returns>
<param name="context">
<attribution license="cc4" from="Microsoft" modified="false" />The <see cref="T:System.serviceModel.Channels.BindingContext" />.</param>
<typeparam name="TChannel">
<attribution license="cc4" from="Microsoft" modified="false" />Type of channel factory.</typeparam>
</Docs>
</Member>
<Member MemberName="BuildChannelListener&lt;TChannel&gt;">
<MemberSignature Language="C#" Value="public override System.ServiceModel.Channels.IChannelListener&lt;TChannel&gt; BuildChannelListener&lt;TChannel&gt; (System.ServiceModel.Channels.BindingContext context) where TChannel : class, System.ServiceModel.Channels.IChannel;" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig virtual instance class System.ServiceModel.Channels.IChannelListener`1&lt;!!TChannel&gt; BuildChannelListener&lt;class (class System.ServiceModel.Channels.IChannel) TChannel&gt;(class System.ServiceModel.Channels.BindingContext context) cil managed" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.ServiceModel.Channels.IChannelListener&lt;TChannel&gt;</ReturnType>
</ReturnValue>
<TypeParameters>
<TypeParameter Name="TChannel">
<Constraints>
<ParameterAttribute>ReferenceTypeConstraint</ParameterAttribute>
<InterfaceName>System.ServiceModel.Channels.IChannel</InterfaceName>
</Constraints>
</TypeParameter>
</TypeParameters>
<Parameters>
<Parameter Name="context" Type="System.ServiceModel.Channels.BindingContext" />
</Parameters>
<Docs>
<remarks>
<attribution license="cc4" from="Microsoft" modified="false" />
<para>This method creates a channel listener, which is used to create a channel that processes incoming messages for this binding.</para>
</remarks>
<summary>
<attribution license="cc4" from="Microsoft" modified="false" />
<para>Creates a channel listener of a specified type.</para>
</summary>
<returns>
<attribution license="cc4" from="Microsoft" modified="false" />
<para>An <see cref="T:System.serviceModel.Channels.IChannelListener" /> object that represents a channel listener of type <paramref name="TChannel" />.</para>
</returns>
<param name="context">
<attribution license="cc4" from="Microsoft" modified="false" />The <see cref="T:System.serviceModel.Channels.BindingContext" />.</param>
<typeparam name="TChannel">
<attribution license="cc4" from="Microsoft" modified="false" />Type of channel listener.</typeparam>
</Docs>
</Member>
<Member MemberName="BuildClientStreamUpgradeProvider">
<MemberSignature Language="C#" Value="public System.ServiceModel.Channels.StreamUpgradeProvider BuildClientStreamUpgradeProvider (System.ServiceModel.Channels.BindingContext context);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig instance class System.ServiceModel.Channels.StreamUpgradeProvider BuildClientStreamUpgradeProvider(class System.ServiceModel.Channels.BindingContext context) cil managed" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.ServiceModel.Channels.StreamUpgradeProvider</ReturnType>
</ReturnValue>
<Parameters>
<Parameter Name="context" Type="System.ServiceModel.Channels.BindingContext" />
</Parameters>
<Docs>
<remarks>
<attribution license="cc4" from="Microsoft" modified="false" />
<para>This method is called when opening the client channel factory and provides a custom implementation of the <see cref="T:System.ServiceModel.Channels.StreamUpgradeProvider" /> abstract class.</para>
<para>The <see cref="T:System.ServiceModel.Channels.BindingContext" /> parameter enables reacting to other elements in the channel stack.</para>
</remarks>
<summary>
<attribution license="cc4" from="Microsoft" modified="false" />
<para>Creates an instance on the client of the <see cref="T:System.ServiceModel.Channels.StreamUpgradeProvider" /> based on the channel context provided.</para>
</summary>
<returns>
<attribution license="cc4" from="Microsoft" modified="false" />
<para>An instance of the <see cref="T:System.ServiceModel.Channels.StreamUpgradeProvider" />. </para>
</returns>
<param name="context">
<attribution license="cc4" from="Microsoft" modified="false" />The <see cref="T:System.ServiceModel.Channels.BindingContext" /> for the entire channel stack.</param>
</Docs>
</Member>
<Member MemberName="BuildServerStreamUpgradeProvider">
<MemberSignature Language="C#" Value="public System.ServiceModel.Channels.StreamUpgradeProvider BuildServerStreamUpgradeProvider (System.ServiceModel.Channels.BindingContext context);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig instance class System.ServiceModel.Channels.StreamUpgradeProvider BuildServerStreamUpgradeProvider(class System.ServiceModel.Channels.BindingContext context) cil managed" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.ServiceModel.Channels.StreamUpgradeProvider</ReturnType>
</ReturnValue>
<Parameters>
<Parameter Name="context" Type="System.ServiceModel.Channels.BindingContext" />
</Parameters>
<Docs>
<remarks>
<attribution license="cc4" from="Microsoft" modified="false" />
<para>This method is called when opening the service and provides a custom implementation of the <see cref="T:System.ServiceModel.Channels.StreamUpgradeProvider" /> abstract class.</para>
<para>The <see cref="T:System.ServiceModel.Channels.BindingContext" /> parameter enables reacting to other elements in the channel stack.</para>
</remarks>
<summary>
<attribution license="cc4" from="Microsoft" modified="false" />
<para>Creates an instance on the server of the <see cref="T:System.ServiceModel.Channels.StreamUpgradeProvider" /> based on the channel context provided.</para>
</summary>
<returns>
<attribution license="cc4" from="Microsoft" modified="false" />
<para>An instance of the <see cref="T:System.ServiceModel.Channels.StreamUpgradeProvider" />.</para>
</returns>
<param name="context">
<attribution license="cc4" from="Microsoft" modified="false" />The <see cref="T:System.ServiceModel.Channels.BindingContext" /> for the entire channel stack.</param>
</Docs>
</Member>
<Member MemberName="CanBuildChannelFactory&lt;TChannel&gt;">
<MemberSignature Language="C#" Value="public override bool CanBuildChannelFactory&lt;TChannel&gt; (System.ServiceModel.Channels.BindingContext context);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig virtual instance bool CanBuildChannelFactory&lt;TChannel&gt;(class System.ServiceModel.Channels.BindingContext context) cil managed" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Boolean</ReturnType>
</ReturnValue>
<TypeParameters>
<TypeParameter Name="TChannel" />
</TypeParameters>
<Parameters>
<Parameter Name="context" Type="System.ServiceModel.Channels.BindingContext" />
</Parameters>
<Docs>
<remarks>
<attribution license="cc4" from="Microsoft" modified="false" />
<para>You should call this method before trying to create a channel factory.</para>
</remarks>
<summary>
<attribution license="cc4" from="Microsoft" modified="false" />
<para>Gets a value that indicates whether a channel factory of the specified type can be built.</para>
</summary>
<returns>
<attribution license="cc4" from="Microsoft" modified="false" />
<para>true if a channel factory of the specified type can be built; otherwise, false.</para>
</returns>
<param name="context">
<attribution license="cc4" from="Microsoft" modified="false" />The <see cref="T:System.ServiceModel.Channels.BindingContext" />.</param>
<typeparam name="TChannel">
<attribution license="cc4" from="Microsoft" modified="false" />Type of channel factory.</typeparam>
</Docs>
</Member>
<Member MemberName="CanBuildChannelListener&lt;TChannel&gt;">
<MemberSignature Language="C#" Value="public override bool CanBuildChannelListener&lt;TChannel&gt; (System.ServiceModel.Channels.BindingContext context) where TChannel : class, System.ServiceModel.Channels.IChannel;" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig virtual instance bool CanBuildChannelListener&lt;class (class System.ServiceModel.Channels.IChannel) TChannel&gt;(class System.ServiceModel.Channels.BindingContext context) cil managed" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Boolean</ReturnType>
</ReturnValue>
<TypeParameters>
<TypeParameter Name="TChannel">
<Constraints>
<ParameterAttribute>ReferenceTypeConstraint</ParameterAttribute>
<InterfaceName>System.ServiceModel.Channels.IChannel</InterfaceName>
</Constraints>
</TypeParameter>
</TypeParameters>
<Parameters>
<Parameter Name="context" Type="System.ServiceModel.Channels.BindingContext" />
</Parameters>
<Docs>
<remarks>
<attribution license="cc4" from="Microsoft" modified="false" />
<para>You should call this method before trying to create a channel listener.</para>
</remarks>
<summary>
<attribution license="cc4" from="Microsoft" modified="false" />
<para>Gets a value that indicates whether a channel listener of the specified type can be built.</para>
</summary>
<returns>
<attribution license="cc4" from="Microsoft" modified="false" />
<para>true if a channel listener of the specified type can be built; otherwise, false.</para>
</returns>
<param name="context">
<attribution license="cc4" from="Microsoft" modified="false" />The <see cref="T:System.serviceModel.Channels.BindingContext" />.</param>
<typeparam name="TChannel">
<attribution license="cc4" from="Microsoft" modified="false" />Type of channel listener.</typeparam>
</Docs>
</Member>
<Member MemberName="Clone">
<MemberSignature Language="C#" Value="public override System.ServiceModel.Channels.BindingElement Clone ();" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig virtual instance class System.ServiceModel.Channels.BindingElement Clone() cil managed" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.ServiceModel.Channels.BindingElement</ReturnType>
</ReturnValue>
<Parameters />
<Docs>
<remarks>To be added.</remarks>
<summary>
<attribution license="cc4" from="Microsoft" modified="false" />
<para>Creates a new instance that is a copy of the current instance.</para>
</summary>
<returns>
<attribution license="cc4" from="Microsoft" modified="false" />
<para>A <see cref="T:System.ServiceModel.Channels.SslStreamSecurityBindingElement" /> instance that is a copy of the current instance.</para>
</returns>
</Docs>
</Member>
<Member MemberName="GetProperty&lt;T&gt;">
<MemberSignature Language="C#" Value="public override T GetProperty&lt;T&gt; (System.ServiceModel.Channels.BindingContext context) where T : class;" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig virtual instance !!T GetProperty&lt;class T&gt;(class System.ServiceModel.Channels.BindingContext context) cil managed" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>T</ReturnType>
</ReturnValue>
<TypeParameters>
<TypeParameter Name="T">
<Constraints>
<ParameterAttribute>ReferenceTypeConstraint</ParameterAttribute>
</Constraints>
</TypeParameter>
</TypeParameters>
<Parameters>
<Parameter Name="context" Type="System.ServiceModel.Channels.BindingContext" />
</Parameters>
<Docs>
<remarks>
<attribution license="cc4" from="Microsoft" modified="false" />
<para>This method gets the specified object from the base class or from one of that class's ancestors. The object returned is usually a collection of properties, for example, an object that implements <see cref="T:System.ServiceModel.Channels.ISecurityCapabilities" />.</para>
</remarks>
<summary>
<attribution license="cc4" from="Microsoft" modified="false" />
<para>Gets a specified object from the <see cref="T:System.ServiceModel.Channels.BindingContext" />.</para>
</summary>
<returns>
<attribution license="cc4" from="Microsoft" modified="false" />
<para>The object of type <paramref name="T" />from the <see cref="T:System.ServiceModel.Channels.BindingContext" />, or null if the object is not found.</para>
</returns>
<param name="context">
<attribution license="cc4" from="Microsoft" modified="false" />A <see cref="T:System.ServiceModel.Channels.BindingContext" />.</param>
<typeparam name="T">
<attribution license="cc4" from="Microsoft" modified="false" />The type of the object to get.</typeparam>
</Docs>
</Member>
<Member MemberName="GetTransportTokenAssertion">
<MemberSignature Language="C#" Value="public System.Xml.XmlElement GetTransportTokenAssertion ();" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance class System.Xml.XmlElement GetTransportTokenAssertion() cil managed" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Xml.XmlElement</ReturnType>
</ReturnValue>
<Parameters />
<Docs>
<remarks>
<attribution license="cc4" from="Microsoft" modified="false" />
<para>This method is used to generate WSDL for the associated service.</para>
</remarks>
<summary>
<attribution license="cc4" from="Microsoft" modified="false" />
<para>Gets the <see cref="T:System.Xml.XmlElement" /> that represents the transport token used in the security binding.</para>
</summary>
<returns>
<attribution license="cc4" from="Microsoft" modified="false" />
<para>An <see cref="T:System.Xml.XmlElement" /> that represents the transport token used in the security binding.</para>
</returns>
</Docs>
</Member>
<Member MemberName="IdentityVerifier">
<MemberSignature Language="C#" Value="public System.ServiceModel.Security.IdentityVerifier IdentityVerifier { get; set; }" />
<MemberSignature Language="ILAsm" Value=".property instance class System.ServiceModel.Security.IdentityVerifier IdentityVerifier" />
<MemberType>Property</MemberType>
<AssemblyInfo>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.ServiceModel.Security.IdentityVerifier</ReturnType>
</ReturnValue>
<Docs>
<value>To be added.</value>
<remarks>To be added.</remarks>
<summary>
<attribution license="cc4" from="Microsoft" modified="false" />
<para>Gets or sets the identity verifier for this binding. </para>
</summary>
</Docs>
</Member>
<Member MemberName="RequireClientCertificate">
<MemberSignature Language="C#" Value="public bool RequireClientCertificate { get; set; }" />
<MemberSignature Language="ILAsm" Value=".property instance bool RequireClientCertificate" />
<MemberType>Property</MemberType>
<AssemblyInfo>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Boolean</ReturnType>
</ReturnValue>
<Docs>
<value>To be added.</value>
<remarks>To be added.</remarks>
<summary>
<attribution license="cc4" from="Microsoft" modified="false" />
<para>Gets or sets a value that specifies whether a client certificate is required for this binding.</para>
</summary>
</Docs>
</Member>
<Member MemberName="System.ServiceModel.Description.IPolicyExportExtension.ExportPolicy">
<MemberSignature Language="C#" Value="void IPolicyExportExtension.ExportPolicy (System.ServiceModel.Description.MetadataExporter exporter, System.ServiceModel.Description.PolicyConversionContext context);" />
<MemberSignature Language="ILAsm" Value=".method hidebysig newslot virtual instance void System.ServiceModel.Description.IPolicyExportExtension.ExportPolicy(class System.ServiceModel.Description.MetadataExporter exporter, class System.ServiceModel.Description.PolicyConversionContext context) cil managed" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Void</ReturnType>
</ReturnValue>
<Parameters>
<Parameter Name="exporter" Type="System.ServiceModel.Description.MetadataExporter" />
<Parameter Name="context" Type="System.ServiceModel.Description.PolicyConversionContext" />
</Parameters>
<Docs>
<remarks>
<attribution license="cc4" from="Microsoft" modified="false" />
<para>This method writes binding-related statements into the WSDL information exposed by a particular contract and is used by indigo2 to communicate to clients the existence of this custom binding element in the binding stack.</para>
<para>This method takes two parameters: the <see cref="T:System.ServiceModel.Description.MetadataExporter" /> and <see cref="T:System.ServiceModel.Description.PolicyConversionContext" /> objects. Use the <see cref="M:System.ServiceModel.Description.PolicyConversionContext.GetBindingAssertions" />, <see cref="M:System.ServiceModel.Description.PolicyConversionContext.GetMessageBindingAssertions(System.ServiceModel.Description.MessageDescription)" />, and <see cref="M:System.ServiceModel.Description.PolicyConversionContext.GetOperationBindingAssertions(System.ServiceModel.Description.OperationDescription)" /> methods to obtain collections of policy assertions that have already been exported at various scopes. Then use this method to add your own policy assertions to the appropriate collection.</para>
<para>The <see cref="P:System.ServiceModel.Description.PolicyConversionContext.Contract" /> property exposes the <see cref="T:System.ServiceModel.Description.ContractDescription" /> for the endpoint that is being exported. This enables this method to correctly scope their exported policy assertions. For example, security attributes in code can add behaviors to the <see cref="T:System.ServiceModel.Description.ContractDescription" /> that indicate where security policy assertions should be added.</para>
<para>Once custom policy assertions are attached to the WSDL information, clients can detect and import the custom binding assertions by implementing an <see cref="T:System.ServiceModel.Description.IPolicyImportExtension" /> interface.</para>
</remarks>
<summary>
<attribution license="cc4" from="Microsoft" modified="false" />
<para>Exports a custom policy assertion about bindings.</para>
</summary>
<param name="exporter">
<attribution license="cc4" from="Microsoft" modified="false" />The <see cref="T:System.ServiceModel.Description.MetadataExporter" /> that you can use to modify the exporting process.</param>
<param name="context">
<attribution license="cc4" from="Microsoft" modified="false" />The <see cref="T:System.ServiceModel.Description.PolicyConversionContext" /> that you can use to insert your custom policy assertion.</param>
</Docs>
</Member>
</Members>
</Type>