Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[SnowOne 2025] Павел Кислов: Spring Security OA...

[SnowOne 2025] Павел Кислов: Spring Security OAuth2 & Co Explained

Когда речь заходит о Spring Security и его работе с OAuth2, OIDC, SAML, SSO и Spring Authorization Server, то перед нами больше вопросов, чем ответов. Документация есть, гайды есть, а ответов на возникающие по ходу вопросы нет. Это повод их найти.

Видео: https://youtu.be/_o1jIjov19Y

Avatar for jugnsk

jugnsk

May 08, 2025
Tweet

More Decks by jugnsk

Other Decks in Programming

Transcript

  1. Кислов Павел • Я из Spring Айо • Около 8

    лет в Java • Играю на 8 инструментах • Катаюсь на серфе • Играю в большой теннис • Бабушка говорит, что я молодец  2
  2. Зачем мне этот доклад и что я узнаю?  4

    •OAUTH2 и его детали •Новый Spring Authorization Server •OAUTH2 для Rest Client в Spring •SAML и OIDC •Отличия SAML и OIDC от OAUTH2
  3. Какой вид имел Spring Security на момент выхода Spring Boot

    3? Everything new in Spring Security 6 baked with a Spring Boot 3 recipe by Laur Spilca Павел Кислов Spring Security: повседневное и неочевидное Spring Security, demystified by Daniel Garnier Moiroux  6
  4. Какие события произошли со Spring Security за 23-24 год? •

    Вышел новый Spring Authorization Server • Задепрекейтили ACL, а потом раздепрекейтили ACL  8
  5. Какие события произошли со Spring Security за 23-24 год? •

    Вышел новый Spring Authorization Server • Задепрекейтили ACL, а потом раздепрекейтили ACL • Вышла поддержка OAUTH2 для Rest Client  10
  6. Какие события произошли со Spring Security за 23-24 год? •

    Вышел новый Spring Authorization Server • Задепрекейтили ACL, а потом раздепрекейтили ACL • Вышла поддержка OAUTH2 для Rest Client • Сильно обновились возможности SAML  11
  7. Какие события произошли со Spring Security за 23-24 год? Что

    нового в Spring Boot 3.4: Spring Security Поддержка RestClient для OAuth2 в Spring Security 6.4  12
  8. Какие события произошли со Spring Security за 23-24 год? •

    Вышел новый Spring Authorization Server • Задепрекейтили ACL, а потом раздепрекейтили ACL • Вышла поддержка OAUTH2 для Rest Client • Сильно обновились нюансы для работы с SAML • Закрыли кучу багов с CVE(Common Vulnerabilities and Exposures)  13
  9. Какие события произошли со Spring Security за 23-24 год? •

    Вышел новый Spring Authorization Server • Задепрекейтили ACL, а потом раздепрекейтили ACL • Вышла поддержка OAUTH2 для Rest Client • Сильно обновились нюансы для работы с SAML • Закрыли кучу багов с CVE(Common Vulnerabilities and Exposures) • Весь Security двигался в сторону «Bean friendly design»  14
  10. Мы вас вычеркиваем • Вышел новый Spring Authorization Server •

    Задепрекейтили ACL, а потом раздепрекейтили ACL • Вышла поддержка OAUTH2 для Rest Client • Сильно обновились возможности SAML • Закрыли кучу багов с CVE(Common Vulnerabilities and Exposures) • Весь Security двигался в сторону «Bean friendly design»  15
  11. Про что сегодня поговорим •OAUTH2 и его детали •Вышел новый

    Spring Authorization Server •OAUTH2 для Rest Client в Spring •SAML и OIDC •Отличия SAML и OIDC от OAUTH2  18
  12. OAUTH2 и Сервер авторизации раньше Основные OAUTH2 Flow(GrantTypes) • Authorization

    Code • Client credentials • Refresh Token Implicit и Resource Owner Password более не поддерживаются, @Deprecated или удалены в зависимости от версии Spring  20
  13. OAUTH2 и Сервер авторизации теперь Основные OAUTH2 Flow(GrantTypes) • Authorization

    Code • Client credentials • Refresh Token • JWT Bearer • Token Exchange Implicit и Resource Owner Password более не поддерживаются, @Deprecated или удалены в зависимости от версии Spring  21
  14. • Открытый исходный код • Любая логика, которую мы хотим

    заложить • Возможность самим настраивать работу с хранилищем данных и писать свои имплементацию  31
  15. • Открытый исходный код • Любая логика, которую мы хотим

    заложить • Возможность самим настраивать работу с хранилищем данных и писать свои имплементацию • Отсутствие необходимости в еще одной лицензии  32
  16. OAUTH2 ключевые участники процесса • Владелец ресурса (Пользователь) — субъект,

    способный предоставить доступ к защищенному ресурсу (например, конечному пользователю). • Сервер ресурсов (API-сервер) — сервер, на котором размещены защищенные ресурсы, способный принимать ответы на запросы защищенных ресурсов с использованием маркеров доступа. • Клиент — приложение, выполняющее запросы к защищенным ресурсам от имени владельца ресурса и с его авторизацией. • Сервер авторизации — сервер, выдающий access token клиенту после успешной аутентификации и авторизации владельца ресурса  54
  17. OpenID Connect Open ID Connect - это уточненная спецификация, расширяющая

    OAUTH2. Согласно ее стандартам помимо токена доступа клиент получает еще и некоторый ID Token и Authorization Server для корректной работы должен предоставлять API для запросов дополнительной информации о пользователе и его текущих сессиях.  56
  18. SAML & OIDC VS OAUTH2 SSO(SAML ИЛИ OIDC) - это

    способ аутентифицироваться в приложении. Понять кто перед нами. OAUTH2 - это способ авторизоваться. Понять что можно этому пользователю.  70
  19. Авторизация/Аутентификация/ Идентификация Идентификация — процесс, в результате выполнения которого для

    субъекта идентификации выявляется его идентификатор, однозначно определяющий этого субъекта в информационной системе. Мы понимаем кто перед нами.  77
  20. Авторизация/Аутентификация/ Идентификация Идентификация — процесс, в результате выполнения которого для

    субъекта идентификации выявляется его идентификатор, однозначно определяющий этого субъекта в информационной системе. Мы понимаем кто перед нами. Аутентификация — процедура проверки подлинности, например проверка подлинности пользователя путем сравнения введенного пароля с паролем из базы данных.  78
  21. Авторизация/Аутентификация/ Идентификация Идентификация — процесс, в результате выполнения которого для

    субъекта идентификации выявляется его идентификатор, однозначно определяющий этого субъекта в информационной системе. Мы понимаем кто перед нами. Аутентификация — процедура проверки подлинности, например проверка подлинности пользователя путем сравнения введенного пароля с паролем из базы данных. Авторизация — предоставление определенному лицу или группе лиц прав на выполнение действий. Например, можно ли пользователю выполнять тот или метод контроллера.  79
  22. SAML & OIDC VS OAUTH2 SSO(SAML ИЛИ OIDC) - это

    способ аутентифицироваться в приложении. Получить данные пользователя и набор ролей. Авторизацию приложение- ресурс производит самостоятельно. OAUTH2 - это способ авторизоваться (получить токен) для выполнения действия, указав свои данные и действие при обращении к авторизационному серверу, то есть делегированная авторизация. В то время, как ресурсное приложение только выполняет пришедший запрос при условии валидного токена.  80
  23. SAML & OIDC VS OAUTH2 SSO(SAML ИЛИ OIDC) - это

    способ аутентифицироваться в приложении. Получить данные пользователя и набор ролей. Авторизацию приложение-ресурс производит самостоятельно. OAUTH2 - это способ авторизоваться (получить токен) для выполнения действия, указав свои данные и действие при обращении к авторизационному серверу, то есть делегированная авторизация. В то время, как ресурсное приложение только выполняет пришедший запрос при условии валидного токена.  86
  24. Поддержка SAML 2.0 также значительно улучшена! Поддержка OpenSAML 5 теперь

    доступна.  88 Расшифровываем статью про новинки Spring Security Что нового в Spring Boot 3.4: Spring Security
  25. Поддержка SAML 2.0 также значительно улучшена! Поддержка OpenSAML 5 теперь

    доступна. Asserting Parties теперь могут обновляться в фоновом режиме в зависимости от истечения срока действия метаданных.  89 Расшифровываем статью про новинки Spring Security Что нового в Spring Boot 3.4: Spring Security
  26. Поддержка SAML 2.0 также значительно улучшена! Поддержка OpenSAML 5 теперь

    доступна. Asserting Parties теперь могут обновляться в фоновом режиме в зависимости от истечения срока действия метаданных. Теперь вы можете подписывать relying party метаданные.  90 Расшифровываем статью про новинки Spring Security Что нового в Spring Boot 3.4: Spring Security
  27. Поддержка SAML 2.0 также значительно улучшена! Поддержка OpenSAML 5 теперь

    доступна. Asserting Parties теперь могут обновляться в фоновом режиме в зависимости от истечения срока действия метаданных. Теперь вы можете подписывать relying party метаданные. Чтобы соответствовать стандарту SAML 2.0, конечная точка метаданных теперь использует MIME-type application/samlmetadata+xml.  91 Расшифровываем статью про новинки Spring Security Что нового в Spring Boot 3.4: Spring Security
  28. Итоги:  98 • Обсудили новинки Spring Security • Разобрались

    с концепциями OIDC и SAML • Познакомились с новым Http-клиентом спринта
  29. Итоги:  99 • Обсудили новинки Spring Security • Разобрались

    с концепциями OIDC и SAML • Познакомились с новым Http-клиентом спринта • Посмотрели как его настраивать для OAUTH2
  30. Итоги:  100 • Обсудили новинки Spring Security • Разобрались

    с концепциями OIDC и SAML • Познакомились с новым Http-клиентом спринта • Посмотрели как его настраивать для OAUTH2 • Обсудили OAUTH2 и его Flows/Grant types поддерживаемые Spring