Procedura: creare un elemento SecurityBindingElement per una modalità di autenticazione specificata

Windows Communication Foundation (WCF) offre diverse modalità per l'autenticazione reciproca di client e servizi. È possibile creare elementi di associazione di sicurezza per tali modalità di autenticazione utilizzando metodi statici sulla classe SecurityBindingElement o tramite configurazione, come spiegato nell'esempio seguente.

Per altre informazioni sulle 18 modalità di autenticazione, vedere Modalità di autenticazione SecurityBindingElement.

Esempio

Nell'esempio di codice seguente sono illustrati i metodi per la creazione di associazioni per le varie modalità di autenticazione.

Nota

Dopo la creazione di un'istanza dell'oggetto SecurityBindingElement, diverse proprietà sono immutabili, ad esempio KeyType e MessageSecurityVersion. Non cambiano neppure chiamando set su di esse.

// These public methods create custom bindings based on the built-in
// authentication modes that use the static methods of
// the System.ServiceModel.Channels.SecurityBindingElement class.
public static Binding CreateAnonymousForCertificateBinding()
{
    BindingElementCollection bec = new BindingElementCollection();
    bec.Add(SecurityBindingElement.
        CreateAnonymousForCertificateBindingElement());
    bec.Add(new TextMessageEncodingBindingElement());
    bec.Add(new HttpTransportBindingElement());
    return new CustomBinding(bec);
}

public static Binding CreateAnonymousForSslNegotiatedBinding()
{
    BindingElementCollection bec = new BindingElementCollection();
    bec.Add(SecurityBindingElement.
        CreateSslNegotiationBindingElement(false));
    bec.Add(new TextMessageEncodingBindingElement());
    bec.Add(new HttpTransportBindingElement());
    return new CustomBinding(bec);
}

public static Binding CreateCertificateOverTransportBinding()
{
    BindingElementCollection bec = new BindingElementCollection();
    bec.Add(SecurityBindingElement.
        CreateCertificateOverTransportBindingElement());
    bec.Add(new TextMessageEncodingBindingElement());
    bec.Add(new HttpsTransportBindingElement());
    return new CustomBinding(bec);
}

public static Binding CreateIssuedTokenBinding()
{
    BindingElementCollection bec = new BindingElementCollection();
    bec.Add(SecurityBindingElement.
        CreateIssuedTokenBindingElement(
        new IssuedSecurityTokenParameters()));
    bec.Add(new TextMessageEncodingBindingElement());
    bec.Add(new HttpTransportBindingElement());
    return new CustomBinding(bec);
}

public static Binding CreateIssuedTokenForCertificateBinding()
{
    BindingElementCollection bec = new BindingElementCollection();
    bec.Add(SecurityBindingElement.
        CreateIssuedTokenForCertificateBindingElement(
        new IssuedSecurityTokenParameters()));
    bec.Add(new TextMessageEncodingBindingElement());
    bec.Add(new HttpTransportBindingElement());
    return new CustomBinding(bec);
}

public static Binding CreateIssuedTokenForSslNegotiatedBinding()
{
    BindingElementCollection bec = new BindingElementCollection();
    bec.Add(SecurityBindingElement.
        CreateIssuedTokenForSslBindingElement(
        new IssuedSecurityTokenParameters()));
    bec.Add(new TextMessageEncodingBindingElement());
    bec.Add(new HttpTransportBindingElement());
    return new CustomBinding(bec);
}

public static Binding CreateIssuedTokenOverTransportBinding()
{
    BindingElementCollection bec = new BindingElementCollection();
    bec.Add(SecurityBindingElement.
        CreateIssuedTokenOverTransportBindingElement(
        new IssuedSecurityTokenParameters()));
    bec.Add(new TextMessageEncodingBindingElement());
    bec.Add(new HttpsTransportBindingElement());
    return new CustomBinding(bec);
}

public static Binding CreateKerberosBinding()
{
    BindingElementCollection bec = new BindingElementCollection();
    bec.Add(SecurityBindingElement.CreateKerberosBindingElement());
    bec.Add(new TextMessageEncodingBindingElement());
    bec.Add(new HttpTransportBindingElement());
    return new CustomBinding(bec);
}

public static Binding CreateKerberosOverTransportBinding()
{
    BindingElementCollection bec = new BindingElementCollection();
    bec.Add(SecurityBindingElement.
        CreateKerberosOverTransportBindingElement());
    bec.Add(new TextMessageEncodingBindingElement());
    bec.Add(new HttpsTransportBindingElement());
    return new CustomBinding(bec);
}

public static Binding CreateMutualCertificateBinding()
{
    BindingElementCollection bec = new BindingElementCollection();
    bec.Add(SecurityBindingElement.
        CreateMutualCertificateBindingElement());
    bec.Add(new TextMessageEncodingBindingElement());
    bec.Add(new HttpTransportBindingElement());
    return new CustomBinding(bec);
}

