Я хочу установить простой поставщик OAuth2 на основе весенней загрузки, пружинной защиты и пружины-oauth2.Поставщик oauth2 для обеспечения безопасности без гражданства
У меня все работает на машине с одним экземпляром: для авторизации OAuth2 пользователь отправляется на /oauth/authorize
. Большинство пользователей не вошли в систему, поэтому они перенаправляются на /login
по весенней безопасности, а затем обратно t /oauth/authorize
, чтобы завершить авторизацию.
В конфигурации по умолчанию spring-security устанавливает cookie в браузере пользователя с идентификатором сеанса и сохраняет данные сеанса в памяти.
public static class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.and()
.formLogin()
.loginPage("/login")
.permitAll();
}
[...]
Для того, чтобы обеспечить балансировку нагрузки и сине-зеленые развертывания без потери пользовательских сеансов, (я думаю) я должен выполнить следующие действия:
- Отключить сторону сервера сеансов - для API который отвечает только за авторизацию OAuth2, я не думаю, что необходимо иметь общую базу данных для сеансов.
- Вместо этого включите cookie с сохранением имени, содержащего аутентификацию пользователя, временную авторизацию.
- магазин редирект URL для перенаправления
/login
в другом месте- Можно ли хранить это в форме авторизации или пользователя куки? Или что было бы «бесконфликтной» альтернативой?
- Отключить CSRF (я знаю, как сделать это и oauth2 имеет auth_codes которые я думаю, имеют аналогичные цели. Просто для полноты картины.)
ли такой подход имеет смысл? Какие изменения необходимы?
Что я грубо сделал: (a) отключено CSRF (b) сохранить URL-адрес перенаправления в cookie. Мне нужно только хранить коды oauth2. – Jan