Сообщения

Показаны сообщения с ярлыком "Spring Security"

Spring Boot Actuator: защита конечных точек HTTP

Изображение
Вы должны позаботиться о защите конечных точек HTTP так же, как и любого другого конфиденциального URL. Если Spring Security присутствует, конечные точки защищены по умолчанию с использованием стратегии согласования содержимого Spring Security. Если вы хотите настроить пользовательскую безопасность для конечных точек HTTP, например, разрешить доступ к ним только пользователям с определенной ролью, Spring Boot предоставляет несколько удобных объектов RequestMatcher, которые можно использовать в сочетании с Spring Security. Типичная конфигурация Spring Security может выглядеть примерно так: @Configuration(proxyBeanMethods = false) public class ActuatorSecurity extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.requestMatcher(EndpointRequest.toAnyEndpoint()).authorizeRequests((requests) -> requests.anyRequest().hasRole("ENDPOINT_ADMIN")); http.httpBasic(); } } ...

Spring Boot и Actuator Security

Изображение
В целях безопасности все актуаторы, кроме /health и /info, по умолчанию отключены. Свойство management.endpoints.web.exposure.include можно использовать для включения актуаторов. Если Spring Security находится на пути к классам, а другой WebSecurityConfigurerAdapter отсутствует, все актуаторы, кроме /health и /info, защищены автоконфигурацией Spring Boot. Если вы определите пользовательский WebSecurityConfigurerAdapter, автоконфигурация Spring Boot отключится, и вы получите полный контроль над правилами доступа к актуатору. Перед настройкой management.endpoints.web.exposure.include убедитесь, что открытые актуаторы не содержат конфиденциальной информации и/или защищены, разместив их за брандмауэром или с помощью чего-то вроде Spring Security. Защита от подделки межсайтовых запросов (CSRF protection) Поскольку Spring Boot использует настройки по умолчанию Spring Security, защита от CSRF включена по умолчанию. Это означает, что конечные точки актуатора, которым требуются POST (конечн...

Spring Boot и Spring Security: SAML 2.0

Изображение
Проверяющая сторона (Relying Party) Если на вашем пути к классам есть spring-security-saml2-service-provider, вы можете воспользоваться некоторой автоматической конфигурацией, чтобы упростить настройку проверяющей стороны SAML 2.0. Эта конфигурация использует свойства в Saml2RelyingPartyProperties. Регистрация проверяющей стороны представляет собой парную конфигурацию между провайдером идентификации, IDP, и провайдером услуг, SP. Вы можете зарегистрировать несколько проверяющих сторон под префиксом spring.security.saml2.relyingparty, как показано в следующем примере: spring.security.saml2.relyingparty.registration.my-relying-party1.signing.credentials[0].private-key-location=path-to-private-key spring.security.saml2.relyingparty.registration.my-relying-party1.signing.credentials[0].certificate-location=path-to-certificate spring.security.saml2.relyingparty.registration.my-relying-party1.identityprovider.verification.credentials[0].certificate-location=path-to-verification-cert sp...

Spring Boot и Spring Security: OAuth2, сервер ресурсов

Изображение
Если на вашем пути к классу есть spring-security-oauth2-resource-server, Spring Boot может настроить сервер ресурсов OAuth2. Для конфигурации JWT необходимо указать URI набора JWK или URI эмитента OIDC, как показано в следующих примерах: spring.security.oauth2.resourceserver.jwt.jwk-set-uri=https://example.com/oauth2/default/v1/keys spring.security.oauth2.resourceserver.jwt.issuer-uri=https://dev-123456.oktapreview.com/oauth2/default/ Если сервер авторизации не поддерживает URI набора JWK, вы можете настроить сервер ресурсов с помощью открытого ключа, используемого для проверки подписи JWT. Это можно сделать с помощью свойства spring.security.oauth2.resourceserver.jwt.public-key-location, где значение должно указывать на файл, содержащий открытый ключ в формате x509 в кодировке PEM. Одинаковые свойства применимы как для сервлетов, так и для реактивных приложений. Кроме того, вы можете определить свой собственный компонент JwtDecoder для приложений сервлетов или ReactiveJwtDeco...

Spring Boot и Spring Security: OAuth2

Изображение
OAuth2 - это широко используемая среда авторизации, поддерживаемая Spring. OAuth2 клиент Если у вас есть class-path-security-oauth2-client, вы можете воспользоваться автоматической настройкой, чтобы упростить настройку клиентов OAuth2/Open ID Connect. Эта конфигурация использует свойства в OAuth2ClientProperties. Одинаковые свойства применимы как к сервлету, так и к реактивным приложениям. Вы можете зарегистрировать несколько клиентов и поставщиков OAuth2 под префиксом spring.security.oauth2.client, как показано в следующем примере: spring.security.oauth2.client.registration.my-client-1.client-id=abcd spring.security.oauth2.client.registration.my-client-1.client-secret=password spring.security.oauth2.client.registration.my-client-1.client-name=Client for user scope spring.security.oauth2.client.registration.my-client-1.provider=my-oauth-provider spring.security.oauth2.client.registration.my-client-1.scope=user spring.security.oauth2.client.registration.my-client-1.redirect-uri=h...

Spring Boot: WebFlux Security

Изображение
Подобно приложениям Spring MVC, вы можете защитить свои приложения WebFlux, добавив зависимость spring-boot-starter-security. Конфигурация безопасности по умолчанию реализована в ReactiveSecurityAutoConfiguration и UserDetailsServiceAutoConfiguration. ReactiveSecurityAutoConfiguration импортирует WebFluxSecurityConfiguration для веб-безопасности, а UserDetailsServiceAutoConfiguration настраивает проверку подлинности (аутентификацию), что также актуально для не веб-приложений. Чтобы полностью отключить конфигурацию безопасности веб-приложения по умолчанию, вы можете добавить bean-компонент типа WebFilterChainProxy (это не отключает конфигурацию UserDetailsService или защиту Actuator). Чтобы также отключить конфигурацию UserDetailsService, вы можете добавить компонент типа ReactiveUserDetailsService или ReactiveAuthenticationManager. Правила доступа и использование нескольких компонентов Spring Security, таких как клиент OAuth 2 и сервер ресурсов (Resource Server), можно настроить, доб...

Spring Boot: MVC Security

Изображение
Конфигурация безопасности по умолчанию реализована в SecurityAutoConfiguration и UserDetailsServiceAutoConfiguration. SecurityAutoConfiguration импортирует SpringBootWebSecurityConfiguration для веб-безопасности, а UserDetailsServiceAutoConfiguration настраивает проверку подлинности (аутентификацию), что также актуально для не веб-приложений. Чтобы полностью отключить конфигурацию безопасности веб-приложения по умолчанию или объединить несколько компонентов Spring Security, таких как клиент OAuth 2 и сервер ресурсов (Resource Server), добавьте bean-компонент типа WebSecurityConfigurerAdapter (при этом не отключается конфигурация UserDetailsService или защита Actuator). Чтобы также отключить конфигурацию UserDetailsService, вы можете добавить компонент типа UserDetailsService, AuthenticationProvider или AuthenticationManager. Правила доступа могут быть переопределены путем добавления пользовательского адаптера WebSecurityConfigurerAdapter. Spring Boot предоставляет удобные методы, кот...

Spring Boot и Spring Security

Изображение
Если Spring Security находится на пути к классам, то веб-приложения защищены по умолчанию. Spring Boot использует стратегию согласования контента Spring Security, чтобы определить, использовать ли httpBasic или formLogin. Чтобы добавить безопасность уровня метода в веб-приложение, вы также можете добавить @EnableGlobalMethodSecurity с желаемыми настройками. По умолчанию UserDetailsService имеет одного пользователя. Имя пользователя - user, пароль произвольный и печатается на уровне INFO при запуске приложения, как показано в следующем примере: Using generated security password: 78fa095d-3f4c-48b1-ad50-e24c31d5cf35 Если вы точно настроили свою конфигурацию ведения журнала, убедитесь, что категория org.springframework.boot.autoconfigure.security установлена для ведения журнала сообщений уровня INFO. В противном случае пароль по умолчанию не печатается. Вы можете изменить имя пользователя и пароль, указав spring.security.user.name и spring.security.user.password. Основные функ...