2016-01-05 3 views
0

Мне нужно некоторое руководство по реализации моего SSO. Я успешно выполнил несколько реализаций SAML2, но в этом есть что-то не так: -Я считаю, что это незначительно, но я не уверен, чего не хватает, и я не вижу много информации в журналах на стороне агента: -/SSO Authentication

Итак:

  • IDP Начатый
  • Я СП Использование OpenAm 10
  • Использование J2EE Agent
  • же конфигурация работает на прод, а также для других клиентов
  • SAML 2 Реализация
  • Крест домена позволяют
  • Сертификат загружается в клиенте IDP метаданных на моей стороне

Этот вопрос, когда я получаю ответ от поставщика, они получают перенаправляется CDCSERVLET на страницу входа в OpenAm .. Я не понимаю, почему они не аутентифицированы.

Вот ответ:

<Response ID="_FAD290A87DB14BC4A8A8F435DEBDEBB3" Version="2.0" IssueInstant="2015-12-31T20:59:34.1012911Z" Destination="https://sso.com:443/sp/Consumer/metaAlias/xxx-test/sp" xmlns="urn:oasis:names:tc:SAML:2.0:protocol"> 
     <Issuer xmlns="urn:oasis:names:tc:SAML:2.0:assertion">xxx</Issuer> 
     <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> 
        <SignedInfo> 
           <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> 
           <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> 
           <Reference URI="#_FAD290A87DB14BC4A8A8F435DEBDEBB3"> 
              <Transforms> 
                 <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/> 
                 <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/> 
              </Transforms> 
              <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> 
              <DigestValue>HPTUTyPjegeyjDW5lmMb8ggbwas=</DigestValue> 
           </Reference> 
        </SignedInfo> 
        <SignatureValue>4Ek0xpDPj5Q==</SignatureValue> 
     </Signature> 
     <Status> 
        <StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/> 
     </Status> 
     <Assertion Version="2.0" ID="_BCA1E13E205E4CDCB7AB903E90606DBD" IssueInstant="2015-12-31T20:59:34.1012911Z" xmlns="urn:oasis:names:tc:SAML:2.0:assertion"> 
        <Issuer>xxx</Issuer> 
        <Subject> 
           <NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified">100</NameID> 
           <SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"> 
              <SubjectConfirmationData NotOnOrAfter="2015-12-31T21:04:34.1948917Z" Recipient="https://sso.com:443/sp/Consumer/metaAlias/xxx-test/sp"/> 
           </SubjectConfirmation> 
        </Subject> 
        <Conditions NotBefore="2015-12-31T20:54:34.1012911Z" NotOnOrAfter="2015-12-31T21:04:34.1012911Z"> 
           <AudienceRestriction> 
              <Audience>xxx-test:saml2</Audience> 
           </AudienceRestriction> 
        </Conditions> 
        <AuthnStatement AuthnInstant="2015-12-31T20:59:34.1012911Z"> 
           <SubjectLocality Address="000.0.0.000"/> 
           <AuthnContext> 
              <AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:Password</AuthnContextClassRef> 
           </AuthnContext> 
        </AuthnStatement> 
        <AttributeStatement> 
           <Attribute Name="AIN"> 
              <AttributeValue xsi:type="xsd:string">100</AttributeValue> 
           </Attribute> 
        </AttributeStatement> 
     </Assertion> 

Что я заметил в этом утверждении есть:

  • Там нет сертификата в подписи (Все мой клиент имеет в подписи с сертификатом)

На моей стороне для SP, я уверен, что:

  • Контекст аутентификации установлен пароль, чтобы соответствовать утверждению,
  • I Отключить Федерацию, если NameID является Неизвестно, и я использую NameID, как UserId

Все, что должно быть хорошо с моей стороны, и я не понимаю, почему клиент перенаправляется на страницу входа OpenAM

Любая помощь будет удивительным !!

Спасибо!

EDIT:

Таким образом, у меня был продавец изменил утверждение отправить <NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:transient">xxxx</NameID> И я добавил пользователя в области, а также использовать его в качестве переходного пользователя в моей конфигурации SP, но это привело к тому же вопросу !!

Когда NameID-формат был установлен как неопределенные, я создал, что 100 пользователей в области как субъекта, но она по-прежнему не работает: -/

EDIT 3: Вот некоторая информация о сессии:

<SessionNotification vers="1.0" notid="117627"> 
<Session sid="AQIC5wM2LY4SfcxfxdL6szA_aGlQEkFtHROifZHX_VpqHag.*AAJTSQACMDIAAlNLABM3OTI1OTk2NjE0MDA1MjA2MTcw*" stype="user" cid="id=user-test,ou=user,dc=openam,dc=forgerock,dc=org" cdomain="dc=openam,dc=forgerock,dc=org" maxtime="60" maxidle="30" maxcaching="5" timeidle="1800" timeleft="1529" state="destroyed"> 
<Property name="CharSet" value="UTF-8"></Property> 
<Property name="UserId" value="user-test"></Property> 
<Property name="FullLoginURL" value="/sp/UI/Login?ForceAuthn=false&amp;MinorVersion=0&amp;RequestID=see601a9040131cc9c9d09947cf1addab3e4df292&amp;refererservlet=https%3A%2F%2Fs-----6ForceAuthn%3Dfalse%26ProviderID%3Dhttps%253A%252F%252Fstagingcng.inspirus365.com%253A443%252F%253FRealm%253D%25252F%26MinorVersion%3D0%26Federate%3Dfalse%26IssueInstant%3D2016-01-12T21%253A30%253A22Z%26MajorVersion%3D1&amp;IssueInstant=2016-01-12T21%3A30%3A22Z&amp;MajorVersion=1"></Property> 
<Property name="successURL" value="/sp/console"></Property> 
<Property name="cookieSupport" value="true"></Property> 
<Property name="AuthLevel" value="0"></Property> 
<Property name="SessionHandle" value="shandle:AQIC5wM2LY4SfcwZfnMFJVMF0olMGhmq-Nmqw_BMxoVv4AA.*AAJTSQACMDIAAlNLABM3OTI1OTk2NjE0MDA1MjA2MTcw*"></Property> 
<Property name="UserToken" value="user-test"></Property> 
<Property name="loginURL" value="/sp/UI/Login"></Property> 
<Property name="Principals" value="user-test"></Property> 
<Property name="Service" value="ldapService"></Property> 
<Property name="sun.am.UniversalIdentifier" value="id=user-test,ou=user,dc=openam,dc=forgerock,dc=org"></Property> 
<Property name="amlbcookie" value="01"></Property> 
<Property name="Organization" value="dc=openam,dc=forgerock,dc=org"></Property> 
<Property name="Locale" value="en_US"></Property> 
<Property name="HostName" value="205."></Property> 
<Property name="AuthType" value="DataStore"></Property> 
<Property name="Host" value="205."></Property> 
<Property name="UserProfile" value="Ignore"></Property> 
<Property name="clientType" value="genericHTML"></Property> 
<Property name="AMCtxId" value="a0749ff708bff14202"></Property> 
<Property name="SessionTimedOut" value="1452636294"></Property> 
<Property name="authInstant" value="2016-01-12T21:30:33Z"></Property> 
<Property name="Principal" value="id=user-test,ou=user,dc=openam,dc=forgerock,dc=org"></Property> 
</Session> 

дело в том, что меня поразило, это <Property name="AuthType" value="DataStore"></Property> (я имею Федерации от других производителей: 0) Я уверен, что проблема в том, что пользователь не может пройти аутентификацию на OpenAM.

+0

Включить «сообщение» уровень отладки регистрация в OpenAM и проверка журнала отладки федерации. Он расскажет вам, почему SAML WebSSO не был успешным и, следовательно, не было создано Session SSO Session, что, в свою очередь, сделало CDCServlet перенаправлением пользователя на аутентификацию. –

+0

Привет, Бернхард, Спасибо, что закололи! Да, это первое, что я всегда делаю, включите журнал в Agent и OpenAM. В Федерации нет ничего, и Агент не говорит со мной: -/Я ничего не вижу в особенности! - Я редактировал вопрос с журналом в случае! – julien

+0

Вам не нужно сначала смотреть на Агента. Использование агентов - это собственный способ внедрения единого входа в систему с OpenAM. SAML - это стандартизованный способ внедрения единого входа в систему. Вы смешиваете оба пути здесь. Сначала сосредоточьтесь на стороне SAML. SP должен обработать ответ SAML AuthnRequest, выданный IdP. Ответ будет отображаться в журнале отладки федерации на стороне OpenAM, если для уровня отладки установлено значение «сообщение». Если он не отображается, ответ SAML не достигает OpenAM. В этом случае сначала используйте плагин SAML tracer для проверки потока протокола SAML. –

ответ

0

я понял это ... Оказалось, все было настроено право, но наш партнер отправлял утверждение к реле/​​Target URL, а не потребителей URL .....

0

Я предполагаю, что автообследование отключено со стороны поставщика услуг (OpenAM) и что вы используете идентификатор NameID в качестве идентификатора пользователя.

После получения утверждения, SP Account Mapper попытается найти пользователя с этим идентификатором пользователя в Хранилище данных для Realm, где указан SP. Вы можете найти, какой атрибут LDAP сопоставляется с идентификатором пользователя, перейдя в Access Control> YOUR REALM> Data Stores> YOUR DATASTORE. Найдите свойство «Атрибут поиска LDAP-пользователей».

В этом конкретном случае значение NameID равно 100, таким образом, Map Mapper попытается найти пользователя в вашем хранилище данных с этим идентификатором пользователя. Например, если для вашего «Атрибута поиска пользователей LDAP» установлено значение «uid», Mapper учетной записи попытается найти пользователя в вашем каталоге, «uid» которого равен «100».

Таким образом, мое предположение заключается в том, что Account Mapper не может сопоставить входящее утверждение с допустимым пользователем и переводит вас на страницу входа в OpenAM.

Надеюсь, это поможет.

+0

Привет, Гильермо! Спасибо, что помогли мне :) У меня отключена функция AutoFederation с неуказанным. Вместо этого я пытаюсь использовать переходный процесс, с определенным пользователем, который я создал в этой области, и посмотреть, работает ли он. У меня есть работа с двумя партнерами. Я думаю, что вы правы, аутентификация не происходит против хранилища данных, я считаю. Кажется, что даже с Transient это не работает: -/Все еще получаю эту страницу! Есть ли способ от ответа, чтобы вручную вызвать мой SP, чтобы я мог тестировать другую комбинацию без партнера? – julien