RequestSecurityToken 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
表示请求安全标记的 wst:RequestSecurity 元素(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
- 继承
示例
本主题中使用的代码示例取自示例 Custom Token
。 此示例提供了自定义类,这些类支持处理简单 Web 令牌 (SWT) ,它还包括能够为 SWT 令牌提供服务的被动 STS 的实现。 STS 由派生自 SecurityTokenService的类实现。 从其令牌颁发管道调用的 SecurityTokenService 类的许多方法(如果其参数)将对象作为一个 RequestSecurityToken 对象。 有关此示例和可用于 WIF 的其他示例以及下载位置的信息,请参阅 WIF 代码示例索引。
下面的代码示例演示 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 元素 (消息) 包含用于从安全令牌服务请求安全令牌 (STS) 的参数和属性。 消息 (或元素) 缩写为 RST。 类 RequestSecurityToken 包含表示 RST 元素的属性。 RST 可以形成与 WS-Trust 定义的任何请求绑定相对应的请求;例如,颁发绑定、续订绑定、验证绑定或取消绑定。 类中的 RequestSecurityToken 许多属性对应于仅在这些绑定定义的特定请求类型中存在的元素。 根据特定 RequestSecurityToken 对象表示的请求类型或其表示的特定请求中的参数,对象的某些属性可能是 null
。
STS 在包含 wst:RequestSecurityTokenResponse 元素 (RSTR) 的消息中返回对请求的响应。 此消息由 RequestSecurityTokenResponse 类表示。
有关此类代表的元素的详细信息,请参阅适用于你的方案的 WS-Trust 规范:WS-Trust 2005 年 2 月、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 |
获取或设置 RST 或 RSTR 上 Context 属性的内容。 (继承自 WSTrustMessage) |
Delegatable |
获取或设置指定是否应将颁发的令牌标记为可委派的值。 |
DelegateTo |
获取或设置应向其委派已颁发令牌的标识。 |
Encryption |
获取或设置令牌信息以及加密时要使用的密钥。 |
EncryptionAlgorithm |
获取或设置 wst:EncryptionAlgorithm 元素的内容。 (继承自 WSTrustMessage) |
EncryptWith |
获取或设置 wst:EncryptWith 元素的内容。 (继承自 WSTrustMessage) |
Entropy |
获取或设置 wst:Entropy 元素的内容。 (继承自 WSTrustMessage) |
Forwardable |
获取或设置指定是否应将颁发的令牌标记为可转发的值。 |
Issuer |
获取或设置 wst:OnBehalfOf 标记的颁发者。 |
KeySizeInBits |
获取或设置 RequestSecurityToken (RST) 消息内的 wst:KeySize 元素的内容。 (继承自 WSTrustMessage) |
KeyType |
获取或设置 RequestSecurityToken (RST) 消息内的 wst:KeyType 元素的内容。 (继承自 WSTrustMessage) |
KeyWrapAlgorithm |
获取或设置 wst:KeyWrapAlgorithm 元素的内容。 (继承自 WSTrustMessage) |
Lifetime |
获取或设置 RequestSecurityToken (RST) 消息内的 wst:Lifetime 元素的内容。 (继承自 WSTrustMessage) |
OnBehalfOf |
获取或设置代表发出请求的标识的令牌。 |
Participants |
获取或设置将授权使用已颁发令牌的参与者。 |
ProofEncryption |
获取或设置要用于加密证明令牌的令牌。 |
Properties |
获取用来扩展对象的属性包。 (继承自 OpenObject) |
Renewing |
获取或设置 WS-Trust 续订请求的续订语义。 |
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) |