public static Binding CreateMutualCertificateDuplexBinding()
{
    BindingElementCollection bec = new BindingElementCollection();
    bec.Add(SecurityBindingElement.
        CreateMutualCertificateDuplexBindingElement());
    bec.Add(new CompositeDuplexBindingElement());
    bec.Add(new OneWayBindingElement());
    bec.Add(new TextMessageEncodingBindingElement());
    bec.Add(new HttpTransportBindingElement());
    return new CustomBinding(bec);
}

public static Binding CreateMutualSslNegotiatedBinding()
{
    BindingElementCollection bec = new BindingElementCollection();
    bec.Add(SecurityBindingElement.
        CreateSslNegotiationBindingElement(true));
    bec.Add(new TextMessageEncodingBindingElement());
    bec.Add(new HttpTransportBindingElement());
    return new CustomBinding(bec);
}

public static Binding CreateSecureConversationBinding()
{
    BindingElementCollection bec = new BindingElementCollection();
    bec.Add(SecurityBindingElement.
        CreateSecureConversationBindingElement(
        SecurityBindingElement.CreateSspiNegotiationBindingElement()));
    bec.Add(new TextMessageEncodingBindingElement());
    bec.Add(new HttpTransportBindingElement());
    return new CustomBinding(bec);
}

public static Binding CreateSspiNegotiatedBinding()
{
    BindingElementCollection bec = new BindingElementCollection();
    bec.Add(SecurityBindingElement.CreateSspiNegotiationBindingElement());
    bec.Add(new TextMessageEncodingBindingElement());
    bec.Add(new HttpTransportBindingElement());
    return new CustomBinding(bec);
}

public static Binding CreateSspiNegotiatedOverTransportBinding()
{
    BindingElementCollection bec = new BindingElementCollection();
    bec.Add(SecurityBindingElement.
        CreateSspiNegotiationOverTransportBindingElement());
    bec.Add(new TextMessageEncodingBindingElement());
    bec.Add(new HttpsTransportBindingElement());
    return new CustomBinding(bec);
}

public static Binding CreateUserNameForCertificateBinding()
{
    BindingElementCollection bec = new BindingElementCollection();
    bec.Add(SecurityBindingElement.
        CreateUserNameForCertificateBindingElement());
    bec.Add(new TextMessageEncodingBindingElement());
    bec.Add(new HttpTransportBindingElement());
    return new CustomBinding(bec);
}

public static Binding CreateUserNameForSslNegotiatedBinding()
{
    BindingElementCollection bec = new BindingElementCollection();
    bec.Add(SecurityBindingElement.CreateUserNameForSslBindingElement());
    bec.Add(new TextMessageEncodingBindingElement());
    bec.Add(new HttpTransportBindingElement());
    return new CustomBinding(bec);
}

public static Binding CreateUserNameOverTransportBinding()
{
    BindingElementCollection bec = new BindingElementCollection();
    bec.Add(SecurityBindingElement.
        CreateUserNameOverTransportBindingElement());
    bec.Add(new TextMessageEncodingBindingElement());
    bec.Add(new HttpsTransportBindingElement());
    return new CustomBinding(bec);
}
' These public methods create custom bindings based on the built-in 
' authentication modes that use the static methods of 
' the System.ServiceModel.Channels.SecurityBindingElement class.
Public Shared Function CreateAnonymousForCertificateBinding() As Binding
    Dim bec As New BindingElementCollection()
    bec.Add(SecurityBindingElement.CreateAnonymousForCertificateBindingElement())
    bec.Add(New TextMessageEncodingBindingElement())
    bec.Add(New HttpTransportBindingElement())
    Return New CustomBinding(bec)
End Function


Public Shared Function CreateAnonymousForSslNegotiatedBinding() As Binding
    Dim bec As New BindingElementCollection()
    bec.Add(SecurityBindingElement.CreateSslNegotiationBindingElement(False))
    bec.Add(New TextMessageEncodingBindingElement())
    bec.Add(New HttpTransportBindingElement())
    Return New CustomBinding(bec)
End Function

Public Shared Function CreateCertificateOverTransportBinding() As Binding
    Dim bec As New BindingElementCollection()
    bec.Add(SecurityBindingElement.CreateCertificateOverTransportBindingElement())
    bec.Add(New TextMessageEncodingBindingElement())
    bec.Add(New HttpsTransportBindingElement())
    Return New CustomBinding(bec)
End Function

Public Shared Function CreateIssuedTokenBinding() As Binding
    Dim bec As New BindingElementCollection()
    bec.Add(SecurityBindingElement.CreateIssuedTokenBindingElement( _
            New IssuedSecurityTokenParameters()))
    bec.Add(New TextMessageEncodingBindingElement())
    bec.Add(New HttpTransportBindingElement())
    Return New CustomBinding(bec)
End Function

Public Shared Function CreateIssuedTokenForCertificateBinding() As Binding
    Dim bec As New BindingElementCollection()
    bec.Add(SecurityBindingElement. _
        CreateIssuedTokenForCertificateBindingElement( _
        New IssuedSecurityTokenParameters()))
    bec.Add(New TextMessageEncodingBindingElement())
    bec.Add(New HttpTransportBindingElement())
    Return New CustomBinding(bec)
End Function

