RequestSecurityToken Classe

Definição

Representa o elemento wst:RequestSecurityToken (RST), que é usado para solicitar um token de segurança.

public ref class RequestSecurityToken : System::IdentityModel::Protocols::WSTrust::WSTrustMessage
public class RequestSecurityToken : System.IdentityModel.Protocols.WSTrust.WSTrustMessage
type RequestSecurityToken = class
    inherit WSTrustMessage
Public Class RequestSecurityToken
Inherits WSTrustMessage
Herança
RequestSecurityToken

Exemplos

O exemplo de código usado neste tópico é obtido do Custom Token exemplo. Este exemplo fornece classes personalizadas que permitem o processamento de SWT (Tokens Web Simples) e inclui uma implementação de um STS passivo capaz de servir um token SWT. O STS é implementado por uma classe derivada de SecurityTokenService. Muitos dos métodos da SecurityTokenService classe que são chamados de seu pipeline de emissão de token tomam um RequestSecurityToken objeto como um se seus parâmetros. Para obter informações sobre este exemplo e outros exemplos disponíveis para WIF e sobre onde baixá-los, consulte o Índice de Exemplo de Código WIF.

O exemplo de código a seguir mostra uma implementação do SecurityTokenService.GetScope método. O método usa um RequestSecurityToken como um de seus parâmetros e as propriedades desse parâmetro são usadas para definir propriedades no Scope objeto retornado pelo método.

// Certificate Constants
private const string SIGNING_CERTIFICATE_NAME = "CN=localhost";
private const string ENCRYPTING_CERTIFICATE_NAME = "CN=localhost";

private SigningCredentials _signingCreds;
private EncryptingCredentials _encryptingCreds;
// Used for validating applies to address, set to URI used in RP app of application, could also have been done via config
private string _addressExpected = "http://localhost:19851/";
/// <summary>
/// This method returns the configuration for the token issuance request. The configuration
/// is represented by the Scope class. In our case, we are only capable of issuing a token to a
/// single RP identity represented by the _encryptingCreds field.
/// </summary>
/// <param name="principal">The caller's principal</param>
/// <param name="request">The incoming RST</param>
/// <returns></returns>
protected override Scope GetScope(ClaimsPrincipal principal, RequestSecurityToken request)
{
    // Validate the AppliesTo address
    ValidateAppliesTo( request.AppliesTo );

    // Create the scope using the request AppliesTo address and the RP identity
    Scope scope = new Scope( request.AppliesTo.Uri.AbsoluteUri, _signingCreds );

    if (Uri.IsWellFormedUriString(request.ReplyTo, UriKind.Absolute))
    {
        if (request.AppliesTo.Uri.Host != new Uri(request.ReplyTo).Host)
            scope.ReplyToAddress = request.AppliesTo.Uri.AbsoluteUri;
        else
            scope.ReplyToAddress = request.ReplyTo;
    }
    else
    {
        Uri resultUri = null;
        if (Uri.TryCreate(request.AppliesTo.Uri, request.ReplyTo, out resultUri))
            scope.ReplyToAddress = resultUri.AbsoluteUri;
        else
            scope.ReplyToAddress = request.AppliesTo.Uri.ToString() ;
    }

    // Note: In this sample app only a single RP identity is shown, which is localhost, and the certificate of that RP is 
    // populated as _encryptingCreds
    // If you have multiple RPs for the STS you would select the certificate that is specific to 
    // the RP that requests the token and then use that for _encryptingCreds
    scope.EncryptingCredentials = _encryptingCreds;

    return scope;
}
/// <summary>
/// Validates the appliesTo and throws an exception if the appliesTo is null or appliesTo contains some unexpected address.
/// </summary>
/// <param name="appliesTo">The AppliesTo parameter in the request that came in (RST)</param>
/// <returns></returns>
void ValidateAppliesTo(EndpointReference appliesTo)
{
    if (appliesTo == null)
    {
        throw new InvalidRequestException("The appliesTo is null.");
    }

    if (!appliesTo.Uri.Equals(new Uri(_addressExpected)))
    {
        throw new InvalidRequestException(String.Format("The relying party address is not valid. Expected value is {0}, the actual value is {1}.", _addressExpected, appliesTo.Uri.AbsoluteUri));
    }
}

Comentários

O elemento wst:RequestSecurityToken (mensagem) contém os parâmetros e as propriedades usados para solicitar um token de segurança de um STS (serviço de token de segurança). A mensagem (ou elemento) é abreviada como RST. A RequestSecurityToken classe contém propriedades que representam os elementos do RST. Um RST pode formar uma solicitação que corresponda a qualquer uma das associações de solicitação definidas pelo WS-Trust; por exemplo, a associação De emissão, a associação renovação, a associação Validar ou a associação Cancelar. Muitas das propriedades na classe correspondem a RequestSecurityToken elementos que estão presentes apenas em tipos específicos de solicitações, conforme definido por essas associações. Dependendo do tipo de solicitação que um objeto específico RequestSecurityToken representa ou dos parâmetros presentes na solicitação específica que ele representa, algumas propriedades do objeto podem ser null.

