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

how can i access the raw xml of the saml token?

我可以使用如下代码获取所有声明值:

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

foreach (Claim claim in cid.Claims)
{
   ...
}

但我希望能够读取整个令牌,因为我怀疑我需要的一些信息位于令牌的非属性部分。 我已经阅读了有关安全令牌可视化控件的信息,但我无法使用它,因为我不希望最终用户看到控件输出,但想通过电子邮件发送原始令牌 xml。

首先你必须配置WIF来保存"BootstrapContext":

<system.identityModel>
  <identityConfiguration saveBootstrapContext="true">

然后你可以在"ClaimsIdentity"

上使用属性"BootstrapContext"
ClaimsPrincipal cp = Thread.CurrentPrincipal as ClaimsPrincipal;
ClaimsIdentity cid = (ClaimsIdentity)cp.Identity; 
BootstrapContext bc = cid.BootstrapContext as BootstrapContext;

并在 BootstrapContext 上使用 "Token" 属性 获取 saml 令牌的原始 xml。

另请参阅:

https://msdn.microsoft.com/en-us/library/system.security.claims.claimsidentity.bootstrapcontext(v=vs.110).aspx

https://msdn.microsoft.com/en-us/library/system.identitymodel.tokens.bootstrapcontext(v=vs.110).aspx

http://www.cloudidentity.com/blog/2012/11/30/using-the-bootstrapcontext-property-in-net-4-5-2/