Отладка аутентификации facebook с использованием Spring Security/Social

Я использую Spring Security (4.0.1) и Spring Social (1.1.2) для реализации аутентификации в приложении Spring MVC, используя либо форму использования существующей учетной записи facebook. Аутентификация формы работает отлично. Однако аутентификация в Facebook не работает.

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

  • создал класс, который реализует SocialConfigurer, добавив фабрику соединений facebook, useridsource (существующий AuthenticationNameUserIdSource) и userconnectionrepository (специально созданный для использования с OrientDB)
  • Добавлена ​​строка для применения SpringSocialConfigurer в моем WebSecurityConfigurerAdapter.
  • Добавлен bean-компонент SocialUserDetailsService.

Кажется, это работает по большей части, но аутентификация не завершена. При вызове /auth/facebook происходит следующее:

  • перенаправление на facebook.com oauth (механизм входа)
  • обратный вызов /auth/facebook в моем приложении с длинной переменной кода и переменной состояния
  • перенаправить на мой defaultFailureUrl без предупреждения, ошибки или любого сообщения в журнале или переменных запроса

Значит, что-то идет не так, но я не могу определить, что и где именно. Я попытался установить ведение журнала для org.springframework.social на FINEST, но это не показывает никаких сообщений.

Есть ли у кого-нибудь советы, как определить причину этой неудачи при завершении аутентификации с помощью facebook?

Заранее спасибо,

Сэм


person semvdwal    schedule 12.11.2015    source источник


Ответы (1)


Я нашел ответ на свой вопрос, мне нужно было правильно настроить log4j, чтобы получать все сообщения журнала Spring в моем журнале сервера по умолчанию. Эти сообщения журнала помогли мне определить проблему: подпись моего приложения была изменена. Довольно неудобная проблема, чтобы застрять на долгое время ..

Надеюсь, это поможет кому-то еще бороться с проблемами Spring, убедитесь, что в ваш проект включен log4j, создайте файл свойств log4j и убедитесь, что он доступен для вашего контейнера.

Для меня работала следующая конфигурация:

log4j.rootLogger=INFO, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.conversionPattern=%5p [%t] (%F:%L) - %m%n

Я поместил его в конфигурацию домена для своего домена Glassfish и добавил его в параметры JVM, используя свойство Dlog4j.configuration.

С уважением,

Сэм

person semvdwal    schedule 07.12.2015
comment
Два дня назад у нас также возникла проблема с Facebook OAuth: lingohub.com/blog/2015/12/ - person Betty St; 09.12.2015
comment
что вы подразумеваете под моей подписью приложения была изменена? - person OhadR; 15.05.2016