ClientCredentialsSecurityTokenManager.CreateSecurityTokenProvider Yöntem

Tanım

Bir güvenlik belirteci sağlayıcısı oluşturur.

public:
 override System::IdentityModel::Selectors::SecurityTokenProvider ^ CreateSecurityTokenProvider(System::IdentityModel::Selectors::SecurityTokenRequirement ^ tokenRequirement);
public override System.IdentityModel.Selectors.SecurityTokenProvider CreateSecurityTokenProvider (System.IdentityModel.Selectors.SecurityTokenRequirement tokenRequirement);
override this.CreateSecurityTokenProvider : System.IdentityModel.Selectors.SecurityTokenRequirement -> System.IdentityModel.Selectors.SecurityTokenProvider
Public Overrides Function CreateSecurityTokenProvider (tokenRequirement As SecurityTokenRequirement) As SecurityTokenProvider

Parametreler

Döndürülenler

SecurityTokenProvider

SecurityTokenProvider nesnesi.

Özel durumlar

tokenRequirement, null değeridir.

Örnekler

Aşağıdaki kodda bu yöntemin nasıl geçersiz kılınacakları gösterilmektedir.

internal class MyClientCredentialsSecurityTokenManager :
    ClientCredentialsSecurityTokenManager
{
    MyClientCredentials credentials;

    public MyClientCredentialsSecurityTokenManager(
        MyClientCredentials credentials): base(credentials)
    {
        this.credentials = credentials;
    }

    public override SecurityTokenProvider CreateSecurityTokenProvider(
        SecurityTokenRequirement requirement)
    {
        SecurityTokenProvider result = null;
        if (requirement.TokenType == SecurityTokenTypes.X509Certificate)
        {
            MessageDirection direction = requirement.GetProperty
                <MessageDirection>(ServiceModelSecurityTokenRequirement.
                MessageDirectionProperty);
            if (direction == MessageDirection.Output)
            {
                if (requirement.KeyUsage == SecurityKeyUsage.Signature)
                {
                    result = new X509SecurityTokenProvider(
                        this.credentials.ClientSigningCertificate);
                }
                else
                {
                    result = new X509SecurityTokenProvider(this.credentials.
                        ServiceEncryptingCertificate);
                }
            }
            else
            {
                if (requirement.KeyUsage == SecurityKeyUsage.Signature)
                {
                    result = new X509SecurityTokenProvider(this.
                        credentials.ServiceSigningCertificate);
                }
                else
                {
                    result = new X509SecurityTokenProvider(credentials.
                        ClientEncryptingCertificate);
                }
            }
        }
        else
        {
            result = base.CreateSecurityTokenProvider(requirement);
        }

        return result;
    }

    public override SecurityTokenAuthenticator
        CreateSecurityTokenAuthenticator(SecurityTokenRequirement
        tokenRequirement, out SecurityTokenResolver outOfBandTokenResolver)
    {
        return base.CreateSecurityTokenAuthenticator(tokenRequirement,
            out outOfBandTokenResolver);
    }
}
Friend Class MyClientCredentialsSecurityTokenManager
    Inherits ClientCredentialsSecurityTokenManager
    Private credentials As MyClientCredentials

    Public Sub New(ByVal credentials As MyClientCredentials)
        MyBase.New(credentials)
        Me.credentials = credentials
    End Sub

    Public Overrides Function CreateSecurityTokenProvider(ByVal requirement As SecurityTokenRequirement) As SecurityTokenProvider
        Dim result As SecurityTokenProvider = Nothing
        If requirement.TokenType = SecurityTokenTypes.X509Certificate Then
            Dim direction As MessageDirection = requirement.GetProperty (Of MessageDirection)(ServiceModelSecurityTokenRequirement. MessageDirectionProperty)
            If direction = MessageDirection.Output Then
                If requirement.KeyUsage = SecurityKeyUsage.Signature Then
                    result = New X509SecurityTokenProvider(Me.credentials.ClientSigningCertificate)
                Else
                    result = New X509SecurityTokenProvider(Me.credentials. ServiceEncryptingCertificate)
                End If
            Else
                If requirement.KeyUsage = SecurityKeyUsage.Signature Then
                    result = New X509SecurityTokenProvider(Me. credentials.ServiceSigningCertificate)
                Else
                    result = New X509SecurityTokenProvider(credentials. ClientEncryptingCertificate)
                End If
            End If
        Else
            result = MyBase.CreateSecurityTokenProvider(requirement)
        End If

        Return result
    End Function

    Public Overrides Function CreateSecurityTokenAuthenticator(ByVal tokenRequirement As SecurityTokenRequirement, <System.Runtime.InteropServices.Out()> ByRef outOfBandTokenResolver As SecurityTokenResolver) As SecurityTokenAuthenticator
        Return MyBase.CreateSecurityTokenAuthenticator(tokenRequirement, outOfBandTokenResolver)
    End Function
End Class

Açıklamalar

sınıfı SecurityTokenProvider , belirli ServiceModelSecurityTokenRequirementbir için belirteçleri almakla sorumludur. İsteğe bağlı olarak belirteç sağlayıcıları da belirteçlerin yenilenmesini ve iptalini destekler.

Şunlara uygulanır