Spring boot 2 + Oauth2 - защита остальных вызовов в микросервисах - PullRequest
1 голос
/ 15 апреля 2019

Я работаю над пружинной загрузкой 2 микро сервисов.Теперь я планирую перехватить звонки с помощью OAUTH2.

Я нашел много статей о том, что интеграция Spring 2 + OAUTH2, но не соответствует моему требованию, все они используют таблицы и безопасные вызовы с использованием ролей,

Мой вход в приложение работает на SingleЗарегистрируйтесь, используя SAML (SSO), мое требование - авторизовать только каждый запрос.Каков наилучший способ сделать это?

  1. действительно ли мне нужна таблица для хранения токена для пользователя, поскольку вход в систему уже осуществляется с использованием единого входа?
  2. единственное, что нужно сделать, этоавторизовать запрос независимо от ролей пользователя.

Будем благодарны за любые предложения или ссылки на github, соответствующие простому требованию.

Ответы [ 2 ]

0 голосов
/ 15 апреля 2019

OAuth2 имеет различные реализации создания токенов для аутентификации. По умолчанию он создает токены через случайное значение и обрабатывает все, кроме постоянства токенов, которые он делегирует TokenStore. Хранилище по умолчанию - это реализация в памяти, но есть и другие доступные реализации.

JdbcTokenStore - это то же самое, что и JDBC-версия, которая хранит данные токена в реляционной базе данных.

Версия магазина JSON Web Token (JWT), но данные не сохраняются.

Итак, чтобы ответить на ваши вопросы

  • мне действительно нужна таблица для хранения токена для пользователя, поскольку вход в систему уже выполнен с использованием SSO?

    Не обязательно. Как я понимаю, вы намерены только аутентифицировать, чтобы не генерировать токены.

  • Единственное, что здесь нужно, - это авторизовать запрос независимо от роли пользователя.

    Вы можете использовать WebSecurityConfigurerAdapter для подтверждения входящего запроса. например как показано ниже

    открытый класс Конфигурация расширяет WebSecurityConfigurerAdapter {

    @Override
        public void configure(HttpSecurity http) throws Exception { 
            http.csrf().disable()
                .authorizeRequests()
                .antMatchers("/authorization-server-1/**",
                  "/login").permitAll()
                .anyRequest().authenticated();
        }
    }
    
0 голосов
/ 15 апреля 2019

@ premKumarR

Для ваших комментариев, которые лучше в памяти v / s JDBC.Для Spring Docs

Вот описание с некоторыми обсуждениями каждого из них

InMemoryTokenStore по умолчанию идеально подходит для одного сервера (т. Е. Низкий трафик и отсутствие горячей замены для резервной копии).сервер в случае сбоя).Большинство проектов могут начинаться здесь и, возможно, работать таким образом в режиме разработки, чтобы упростить запуск сервера без каких-либо зависимостей.

JdbcTokenStore - это JDBC-версия того же объекта, которая хранит данные токена вреляционная база данных.Используйте версию JDBC, если вы можете совместно использовать базу данных между серверами, либо масштабировать экземпляры одного и того же сервера, если имеется только один, или Серверы авторизации и ресурсов, если имеется несколько компонентов.Чтобы использовать JdbcTokenStore, вам нужен "spring-jdbc" на пути к классам.

Документация Ссылка: https://projects.spring.io/spring-security-oauth/docs/oauth2.html

...