ClientCredentialsSecurityTokenManager.CreateSecurityTokenProvider(SecurityTokenRequirement) Méthode

Définition

Crée un fournisseur de jeton de sécurité.Creates a security token provider.

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

Paramètres

Retours

Exceptions

tokenRequirement a la valeur null.tokenRequirement is null.

Exemples

L'exemple de code suivant montre comment substituer cette méthode.The following code shows how to override this method.

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

Remarques

La classe SecurityTokenProvider est chargée d'obtenir des jetons pour une ServiceModelSecurityTokenRequirementdonnée.The SecurityTokenProvider class is responsible for obtaining tokens for a given ServiceModelSecurityTokenRequirement. Les fournisseurs de jetons prennent également en charge, de manière facultative, des jetons de renouvellement et d'annulation.Optionally token providers support renewing and canceling tokens as well.

S’applique à