2010-08-20 3 views
0

Я пытаюсь выполнить свою первую интеграцию SSO с использованием SAML 2.0. Я использую:Начало работы с SAML2.0

http://www.codeproject.com/KB/aspnet/DotNetSamlPost.aspx?msg=3562384

как пример для себя.

В настоящее время я просто пытаюсь успешно опубликовать их URL. Сайт, к которому мы подключаемся, довольно велик и использует решение от ping-identity для управления их sso, которое часто, кажется, дает мне меньше, чем полезные ошибки. Я работал через несколько, но это один имеет меня в тупик:

UnknownBindingException: (? Вы печатаете протокол конечной точки URL непосредственно в адресной строке вашего браузера ) Запрос содержит недостаточно информации для определения протокола связывания ,

Кто-нибудь есть какие-либо идеи, что может привести к этому, мой SAML, что я отправляю выглядит так:

<Response xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" ID="_3b052151-fb4f-4e10-89bd-d65ef5141e9d" Version="2.0" IssueInstant="2010-08-20T20:36:02.8093696Z" Destination="https://******/sp/ACS.saml2" xmlns="urn:oasis:names:tc:SAML:2.0:protocol"> 
    <Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">www.******.org</Issuer> 
    <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> 
    <SignedInfo> 
     <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /> 
     <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" /> 
     <Reference URI="#_3b052151-fb4f-4e10-89bd-d65ef5141e9d"> 
     <Transforms> 
      <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /> 
      <Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /> 
     </Transforms> 
     <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /> 
     <DigestValue>****</DigestValue> 
     </Reference> 
    </SignedInfo> 
    <SignatureValue>*******</SignatureValue> 
    </Signature> 
    <Status> 
    <StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success" /> 
    </Status> 
    <Assertion Version="2.0" ID="_d0f34b54-cf0b-49c7-9a50-f60842b7e0d2" IssueInstant="2010-08-20T20:36:02.8103697Z" xmlns="urn:oasis:names:tc:SAML:2.0:assertion"> 
    <Issuer>www.*******.org</Issuer> 
    <Subject> 
     <NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent">adamb</NameID> 
     <SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"> 
     <SubjectConfirmationData NotOnOrAfter="2010-08-20T20:41:02.8103697Z" Recipient="https://*****.com:9031/sp/ACS.saml2" /> 
     </SubjectConfirmation> 
    </Subject> 
    <Conditions NotBefore="2010-08-20T20:36:02.8103697Z" NotOnOrAfter="2010-08-20T20:41:02.8103697Z"> 
     <AudienceRestriction> 
     <Audience>*****</Audience> 
     </AudienceRestriction> 
    </Conditions> 
    <AuthnStatement AuthnInstant="2010-08-20T20:36:02.8103697Z"> 
     <AuthnContext> 
    <AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:unspecified</AuthnContextClassRef> 
     </AuthnContext> 
    </AuthnStatement> 
    </Assertion> 
</Response> 

Любая помощь очень ценится,

Спасибо.

ответ

3

Когда я прочитал ваш вопрос, ваша заявка будет ServiceProvider (SP) в федерации SAML2, где Ping - IdentityProvider (IdP). И вы отметили вопрос C#, поэтому я предполагаю, что ваш SP реализован в .Net

Какая структура SAML2 вы используете или вы сами катаетесь? Если вы делаете свою собственную структуру SAML2, я бы рекомендовал использовать OIOSAML.net, который является открытым исходным кодом в соответствии с лицензией Mozilla (бесплатный для использования в любых целях). Вы можете проверить источник здесь: http://view.svn.softwareborsen.dk/cgi-bin/index.cgi/Softwareborsen/oiosaml.net/branches/ (вся документация на английском языке).

Он активно поддерживается датским правительством, и он был протестирован с помощью Ping, ADFSv2, SimpleSamlPhp и многих других SAML2 IdP. В настоящее время он используется сотнями датских веб-сайтов в федерации с Ping как IdP.

Относительно исключения, которое вы получаете, какое обязательство вы собираетесь использовать: перенаправление HTTP или что-то еще? Предполагая, что это перенаправление HTTP, я рекомендую прочитать соответствующий раздел, начиная с p15 в спецификации привязки SAML2: http://docs.oasis-open.org/security/saml/v2.0/saml-bindings-2.0-os.pdf

0

Похоже, что вы либо A) Отправляете утверждение через метод GET, а не POST или B). Вы неправильно отформатировали HTML-форму, содержащую утверждение, которое отправляется вашему партнеру.