Questions tagged «spring-security»

Spring Security是Spring Framework的应用程序安全解决方案。Spring安全性可用于保护URL和方法调用。它被广泛用于保护独立的Web应用程序,Portlet和越来越多的REST应用程序。

4
如何使用Spring Boot和Spring Security保护REST API?
我知道保护REST API是一个被广泛评论的话题,但是我无法创建一个符合我的标准的小型原型(并且我需要确认这些标准是现实的)。如何保护资源以及如何使用Spring安全性有很多选择,我需要弄清楚我的需求是否现实。 我的要求 基于令牌的身份验证器-用户将提供其凭据,并获得唯一且受时间限制的访问令牌。我想在自己的实现中管理令牌的创建,检查有效性和到期时间。 某些REST资源将是公开的-完全不需要身份验证, 某些资源仅对具有管理员权限的用户可用, 授权所有用户后,即可访问其他资源。 我不想使用基本身份验证 Java代码配置(非XML) 当前状态 我的REST API运作良好,但现在我需要保护它。当我寻找解决方案时,我创建了一个javax.servlet.Filter过滤器: @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) req; String accessToken = request.getHeader(AUTHORIZATION_TOKEN); Account account = accountDao.find(accessToken); if (account == null) { throw new UnauthorizedException(); } chain.doFilter(req, res); } …

7
具有角色和权限的Spring Security
我正在尝试设置具有权限的基于角色的安全性。我正在尝试与Spring-Security一起执行此操作。 我不想设置ACL,因为这似乎对我的要求来说太过严格了。 我只想拥有本文所述的简单权限和角色。不幸的是,本文没有描述如何实现给定的解决方案。 有人已经尝试过了,可以指出正确的方向吗?也许还有另一个博客条目描述了实现方式? 非常感谢你。

18
在Spring Boot上删除“使用默认安全密码”
我在Spring Boot的应用程序中添加了一个自定义安全配置,但是有关“使用默认安全密码”的消息仍在LOG文件中。 有什么要删除的吗?我不需要此默认密码。看来Spring Boot无法识别我的安全策略。 @Configuration @EnableWebSecurity public class CustomSecurityConfig extends WebSecurityConfigurerAdapter { private final String uri = "/custom/*"; @Override public void configure(final HttpSecurity http) throws Exception { http.csrf().disable(); http.headers().httpStrictTransportSecurity().disable(); http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS); // Authorize sub-folders permissions http.antMatcher(uri).authorizeRequests().anyRequest().permitAll(); } }

7
在Spring Boot和Spring Security应用程序中提供静态Web资源
我正在尝试开发Spring Boot Web应用程序并使用Spring Security Java配置对其进行保护。 按照Spring博客中的建议,将我的静态Web资源放置在“ src / main / resources / public ”中后,便可以获取静态资源。即https://localhost/test.html在浏览器中点击确实提供html内容。 问题 在启用Spring Security之后,访问静态资源URL需要身份验证。 我的相关事件Spring Security Java配置看起来像这样:- @Override protected void configure(HttpSecurity http) throws Exception { // @formatter:off http. authorizeRequests() .antMatchers("/","/public/**", "/resources/**","/resources/public/**") .permitAll() .antMatchers("/google_oauth2_login").anonymous() .anyRequest().authenticated() .and() .formLogin() .loginPage("/") .loginProcessingUrl("/login") .defaultSuccessUrl("/home") .and() .csrf().disable() .logout() .logoutSuccessUrl("/") .logoutUrl("/logout") // POST only …


6
为OPTIONS Http方法禁用Spring Security
是否可以为某种HTTP方法禁用Spring Security? 我们有一个Spring REST应用程序,其服务需要在HTTP请求的标头中附加授权令牌。我正在为此编写一个JS客户端,并使用JQuery发送GET / POST请求。该应用程序使用此过滤器代码启用了CORS。 doFilter(....) { HttpServletResponse httpResp = (HttpServletResponse) response; httpResp.setHeader("Access-Control-Allow-Origin", "*"); httpResp.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); httpResp.setHeader("Access-Control-Max-Age", "3600"); Enumeration<String> headersEnum = ((HttpServletRequest) request).getHeaders("Access-Control-Request-Headers"); StringBuilder headers = new StringBuilder(); String delim = ""; while (headersEnum.hasMoreElements()) { headers.append(delim).append(headersEnum.nextElement()); delim = ", "; } httpResp.setHeader("Access-Control-Allow-Headers", headers.toString()); } 但是,当JQuery发送针对CORS的OPTIONS请求时,服务器将以“授权失败”令牌进行响应。显然,OPTIONS请求缺少授权令牌。那么有可能让OPTIONS从Spring Security …




