에서 주장을 읽고 SamlSecurityToken
해독하는 방법을 : 나는 발급 된 토큰 클레임 (예를 들어, 사용자 이메일)을 읽는거야 다음 단계로내가 코드에서 ADFS에서 인증 SamlSecurityToken
var factory = new WSTrustChannelFactory(
new UserNameWSTrustBinding(SecurityMode.TransportWithMessageCredential),
"https://my-adfs-domain.com/adfs/services/trust/13/UserNameMixed")
{
TrustVersion = System.ServiceModel.Security.TrustVersion.WSTrust13,
Credentials =
{
UserName =
{
UserName = "username",
Password = "password"
}
}
};
var token = (GenericXmlSecurityToken)factory.CreateChannel().Issue(
new RequestSecurityToken
{
RequestType = RequestTypes.Issue,
AppliesTo = new EndpointAddress("https://my-service-domain.com"),
KeyType = KeyTypes.Symmetric,
RequestDisplayToken = true
});
SamlSecurityToken decryptedToken;
using (var stream = new MemoryStream())
{
using (var writer = XmlWriter.Create(stream))
token.TokenXml.WriteTo(writer);
stream.Seek(0, SeekOrigin.Begin);
using (var reader = XmlReader.Create(stream))
decryptedToken = (SamlSecurityToken)FederatedAuthentication
.FederationConfiguration.IdentityConfiguration
.SecurityTokenHandlers.ReadToken(reader);
}
var userEmail = decryptedToken.Assertion.Statements
.OfType<SamlAttributeStatement>().Single()
.Attributes[0].AttributeValues[0];
합니다.
위의 코드로 관련 정보의 일부를 추출 할 수 있습니다.
그러나 나는 발행 된 SamlSecurityToken
에서 전체 소유권 주장 목록을 추출하는보다 쉽고 안전한 방법을 찾고 있습니다.