ServiceCredentialsSecurityTokenManager.CreateSecurityTokenProvider Metoda

Definicja

Tworzy dostawcę tokenu zabezpieczającego na podstawie elementu SecurityTokenRequirement.

C#
public override System.IdentityModel.Selectors.SecurityTokenProvider CreateSecurityTokenProvider(System.IdentityModel.Selectors.SecurityTokenRequirement requirement);

Parametry

requirement
SecurityTokenRequirement

Wymaganie dotyczące tokenu zabezpieczającego.

Zwraca

Dostawca tokenów zabezpieczających.

Wyjątki

requirement to null.

Nie można utworzyć dostawcy tokenu zabezpieczającego dla przekazanego requirement elementu.

Przykłady

Poniższy kod pokazuje, jak zastąpić tę metodę.

C#
internal class MyServiceCredentialsSecurityTokenManager :
    ServiceCredentialsSecurityTokenManager
{
    MyServiceCredentials credentials;

    public MyServiceCredentialsSecurityTokenManager(
        MyServiceCredentials 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.Input)
            {
                if (requirement.KeyUsage == SecurityKeyUsage.Exchange)
                {
                    result = new X509SecurityTokenProvider(
                        credentials.ServiceEncryptingCertificate);
                }
                else
                {
                    result = new X509SecurityTokenProvider(
                        credentials.ClientSigningCertificate);
                }
            }
            else
            {
                if (requirement.KeyUsage == SecurityKeyUsage.Signature)
                {
                    result = new X509SecurityTokenProvider(
                        credentials.ServiceSigningCertificate);
                }
                else
                {
                    result = new X509SecurityTokenProvider(
                        credentials.ClientEncryptingCertificate);
                }
            }
        }
        else
        {
            result = base.CreateSecurityTokenProvider(requirement);
        }
        return result;
    }
}

Uwagi

Klasa SecurityTokenProvider jest odpowiedzialna za uzyskanie tokenów dla danego ServiceModelSecurityTokenRequirementelementu . Opcjonalnie dostawcy tokenów mogą również obsługiwać odnawianie i anulowanie tokenów. Dostawca tokenu może buforować tokeny, jeśli jest skonfigurowany do tego celu.

Dotyczy

Produkt Wersje
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1