6
Spring + Web MVC:dispatcher-servlet.xml与applicationContext.xml(以及共享的安全性)
什么是使用两个上下文正确的方式:dispatcher-servlet.xml和applicationContext.xml?哪里去了? 我想编写一个部署在servlet容器中的相当典型的应用程序。它具有一些带有JSP视图的控制器。在后端也有一些平凡的逻辑。我真的需要两个环境吗?它们如何相互联系?我该如何决定放入哪个? 另外,我想对我的应用程序使用Spring-security。我可能想在Web控制器以及更深层中使用其功能(例如带注释的声明式安全性)。在这种情况下,应如何配置安全性才能正常工作?应该在其中一个文件(哪个?)中还是在两个文件中?

4
Spring Security 5替换OAuth2RestTemplate
在,和spring-security-oauth2:2.4.0.RELEASE等类中OAuth2RestTemplate,所有这些都已被标记为已弃用。OAuth2ProtectedResourceDetailsClientCredentialsAccessTokenProvider 从这些类的javadoc中,它指向Spring Security迁移指南,该指南暗示人们应迁移到核心Spring-security 5项目。但是,我在寻找如何在该项目中实现用例时遇到了麻烦。 如果您希望对应用程序的传入请求进行身份验证并且想要使用第三方OAuth提供程序来验证身份,则所有文档和示例都讨论了与第三部分OAuth提供程序集成的问题。 在我的用例中,我要做的就是RestTemplate向受OAuth保护的外部服务发出请求。目前OAuth2ProtectedResourceDetails,我使用客户ID和密码创建了一个,并将其传递给OAuth2RestTemplate。我还ClientCredentialsAccessTokenProvider向添加了一个自定义,该自定义OAuth2ResTemplate仅向我使用的OAuth提供程序所需的令牌请求添加了一些额外的标头。 在spring-security 5文档中,我找到了提到自定义令牌请求的部分,但该部分还是与第三方OAuth提供者对传入请求进行身份验证有关。目前尚不清楚如何将其与类似的东西结合使用,ClientHttpRequestInterceptor以确保对外部服务的每个传出请求都首先获得令牌,然后再将令牌添加到请求中。 同样,在上面链接的迁移指南中,引用了一个OAuth2AuthorizedClientService,它说对在拦截器中使用很有用,但是这看起来又像是依赖于这样的东西ClientRegistrationRepository,如果您想使用,它似乎在其中为第三方提供商维护注册。提供以确保对传入请求进行身份验证。 有什么方法可以利用spring-security 5中的新功能来注册OAuth提供程序,以便获得令牌以添加到应用程序的传出请求中?

1
Spring Security中已弃用的AuthorizationServer的替代品是什么?
Spring Security 5.2.2已合并了Spring Security OAuth项目,但未合并AuthorizationServer或ResourceServer。Spring Security 5.2.2中什么是AuthorizationServer的替代品? OAuth-2.0迁移指南 本文档包含有关将OAuth 2.0客户端和资源服务器从Spring Security OAuth 2.x迁移到Spring Security 5.2.x的指南。由于Spring Security不提供Authorization Server支持,因此迁移Spring Security OAuth Authorization Server超出了本文档的范围。

1
使用Spring Boot 2和Spring Security 5进行多重身份验证
我想在Angular&Spring应用程序中添加具有TOTP软令牌的多因素身份验证,同时使所有内容尽可能接近Spring Boot Security Starter的默认值。 令牌验证在本地进行(使用aerogear-otp-java库),没有第三方API提供程序。 为用户设置令牌是可行的,但无法通过利用Spring Security Authentication Manager / Providers来验证令牌。 TL; DR 将额外的AuthenticationProvider集成到Spring Boot Security Starter配置的系统中的正式方法是什么? 建议采用什么方法来防止重放攻击? 长版 该API具有一个端点/auth/token,前端可以通过提供用户名和密码从该端点获取JWT令牌。该响应还包括一个身份验证状态,可以为AUTHENTICATED或PRE_AUTHENTICATED_MFA_REQUIRED。 如果用户需要MFA,则使用授予的单个授权PRE_AUTHENTICATED_MFA_REQUIRED和5分钟的到期时间来颁发令牌。这使用户可以访问端点/auth/mfa-token,在端点上可以从其Authenticator应用程序提供TOTP代码,并获取经过完全身份验证的令牌来访问站点。 提供者和令牌 我创建了MfaAuthenticationProvider实现AuthenticationProvider以下内容的自定义: @Override public Authentication authenticate(Authentication authentication) throws AuthenticationException { // validate the OTP code } @Override public boolean supports(Class<?> authentication) { return OneTimePasswordAuthenticationToken.class.isAssignableFrom(authentication); } 还有一个OneTimePasswordAuthenticationToken扩展AbstractAuthenticationToken名,用于保存用户名(取自签名的JWT)和OTP代码。 设定档 我有我的自定义WebSecurityConfigurerAdapter,我AuthenticationProvider通过添加我的自定义http.authenticationProvider()。根据JavaDoc,这似乎是正确的位置: 允许添加一个额外的AuthenticationProvider来使用 …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.