2015-06-18 3 views
0
  1. Я скачал пример приложения Spring SAML здесь: http://docs.spring.io/spring-security-saml/docs/current/reference/htmlsingle/#quick-start-steps
  2. Я побежал приложения и успешно прошел проверку подлинности против SSOCircle IDP.
  3. Затем я попытался переключиться на WebLogic IDP, но когда я попробую аутентификацию, он завершится с исключением.

Исключение StackTrace:Как подключить приложение Spring SAML к WebLogic IDP?

Jun 17, 2015 10:33:31 AM org.apache.catalina.core.StandardWrapperValve invoke 
    SEVERE: Servlet.service() for servlet [default] in context with path [] threw exception [org.opensaml.ws.message.encoder.MessageEncodingException: Unable to builder artifact for message to relying party] with root cause 
    org.opensaml.ws.message.encoder.MessageEncodingException: Unable to builder artifact for message to relying party 
      at org.opensaml.saml2.binding.encoding.HTTPArtifactEncoder.buildArtifact(HTTPArtifactEncoder.java:232) 
      at org.opensaml.saml2.binding.encoding.HTTPArtifactEncoder.getEncode(HTTPArtifactEncoder.java:195) 
      at org.opensaml.saml2.binding.encoding.HTTPArtifactEncoder.doEncode(HTTPArtifactEncoder.java:137) 
      at org.opensaml.ws.message.encoder.BaseMessageEncoder.encode(BaseMessageEncoder.java:52) 
      at org.springframework.security.saml.processor.SAMLProcessorImpl.sendMessage(SAMLProcessorImpl.java:227) 
      at org.springframework.security.saml.processor.SAMLProcessorImpl.sendMessage(SAMLProcessorImpl.java:195) 
      at org.springframework.security.saml.websso.AbstractProfileBase.sendMessage(AbstractProfileBase.java:144) 
      at org.springframework.security.saml.websso.WebSSOProfileImpl.sendAuthenticationRequest(WebSSOProfileImpl.java:105) 
      at org.springframework.security.saml.SAMLEntryPoint.initializeSSO(SAMLEntryPoint.java:226) 
      at org.springframework.security.saml.SAMLEntryPoint.commence(SAMLEntryPoint.java:153) 
      at org.springframework.security.saml.SAMLEntryPoint.doFilter(SAMLEntryPoint.java:107) 
      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
      at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192) 
      at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:166) 
      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
      at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87) 
      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
      at org.springframework.security.saml.metadata.MetadataGeneratorFilter.doFilter(MetadataGeneratorFilter.java:87) 
      at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342) 
      at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:192) 
      at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:160) 
      at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346) 
      at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259) 
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) 
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) 
      at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504) 
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) 
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
      at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) 
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421) 
      at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1074) 
      at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611) 
      at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) 
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
      at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
      at java.lang.Thread.run(Thread.java:745) 

В журнале есть еще одно сообщение, которое говорит: конечную точку службы

Нет разрешения артефакта, определенный для объекта нулевой

  1. Что я могу сделать для сделать разрешение артефакта успешным? Я отлаживал приложение и обнаружил, что метод org.opensaml.saml2.binding.artifact.SAML2ArtifactType0004Builder # getAcsEndpoint() возвращает null, что вызывает исключение выше. Я не совсем уверен, что это значит или что делать, чтобы заставить его работать.
  2. Я экспортировал метаданные IDP и включил их в компонент поставщика метаданных и в свою очередь экспортировал метаданные SP и загрузил их в Weblogic в качестве метаданных объединенного партнера. Я что-то пропустил?

Я попытался сделать пример приложения проверку подлинности на Weblogic IDP и против Shibboleth IDP, но мне не удалось заставить его работать. Либо конфигурация не завершена, либо я пропустил что-то фундаментальное.

ответ

1

1. Добавить Credential Mapping

Чтобы включить функцию SAML, сначала нужно добавить сопоставления учетных данных. Откройте Weblogic Administration Console

http://server:port/console 
e.g. 
http://127.0.0.1:7101/console 

1.1. Добавить картографическую запись

1.1.1. Перейдите к странице Credential Mapping:

Security Realms > myrealm > Providers > Credential Mapping 

