用于创建SamlSecurityToken实例的任何示例?

时间:2012-12-05 04:59:52

标签: security wif saml

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

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

1 个答案:

答案 0 :(得分: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); 
  } 
}