Spring Authorization Server вошёл в Spring Security 7

Самодельный authorization server почти всегда начинается с фразы:

нам же нужен один endpoint, который выпишет JWT

Spring Authorization Server теперь стал частью Spring Security 7. Вот анонс от Spring.

И на нашем переходе на Spring Boot 4 эта новость звучит заметно интереснее.

Раньше Spring Authorization Server был отдельным проектом. Теперь он входит в основной Spring Security-стек: с тем же релизным циклом, документацией и поддержкой.

Это не означает, что теперь нужно срочно писать свой SSO на Spring.

Готовый authorization server - это не только endpoint, который подписывает JWT. Сначала обычно хватает логина и access token. Потом появляются refresh token, несколько frontend’ов, внешние интеграции, сервисные аккаунты, разные типы клиентов и вопрос:

А кто вообще может выпускать токены и с какими правами?

А дальше внезапно нужны отзыв сессий, ротация ключей, регистрация OAuth-клиентов, пользовательские сценарии, аудит и восстановление доступа. То есть почти собственный IdP. Только пока без отдельного владельца, roadmap и честного признания, что это уже отдельный продукт. И вот здесь Spring Authorization Server становится интересным вариантом.

Он не выдаст готовую админку, MFA, формы входа и управление пользователями. Но он даёт нормальную реализацию OAuth2 и OpenID Connect внутри привычного Spring Security-стека. Если правила выдачи токенов и claims становятся частью продукта, их можно реализовать кодом, а не пытаться бесконечно выкручивать настройки вокруг чужого решения.

Например, когда права пользователя зависят не только от роли manager, но и от организации, тарифа, региона, договора или состояния аккаунта. В таком случае claims в токене уже становятся частью доменной логики. Для меня это не задача давайте срочно заводить свой authorization server. Скорее ещё одна причина внимательно посмотреть на границы будущей системы при миграции на Spring Boot 4.

Если в продукте когда-нибудь появится потребность строить собственный IdP, теперь это можно делать на штатной части Spring Security, а не на отдельной библиотеке с отдельной судьбой. Spring Authorization Server перенесён в Spring Security 7, а Spring Boot 4.1 использует Spring Security 7.1

Байтить кодом