0

我不确定这是否是一个好问题,但是:

我试图在互联网上找到任何用于创建 System.IdentityModel.Tokens.SamlSecurityToken 和 System.IdentityModel.Tokens.SamlAssertion 实例的示例,但我找不到...任何帮助?

4

1 回答 1

2

知道了!来源(我写问题时服务器没有响应):http: //developers.de/blogs/damir_dobric/archive/2007/02/22/Creating-of-SAML-token.aspx

private static void Main(string[] args)
{
  SamlAssertion assertion = createSamlAssertion();
  SamlSecurityToken samlToken = new SamlSecurityToken(assertion); 
} 

/// <summary> 
/// Creates some Test SAML assertion 
/// </summary> 
/// <returns></returns> 
private static SamlAssertion createSamlAssertion() 
{ 
  // Here we create some SAML assertion with ID and Issuer name. 
  SamlAssertion assertion = new SamlAssertion(); 
  assertion.AssertionId = "DaenetSamlTest"; 
  assertion.Issuer = "damir"; 

  // 
  // Create some SAML subject. 
  SamlSubject samlSubject = new SamlSubject(); 
  samlSubject.Name = "My Subject"; 

  // 
  // Create one SAML attribute with few values. 
  SamlAttribute attr = new SamlAttribute(); 
    attr.Namespace = http://daenet.eu/saml; 
    attr.AttributeValues.Add("Some Value 1"); 
  attr.AttributeValues.Add("Some Value 2"); 

  attr.Name = "My ATTR Value"; 

  // 
  // Now create the SAML statement containing one attribute and one subject. 
  SamlAttributeStatement samlAttributeStatement = new SamlAttributeStatement(); 
  samlAttributeStatement.Attributes.Add(attr); 
  samlAttributeStatement.SamlSubject = samlSubject; 

  // Append the statement to the SAML assertion. 
   assertion.Statements.Add(samlAttributeStatement); 

  return assertion; 
} 

这是为了签署断言

/// <summary> 
/// Creates some signed Test SAML assertion. 
/// </summary> 
/// <returns></returns> 
private static SamlAssertion createSamlAssertion() 
{
  // 
  // Create certificate from file. It must contain private key! 
  X509Certificate2 cert = new X509Certificate2("filename.cert"); 

  // The private key contained in the certificate will be used to sign the   
  token.   
  X509AsymmetricSecurityKey signingKey = new X509AsymmetricSecurityKey(cert); 
  SamlAssertion assertion = createSamlAssertion(); 

  // 
  // Signing credentials are consisted 
  // of private key in the certificate (see above), 
  // the signature algorithm, security algortihm and key identifier. 
  assertion.SigningCredentials = 
  new SigningCredentials(signingKey, SecurityAlgorithms.RsaSha1Signature,     
  SecurityAlgorithms.Sha1Digest, 
  new SecurityKeyIdentifier(new X509ThumbprintKeyIdentifierClause(cert))); 

  // Finally create the SamlSecurityToken from the assertion 
  SamlSecurityToken samlToken = new SamlSecurityToken(assertion); 

  // Create a SecurityTokenSerializer that 
  // will be used to serialize the SamlSecurityToken 
  WSSecurityTokenSerializer ser = new WSSecurityTokenSerializer(); 
  using (XmlWriter xWriter = XmlWriter.Create("saml.xml")) 
  { 
    ser.WriteToken(xWriter, samlToken); 
  } 
} 
于 2012-12-06T22:01:25.533 回答