2017-10-11 6 views
0

Ich kann alle Ansprüche Werte mit Code wie folgt erhalten:Wie kann ich auf das rohe XML des SAML Tokens zugreifen?

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

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

, aber ich möchte in der Lage sein, die gesamten Token zu lesen, wie ich ein paar Infos i des Tokens in einem nicht-Attribute Abschnitt muß vermuten, . Ich habe gelesen über die Sicherheitstoken-Visualizer-Steuerelement, aber es ist nicht etwas, das ich verwenden kann, weil ich nicht möchte, dass Endbenutzer die Steuerausgabe sehen, aber das rohe Token XML per E-Mail senden möchte.

Antwort

1

Zuerst müssen Sie WIF konfigurieren, dass die "BootstrapContext" zu speichern:

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

Dann können Sie die Eigenschaft "BootstrapContext" auf dem "ClaimsIdentity" verwenden

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

und verwenden Sie die "Token" Eigenschaft im BootstrapContext, um das rohe XML des saml-Tokens zu erhalten. auch

Siehe:

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/

+0

ich die Antwort akzeptiert haben. Ich bekomme eine BootstrapContext-Referenz, aber die Eigenschaft .Token ist null. Die Eigenschaft .SecurityToken sieht gut aus, aber ich benötige den Rohtext der Eigenschaft .Token. irgendwelche Vorschläge? –

+1

gelöst! SecurityToken bootstrapToken = bc.SecurityToken; mit (var wrtr = XmlWriter.Create (sbToken)) { neue Saml2SecurityTokenHandler (neue SamlSecurityTokenRequirement()). WriteToken (WRTR, BootstrapToken); } theXml = sbToken.ToString(); –

Verwandte Themen