C# 如何访问saml令牌的原始xml?

C# 如何访问saml令牌的原始xml?,c#,saml,wif,ws-federation,C#,Saml,Wif,Ws Federation,我可以通过如下代码获得所有索赔值: ClaimsPrincipal cp = Thread.CurrentPrincipal as ClaimsPrincipal; ClaimsIdentity cid = (ClaimsIdentity)cp.Identity; foreach (Claim claim in cid.Claims) { ... } 但我希望能够读取整个令牌,因为我怀疑令牌的非属性部分中有我需要的一些信息。 我已经阅读了有关security t

我可以通过如下代码获得所有索赔值:

ClaimsPrincipal cp = Thread.CurrentPrincipal as ClaimsPrincipal;            
ClaimsIdentity cid = (ClaimsIdentity)cp.Identity;

foreach (Claim claim in cid.Claims)
{
   ...
}
但我希望能够读取整个令牌,因为我怀疑令牌的非属性部分中有我需要的一些信息。
我已经阅读了有关security token visualizer控件的内容,但我不能使用它,因为我不希望最终用户看到控件输出,而是希望通过电子邮件发送原始令牌xml。

首先必须配置WIF以保存“BootstrapContext”:

并使用BootstrapContext上的“Token”属性获取saml令牌的原始xml

另见:


首先,您必须配置WIF以保存“BootstrapContext”:

并使用BootstrapContext上的“Token”属性获取saml令牌的原始xml

另见:


我已经接受了答案。我获得BootstrapContext引用,但.Token属性为null。.SecurityToken属性看起来不错,但我需要.Token属性的原始文本。有什么建议吗?解决了!SecurityToken bootstrapToken=bc.SecurityToken;使用(var wrtr=XmlWriter.Create(sbToken)){new Saml2SecurityTokenHandler(new SamlSecurityTokenRequirement()).WriteToken(wrtr,bootstrapToken);}xml=sbToken.ToString();我已经接受了答案。我获得BootstrapContext引用,但.Token属性为null。.SecurityToken属性看起来不错,但我需要.Token属性的原始文本。有什么建议吗?解决了!SecurityToken bootstrapToken=bc.SecurityToken;使用(var wrtr=XmlWriter.Create(sbToken)){new Saml2SecurityTokenHandler(new SamlSecurityTokenRequirement()).WriteToken(wrtr,bootstrapToken);}xml=sbToken.ToString();
<system.identityModel>
  <identityConfiguration saveBootstrapContext="true">
ClaimsPrincipal cp = Thread.CurrentPrincipal as ClaimsPrincipal;
ClaimsIdentity cid = (ClaimsIdentity)cp.Identity; 
BootstrapContext bc = cid.BootstrapContext as BootstrapContext;