Клиент Spring Security Oauth2 ClientAuthenticationProcessingFilter

Я работаю над spring-security-oauth2-1.0.3.RELEASE, пытаясь настроить клиент oauth для аутентификации пользователя в Google.

Я потратил на это некоторое время и до сих пор не нашел много хорошей статьи, объясняющей очень четко.

Что я делаю, так это помещаю OAuth2ClientAuthenticationProcessingFilter в цепочку фильтров следующим образом:

<http xmlns="http://www.springframework.org/schema/security"
    use-expressions="true" pattern="/oauth.html" auto-config="true">
    <sec:intercept-url pattern="/**" access="isFullyAuthenticated()" />
    <custom-filter ref="oauth2ClientFilter" position="CAS_FILTER" />
    <sec:custom-filter ref="googleAuthFilter" after="CAS_FILTER" />
</http>

Пользовательский фильтр: googleAuthFilter предназначен для защиты моего URL.

При чтении исходного кода OAuth2ClientAuthenticationProcessingFilter требуется ссылка на

  1. OAuth2RestOperations (остальный шаблон), который ссылается на ресурс сервера Oauth (информация о Google)
  2. ResourceServerTokenServices (из пакетов поставщиков библиотек Spring-security-oauth).

Теперь я в замешательстве. Spring-security-oauth разделен на 2 части: клиентскую и провайдерскую.

Поскольку я только настраиваю клиент Oauth, зачем мне нужна ссылка на класс из пакетов поставщиков Oauth?

Кроме того, как мне настроить ResourceServerTokenServices? Теперь я пытаюсь использовать реализацию по умолчанию. Поскольку DefaultTokenServices снова требует ссылки на

  1. TokenStore
  2. ClientDetailsService
  3. TokenEnhancer

До сих пор я пробовал все реализации по умолчанию:

  • Токенсторе: Инмеморитокенсторе
  • Клиентдетаилссервице: InMemoryClientDetailsService
  • Токенэнхансер: Токенэнхансерчейн

а вроде не работает...

Спасибо!


person bolei    schedule 23.06.2013    source источник
comment
Вы нашли решение?   -  person Kumar Sambhav    schedule 12.12.2013


Ответы (2)


Я думал, что могу написать что-нибудь. Но версия, которую вы используете, очень старая, последняя версия Spring Security OAuth2 очень проста в использовании и широко применяется во многих документах. Давай поищем :D

http://jhasaket.blogspot.com/2014/09/securing-spring-mvc-application-using.html

person Thanh Nguyen Van    schedule 22.01.2015

Ознакомьтесь с учебным пособием Spring "Social Client",

https://spring.io/guides/tutorials/spring-boot-oauth2/#_social_login_github

В этом руководстве была информация для Facebook и Gist. Одна часть, которую я не мог понять — URL-адрес userInfo — я наконец обнаружил не в Google, а в данных файла .YML, показанных здесь:

http://www.techforumist.com/google-oauth2-login-in-spring-boot-and-angularjs/

Скопировано локально (в духе практики SO предоставления более чем URL-адреса :-)):

oauth2:
    client:
      clientId: <Client ID from google developer console>
      clientSecret: <Client Secret from google developer console>
      accessTokenUri: https://www.googleapis.com/oauth2/v4/token
      userAuthorizationUri: https://accounts.google.com/o/oauth2/v2/auth
      clientAuthenticationScheme: form
      scope:
        - openid
        - email
        - profile
    resource:
      userInfoUri: https://www.googleapis.com/oauth2/v3/userinfo
      preferTokenInfo: true

Надеюсь, это поможет вам (мне потребовалось некоторое время, чтобы найти все это)!

P.S. У меня есть приложение, которое успешно проходит аутентификацию в Google с использованием безопасности Spring Boot OAuth2 — не теряйте надежды! Чего мне в настоящее время не хватает, так это способа распаковать данные, которые я получаю, чтобы определить адрес электронной почты пользователя Google для внесения в белый список — см. Ссылку SO ниже:

Как получить электронную почту пользователя Google вносить пользователей в белый список при аутентификации с использованием Spring Boot OAuth2 против Google

person rich p    schedule 23.05.2017