Pregunta

Por favor alguien puede apuntar en la dirección de un ejemplo creando un SamlAssertion que incluye un AudienceRestriction en el nodo Condiciones?

A continuación hay un ejemplo de mi código donde me gustaría ponerlo:

//Create the SAML Assertion
SamlAssertion samlAssert = new SamlAssertion();
samlAssert.AssertionId = Convert.ToBase64String(encoding.GetBytes(System.Guid.NewGuid().ToString()));
samlAssert.Issuer = "http://www.example.com/";

// Set up the conditions of the assertion - Not Before and Not After
samlAssert.Conditions = new SamlConditions(DateTime.Now, DateTime.Now.AddMinutes(5));

El XML deseado es como la siguiente:

<Assertion xmlns="urn:oasis:names:tc:SAML:1.0:assertion" AssertionID="_e835eca079133299b2f8a2a63ad72fe8" IssueInstant="2007-02-07T20:22:58.165Z" Issuer="http://www.example.com/" MajorVersion="1" MinorVersion="1">
 <Conditions NotBefore="2007-02-07T20:22:58.162Z" NotOnOrAfter="2007-02-07T20:24:58.162Z">
  <AudienceRestrictionCondition>
   <Audience>http://www.example2.com</Audience> 
  </AudienceRestrictionCondition>
 </Conditions>

veo que hay un constructor para SamlConditions clase que permite para una tercera parámetro, las condiciones, y que hay una clase SamlAudienceRestriction, pero me parece que no puede encontrar la manera de conectar los dos. Creo que si tuviera que ver un poco de código, se convertiría en dolorosamente obvio para mí, pero, por desgracia, mi google-foo me está fallando en la actualidad.

¿Fue útil?

Solución

Juro pasé varias horas tratando de la forma de saberlo antes de publicar ... pero al parecer la publicación era exactamente lo que necesitaba para ver la respuesta. A continuación se muestra el código que hice para crear la restricción audiencia para el SAML:

//Create the SAML Assertion
SamlAssertion samlAssert = new SamlAssertion();
samlAssert.AssertionId = Convert
    .ToBase64String(
    encoding.GetBytes(System.Guid.NewGuid().ToString()));
samlAssert.Issuer = "http://www.example.com/";

// Set up the conditions of the assertion - Not Before and Not After
Uri[] approvedAudiences = {new Uri("http://www.example2.com")};
List<SamlCondition> conditions = new List<SamlCondition>();
conditions.Add(new SamlAudienceRestrictionCondition(approvedAudiences));
samlAssert.Conditions = new SamlConditions(
    DateTime.Now, 
    DateTime.Now.AddMinutes(5), 
    conditions
    );

Si alguien ve algo malo, o sabe de una manera mejor / más eficiente, por favor hágamelo saber.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top