Ограничение аудитории в утверждении SAML - PullRequest
3 голосов
/ 28 августа 2009

Может ли кто-нибудь указать мне направление создания примера SamlAssertion, который включает AudienceRestriction в узле Условия?

ниже приведен пример моего кода, куда я хотел бы поместить его:

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

Желаемый XML выглядит примерно так:

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

Я вижу, что есть конструктор для SamlConditions класса, который учитывает третий параметр, условия и что есть класс SamlAudienceRestriction, но я не могу понять, как соединить эти два. Я думаю, что если бы я увидел немного кода, он стал бы мне до боли очевиден, но, к сожалению, мой google-foo меня сегодня подводит.

1 Ответ

5 голосов
/ 29 августа 2009

Клянусь, я потратил несколько часов, пытаясь выяснить это, прежде чем публиковать ... но очевидно, что публиковать было именно то, что мне нужно было, чтобы увидеть ответ. Ниже приведен код, который я сделал, чтобы создать ограничение аудитории для 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
    );

Если кто-то видит что-то не так или знает о лучшем / более эффективном способе, пожалуйста, дайте мне знать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...