다음을 통해 공유


방법: 지정된 인증 모드에 대한 SecurityBindingElement 만들기

WCF(Windows Communication Foundation)는 클라이언트와 서비스가 서로 인증하는 여러 모드를 제공합니다. SecurityBindingElement 클래스에 static 메서드를 사용하거나 다음 예제처럼 구성을 통해 이러한 인증 모드의 보안 바인딩 요소를 만들 수 있습니다.

18가지 인증 모드에 대한 자세한 내용은 SecurityBindingElement 인증 모드를 참조하세요.

예시

다음 코드 예제에서는 다양한 인증 모드의 바인딩을 만드는 방법을 보여 줍니다.

참고 항목

SecurityBindingElement 개체의 인스턴스를 만들면 KeyTypeMessageSecurityVersion 등의 여러 속성을 변경할 수 없게 됩니다. 이러한 속성에서 set을 호출해도 해당 속성은 변경되지 않습니다.

// 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

참고 항목