Public Shared Function CreateIssuedTokenForSslNegotiatedBinding() As Binding
    Dim bec As New BindingElementCollection()
    bec.Add(SecurityBindingElement. _
        CreateIssuedTokenForSslBindingElement( _
        New IssuedSecurityTokenParameters()))
    bec.Add(New TextMessageEncodingBindingElement())
    bec.Add(New HttpTransportBindingElement())
    Return New CustomBinding(bec)
End Function

Public Shared Function CreateIssuedTokenOverTransportBinding() As Binding
    Dim bec As New BindingElementCollection()
    bec.Add(SecurityBindingElement. _
       CreateIssuedTokenOverTransportBindingElement( _
          New IssuedSecurityTokenParameters()))
    bec.Add(New TextMessageEncodingBindingElement())
    bec.Add(New HttpsTransportBindingElement())
    Return New CustomBinding(bec)
End Function

Public Shared Function CreateKerberosBinding() As Binding
    Dim bec As New BindingElementCollection()
    bec.Add(SecurityBindingElement.CreateKerberosBindingElement())
    bec.Add(New TextMessageEncodingBindingElement())
    bec.Add(New HttpTransportBindingElement())
    Return New CustomBinding(bec)
End Function

Public Shared Function CreateKerberosOverTransportBinding() As Binding
    Dim bec As New BindingElementCollection()
    bec.Add(SecurityBindingElement. _
        CreateKerberosOverTransportBindingElement())
    bec.Add(New TextMessageEncodingBindingElement())
    bec.Add(New HttpsTransportBindingElement())
    Return New CustomBinding(bec)
End Function

Public Shared Function CreateMutualCertificateBinding() As Binding
    Dim bec As New BindingElementCollection()
    bec.Add(SecurityBindingElement.CreateMutualCertificateBindingElement())
    bec.Add(New TextMessageEncodingBindingElement())
    bec.Add(New HttpTransportBindingElement())
    Return New CustomBinding(bec)
End Function

Public Shared Function CreateMutualCertificateDuplexBinding() As Binding
    Dim bec As New BindingElementCollection()
    bec.Add(SecurityBindingElement. _
        CreateMutualCertificateDuplexBindingElement())
    bec.Add(New CompositeDuplexBindingElement())
    bec.Add(New OneWayBindingElement())
    bec.Add(New TextMessageEncodingBindingElement())
    bec.Add(New HttpTransportBindingElement())
    Return New CustomBinding(bec)
End Function

Public Shared Function CreateMutualSslNegotiatedBinding() As Binding
    Dim bec As New BindingElementCollection()
    bec.Add(SecurityBindingElement. _
        CreateSslNegotiationBindingElement(True))
    bec.Add(New TextMessageEncodingBindingElement())
    bec.Add(New HttpTransportBindingElement())
    Return New CustomBinding(bec)
End Function

Public Shared Function CreateSecureConversationBinding() As Binding
    Dim bec As New BindingElementCollection()
    bec.Add(SecurityBindingElement. _
        CreateSecureConversationBindingElement( _
        SecurityBindingElement.CreateSspiNegotiationBindingElement()))
    bec.Add(New TextMessageEncodingBindingElement())
    bec.Add(New HttpTransportBindingElement())
    Return New CustomBinding(bec)
End Function

Public Shared Function CreateSspiNegotiatedBinding() As Binding
    Dim bec As New BindingElementCollection()
    bec.Add(SecurityBindingElement.CreateSspiNegotiationBindingElement())
    bec.Add(New TextMessageEncodingBindingElement())
    bec.Add(New HttpTransportBindingElement())
    Return New CustomBinding(bec)
End Function


Public Shared Function CreateSspiNegotiatedOverTransportBinding() As Binding
    Dim bec As New BindingElementCollection()
    bec.Add(SecurityBindingElement. _
        CreateSspiNegotiationOverTransportBindingElement())
    bec.Add(New TextMessageEncodingBindingElement())
    bec.Add(New HttpsTransportBindingElement())
    Return New CustomBinding(bec)
End Function

Public Shared Function CreateUserNameForCertificateBinding() As Binding
    Dim bec As New BindingElementCollection()
    bec.Add(SecurityBindingElement.CreateUserNameForCertificateBindingElement())
    bec.Add(New TextMessageEncodingBindingElement())
    bec.Add(New HttpTransportBindingElement())
    Return New CustomBinding(bec)
End Function

Public Shared Function CreateUserNameForSslNegotiatedBinding() As Binding
    Dim bec As New BindingElementCollection()
    bec.Add(SecurityBindingElement.CreateUserNameForSslBindingElement())
    bec.Add(New TextMessageEncodingBindingElement())
    bec.Add(New HttpTransportBindingElement())
    Return New CustomBinding(bec)

End Function 'CreateUserNameForSslNegotiatedBinding


Public Shared Function CreateUserNameOverTransportBinding() As Binding
    Dim bec As New BindingElementCollection()
    bec.Add(SecurityBindingElement.CreateUserNameOverTransportBindingElement())
    bec.Add(New TextMessageEncodingBindingElement())
    bec.Add(New HttpsTransportBindingElement())
    Return New CustomBinding(bec)

End Function

Vedi anche