2016-10-05 7 views
0

Ниже приведен образец ответа, который я получаю как ответ SAML. Как я могу использовать атрибут «NameID» из приведенного ниже ответа XML, какой код я должен включить, чтобы иметь возможность отключить этот атрибут и где он должен быть включен в мое приложение ASP.NET (C#)?Потребляйте ответ SAML 2.0 с использованием ADFS в качестве ретрансляционной стороны

<Subject> 
     <NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress">email</NameID> 
     <SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"> 
      <SubjectConfirmationData InResponseTo="_b221ce73-ae7e-4119-bacd-6e5d3fb457a1" 
       NotOnOrAfter="2015-10-16T14:15:04.877Z" Recipient="/ACS/Post.aspx"/> 
     </SubjectConfirmation> 
    </Subject> 
    <Conditions NotBefore="2015-10-16T14:10:04.873Z" NotOnOrAfter="2015-10-16T15:10:04.873Z"> 
     <AudienceRestriction> 
      <Audience>yourAudience</Audience> 
     </AudienceRestriction> 
    </Conditions> 
    <AttributeStatement> 
     <Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"> 
      <AttributeValue>[email protected]</AttributeValue> 
     </Attribute> 
     <Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname"> 
      <AttributeValue>John</AttributeValue> 
     </Attribute> 
     <Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname"> 
      <AttributeValue>Doe</AttributeValue> 
     </Attribute> 
    </AttributeStatement> 
    <AuthnStatement AuthnInstant="2015-10-16T14:10:04.556Z" 
     SessionIndex="_0660f911-7f04-4616-8dd6-dea65ec0032b"> 
     <AuthnContext> 
      <AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</AuthnContextClassRef> 
     </AuthnContext> 
    </AuthnStatement> 
</Assertion> 
+0

Осуществляете ли вы аутентификацию с помощью ADFS вручную? Если да, почему бы вам не использовать WIF (Windows Identity Foundation)? –

+0

Спасибо .. :) Да. Я также проверяю WIF. Можете ли вы предложить мне точную ссылку, где я могу найти шаги для ее реализации. –

+0

Проверьте https://msdn.microsoft.com/en-us/library/hh545401(v=vs.110).aspx, в конце этой страницы у вас есть ссылки с инструкциями для веб-форм и MVC. –

ответ

0

Если по каким-то причинам вы предпочитаете иметь дело с SAML лексемы непосредственно из кода, вы можете позвонить SamlSecurityTokenHandler.ReadToken и искать SamlSubjectStatement внутри анализируемой лексемы:

var token = 
    new SamlSecurityTokenHandler 
    { 
     Configuration = new SecurityTokenHandlerConfiguration() 
    }.ReadToken(new XmlTextReader(...)); 
subjectStatements = token.Assertion.Statements.OfType<SamlSubjectStatement>(); 

не забудьте передать XML точно так, как без дополнительного форматирования, поскольку токен обычно подписывается.

+0

Спасибо .. Я попробую это. :) –