1.1.2.Нажмите на новую кнопку

  • Введите имя для отображения (например, SamlCredentialMapper)
  • Выберите SAML2CredentialMappertype
  • Сохранить новое отображение

1.1.3. Нажмите на новое отображение

  • Перейти к поставщику Specific вкладки
  • Введите эмитента URI:

    например http://www.server.com/issuer

  • Сохранить отображение

2. Настройка SAML свойства

2,1. Перейдите на страницу «Серверы»

  • Открыть запись сервера для сервера администратора.
  • Обратите внимание на значения Listen Address и Listen Port на вкладке General.

2.2. Перейдите к службам федерации> SAML 2.0 Общих

  • Введите значение для Опубликовано URL сайта (хоста и порт должен быть таким же, как и значение, которые вы отметили в предыдущем шаге):

    например http://localhost:7101/saml2

  • Введите идентификатор объекта (обратите внимание, что этот идентификатор должен быть таким же, как URI эмитента введен ранее)

    например http://www.server.com/issuer

  • Должен быть таким же, как URI Эмитента, из картографирования учетных данных.

  • Сохранить настройки

2,3. Перейдите на вкладку поставщика идентификационных данных SAML 2.0

  • Установите флажок включен.
  • Выберите POST в качестве предпочтительного связывания.
  • Сохраните настройки.

3. Информация о метаданных Обмен

3,1. Экспорт метаданных IDP

Файл метаданных поставщика удостоверений используется клиентом поставщика услуг (SSO) для определения URL-адресов для входа и другой полезной информации.

3.1.1. Перейдите в Услуги Федерации> SAML 2.0 Общие положения

  • Нажмите кнопку Опубликовать метаданные.
  • Выберите имя для файла метаданных
    • , введя имя путь/файл в текстовом Path поле
    • ИЛИ выбрав существующий файл в структуре каталогов (вы должны проверить Переписать флажок переписать файл)
  • Нажмите OK, чтобы экспортировать файл метаданных.

3.2. Использование файла метаданных в приложении поставщика услуг

Приложение поставщика услуг должно знать, где найти IDP. Эта информация содержится в файле метаданных IDP.

3.3. Получить файл метаданных поставщика услуг

IDP должен также знать о поставщике услуг (SSO-клиент). Вам необходимо получить файл метаданных SP.

3.4. Настройка партнера поставщика услуг

  • Перейдите к созданию учетных данных, которые вы создали ранее.
  • Перейдите на вкладку «Управление».
  • Создайте нового партнера по онлайн-сервису единого входа.
  • выбрать имя (или оставить по умолчанию)
  • Выберите файл метаданных SP, перейдя в каталог и выбрать существующий файл в структуре каталогов
  • Нажмите кнопку OK, чтобы сохранить новый партнер.
  • Нажмите на нового Партнера поставщика услуг.
  • Установите флажок включен.
  • Нажмите «Сохранить».

Ссылки

0

Какая версия веб-журнала вы используете? По крайней мере, в более ранних версиях консультанты Oracle сказали мне, что поддержка SAML IDP в Weblogic не является «качеством производства», и в реализации действительно были проблемы (например, использование старых библиотек, отсутствие поддержки SAML-шифрования, обработка ошибок), но она, возможно, изменилась с тех пор ,

Ошибка «Конечная точка обслуживания разрешения артефактов» предполагает, что метаданные вашего IDP не содержат ArtefactResolutionEndpoint в своих метаданных. На вашем месте я бы попытался использовать привязку HTTP-POST вместо Artifact.

+0

Мы используем Weblogic 10.3.6 с Oracle WebCenter 11.1.1.7. –

+0

В метаданных IDP указан URL-адрес службы разрешения артефакта следующим образом: Простое открытие URL-адреса в браузере вызывает исключение NullPointerException. Из того, что я узнал до сих пор, это похоже на функцию Weblogic и другое программное обеспечение Oracle, а не на ошибку :-) –

+0

Я пытаюсь заставить эту работу работать, и я изучаю всю теорию SSO и SAML как я так что я не могу свободно говорить обо всех спецификациях. Я как-то предположил, что HTTP-POST будет по умолчанию, и я не совсем уверен, как работают другие привязки. –

Смежные вопросы