Поделиться через


RequestSecurityToken Класс

Определение

Представляет элемент wst:RequestSecurityToken (RST), который используется для запроса токена безопасности.

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
Наследование
RequestSecurityToken

Примеры

Пример кода, используемый в этом разделе, взят из Custom Token примера. В этом примере представлены пользовательские классы, которые позволяют обрабатывать простые веб-маркеры (SWT), и он включает реализацию пассивной службы sts, которая может обслуживать маркер SWT. StS реализуется классом, производным от SecurityTokenService. Многие методы SecurityTokenService класса, вызываемые из конвейера выдачи маркеров, принимают RequestSecurityToken объект как один, если их параметры. Сведения об этом и других примерах, доступных для WIF, и о том, где их можно скачать, см. в разделе WiF Code Sample Index.

В следующем примере кода показана реализация метода SecurityTokenService.GetScope. Метод принимает RequestSecurityToken в качестве одного из своих параметров, а свойства этого параметра используются для задания свойств Scope объекта, возвращаемого методом .

// 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));
    }
}

Комментарии

Элемент wst:RequestSecurityToken (message) содержит параметры и свойства, используемые для запроса маркера безопасности из службы маркеров безопасности (STS). Сообщение (или элемент) называется RST. Класс RequestSecurityToken содержит свойства, представляющие элементы RST. RST может сформировать запрос, соответствующий любой из привязок запросов, определенных WS-Trust; например, привязка выдачи, привязка продления, привязка Проверить или Отмена. Многие свойства в RequestSecurityToken классе соответствуют элементам, которые присутствуют только в определенных типах запросов в соответствии с этими привязками. В зависимости от типа запроса, который представляет конкретный RequestSecurityToken объект, или параметров, присутствующих в конкретном запросе, который он представляет, некоторые свойства объекта могут иметь значение null.

StS возвращает ответ на запрос в сообщении, содержавшем элемент wst:RequestSecurityTokenResponse (RSTR). Это сообщение представлено классом RequestSecurityTokenResponse .

Дополнительные сведения об элементе, представляемом этим классом, см. в спецификации WS-Trust, которая применяется к вашему сценарию: WS-Trust от февраля 2005 г., WS-Trust 1.3 или WS-Trust 1.4.

Конструкторы

RequestSecurityToken()

Инициализирует новый экземпляр класса RequestSecurityToken.

RequestSecurityToken(String)

Инициализирует новый экземпляр класса RequestSecurityToken с указанным типом запроса.

RequestSecurityToken(String, String)

Инициализирует новый экземпляр класса RequestSecurityToken с указанным типом запроса.

Свойства

ActAs

Получает или задает токен безопасности для удостоверения, в роли которого пытается выступать запрашивающая сторона.

AdditionalContext

Получает или задает дополнительные сведения о контексте, необходимые для запроса.

AllowPostdating

Получает или задает содержимое элемента wst:AllowPostdating.

(Унаследовано от WSTrustMessage)
AppliesTo

Получает или задает содержимое элемента wsp:AppliesTo.

(Унаследовано от WSTrustMessage)
AuthenticationType

Получает или задает содержимое элемента wst:AuthenticationType.

(Унаследовано от WSTrustMessage)
BinaryExchange

Получает или задает содержимое элемента wst:BinaryExchange.

(Унаследовано от WSTrustMessage)
CancelTarget

Получает или задает токен для отмены в запросе WS-Trust на отмену.

CanonicalizationAlgorithm

Получает или задает содержимое элемента wst:CanonicalizationAlgorithm.

(Унаследовано от WSTrustMessage)
Claims

Получает типы требований, запрашиваемые клиентом (запрашивающей стороной).

ComputedKeyAlgorithm

Получает универсальный код ресурса (URI), представляющий требуемый алгоритм, используемый, когда вычисляемые ключи используются для выданных токенов.

Context

Получает или задает содержимое атрибута Context в RST или RSTR.

(Унаследовано от WSTrustMessage)
Delegatable

Получает или задает значение, определяющее, должен ли выданный токен быть помечен как допускающий делегирование.

DelegateTo

Получает или задает удостоверение, которому должен быть делегирован выданный токен.

Encryption

Получает или задает сведения о токене и ключе, используемые при шифровании.

EncryptionAlgorithm

Получает или задает содержимое элемента wst:EncryptionAlgorithm.

(Унаследовано от WSTrustMessage)
EncryptWith

Получает или задает содержимое элемента wst:EncryptWith.

(Унаследовано от WSTrustMessage)
Entropy

Получает или задает содержимое элемента wst:Entropy.

(Унаследовано от WSTrustMessage)
Forwardable

Получает или задает значение, определяющее, должен ли выданный токен быть помечен как допускающий переадресацию.

Issuer

Получает или задает поставщика токена wst:OnBehalfOf.

KeySizeInBits

Получает или задает содержимое элемента wst:KeySize внутри сообщения RequestSecurityToken (RST).

(Унаследовано от WSTrustMessage)
KeyType

Получает или задает содержимое элемента wst:KeyType внутри сообщения RequestSecurityToken (RST).

(Унаследовано от WSTrustMessage)
KeyWrapAlgorithm

Получает или задает содержимое элемента wst:KeyWrapAlgorithm.

(Унаследовано от WSTrustMessage)
Lifetime

Получает или задает содержимое элемента wst:Lifetime внутри сообщения RequestSecurityToken (RST).

(Унаследовано от WSTrustMessage)
OnBehalfOf

Получает или задает токен для удостоверения, от имени которого делается запрос.

Participants

Получает или задает участников, которые имеют право использовать выданный токен.

ProofEncryption

Получает или задает токен, используемый для шифрования токена проверки.

Properties

Получает контейнер свойств для расширения объекта.

(Унаследовано от OpenObject)
Renewing

Получает или задает семантику возобновления для запроса WS-Trust Renew.

RenewTarget

Получает или задает токен для возобновления в запросе WS-Trust на возобновление.

ReplyTo

Получает или задает адрес, используемый для отклика проверяющей стороне.

(Унаследовано от WSTrustMessage)
RequestType

Получает или задает элемент wst:RequestType.

(Унаследовано от WSTrustMessage)
SecondaryParameters

Получает или задает параметры, для которых запрашивающая сторона не является инициатором.

SignatureAlgorithm

Получает или задает содержимое элемента wst:SignatureAlgorithm.

(Унаследовано от WSTrustMessage)
SignWith

Получает или задает содержимое элемента wst:SignWith.

(Унаследовано от WSTrustMessage)
TokenType

Получает или задает содержимое элемента wst:TokenType.

(Унаследовано от WSTrustMessage)
UseKey

Получает или задает содержимое элемента wst:UseKey.

(Унаследовано от WSTrustMessage)
ValidateTarget

Получает или задает токен для проверки в запросе WS-Trust на проверку.

Методы

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Применяется к

См. также раздел