Pergunta

Alguém pode me apontar na direção de um exemplo criando uma samlassertion que inclui um Audiencerestriction no nó Condições?

Abaixo está um exemplo do meu código em que eu gostaria de colocar:

//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));

O XML desejado se parece mais disso:

<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>

Vejo que há um construtor para SamlConditions Classe que permite um terceiro parâmetro, as condições e que há uma classe Samlaudiencerestiction, mas não consigo descobrir como conectar os dois. Eu acho que se eu visse um pouco de código, isso se tornaria dolorosamente óbvio para mim, mas infelizmente, meu Google-Foo está falhando hoje.

Foi útil?

Solução

Juro que passei várias horas tentando descobrir isso antes de postar ... mas aparentemente postar era exatamente o que eu precisava para ver a resposta. Abaixo está o código que fiz para criar a restrição do público para o 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
    );

Se alguém vê algo errado ou souber de uma maneira melhor/mais eficiente, entre em contato.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top