O STS retorna uma resposta à solicitação em uma mensagem que contém um elemento wst:RequestSecurityTokenResponse (RSTR). Essa mensagem é representada pela RequestSecurityTokenResponse classe.

Para saber mais sobre o elemento que esta classe representa, consulte a especificação WS-Trust que se aplica ao cenário: WS-Trust – fevereiro de 2005, WS-Trust 1.3 ou WS-Trust 1.4.

Construtores

RequestSecurityToken()

Inicializa uma nova instância da classe RequestSecurityToken.

RequestSecurityToken(String)

Inicializa uma nova instância da classe RequestSecurityToken com o tipo de solicitação especificado.

RequestSecurityToken(String, String)

Inicializa uma nova instância da classe RequestSecurityToken com o tipo de solicitação especificado.

Propriedades

ActAs

Obtém ou define o token de segurança para a identidade como a qual o solicitante está tentando atuar.

AdditionalContext

Obtém ou define as informações de contexto adicionais para a solicitação.

AllowPostdating

Obtém ou define o conteúdo do elemento wst:AllowPostdating.

(Herdado de WSTrustMessage)
AppliesTo

Obtém ou define o conteúdo do elemento wsp:AppliesTo.

(Herdado de WSTrustMessage)
AuthenticationType

Obtém ou define o conteúdo do elemento wst:AuthenticationType.

(Herdado de WSTrustMessage)
BinaryExchange

Obtém ou define o conteúdo do elemento wst:BinaryExchange.

(Herdado de WSTrustMessage)
CancelTarget

Obtém ou define o token a ser cancelado em uma solicitação de cancelamento WS-Trust.

CanonicalizationAlgorithm

Obtém ou define o conteúdo do elemento wst:CanonicalizationAlgorithm.

(Herdado de WSTrustMessage)
Claims

Obtém os tipos de declaração solicitados pelo cliente (solicitante).

ComputedKeyAlgorithm

Obtém um URI que representa o algoritmo desejado a ser usado quando chaves computadas são usadas para tokens emitidos.

Context

Obtém ou define o conteúdo do atributo de contexto no RST ou no RSTR.

(Herdado de WSTrustMessage)
Delegatable

Obtém ou define um valor que especifica se o token emitido deve ser marcado como delegável.

DelegateTo

Obtém ou define a identidade à qual o token emitido deve ser delegado.

Encryption

Obtém ou define informações sobre o token e a chave a serem usados ao criptografar.

EncryptionAlgorithm

Obtém ou define o conteúdo do elemento wst:EncryptionAlgorithm.

(Herdado de WSTrustMessage)
EncryptWith

Obtém ou define o conteúdo do elemento wst:EncryptWith.

(Herdado de WSTrustMessage)
Entropy

Obtém ou define o conteúdo do elemento wst:Entropy.

(Herdado de WSTrustMessage)
Forwardable

Obtém ou define um valor que especifica se o token emitido deve ser marcado como encaminhável.

Issuer

Obtém ou define o emissor do token wst:OnBehalfOf.

KeySizeInBits

Obtém ou define o conteúdo do elemento wst:KeySize dentro de uma mensagem RequestSecurityToken (RST).

(Herdado de WSTrustMessage)
KeyType

Obtém ou define o conteúdo do elemento wst:KeyType dentro de uma mensagem RST (RequestSecurityToken).

(Herdado de WSTrustMessage)
KeyWrapAlgorithm

Obtém ou define o conteúdo do elemento wst:KeyWrapAlgorithm.

(Herdado de WSTrustMessage)
Lifetime

Obtém ou define o conteúdo do elemento wst:Lifetime dentro de uma mensagem (RST) (RequestSecurityToken).

(Herdado de WSTrustMessage)
OnBehalfOf

Obtém ou define o token para a identidade em nome da qual a solicitação está sendo feita.

Participants

Obtém ou define os participantes autorizados a usar o token emitido.

ProofEncryption

Obtém ou define o token a ser usado para criptografar o token de prova.

Properties

Obtém o recipiente de propriedades para estender o objeto.

(Herdado de OpenObject)
Renewing

Obtém ou define a semântica de renovação para uma solicitação de renovação de WS-Trust.

RenewTarget

Obtém ou define o token a ser renovado em uma solicitação de cancelamento WS-Trust.

ReplyTo

Obtém ou define o endereço a ser usado para responder à terceira parte confiável.

(Herdado de WSTrustMessage)
RequestType

Obtém ou define o elemento wst:RequestType.

(Herdado de WSTrustMessage)
SecondaryParameters

Obtém ou define os parâmetros para os quais o solicitante não é o originador.

SignatureAlgorithm

Obtém ou define o conteúdo do elemento wst:SignatureAlgorithm.

(Herdado de WSTrustMessage)
SignWith

Obtém ou define o conteúdo do elemento wst:SignWith.

(Herdado de WSTrustMessage)
TokenType

Obtém ou define o conteúdo do elemento wst:TokenType.

(Herdado de WSTrustMessage)
UseKey

Obtém ou define o conteúdo do elemento wst:UseKey.

(Herdado de WSTrustMessage)
ValidateTarget

Obtém ou define o token a ser validado em uma solicitação de validação WS-Trust.

Métodos

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Aplica-se a

Confira também