Tag: spring security

Spring Boot安全性CORS

我对弹簧安全URL的CORSfilter有问题。 它不会在属于spring sec(登录/注销)的URL上设置Access-Control-Allow-Origin和其他公开的标头,也不会被Spring Security过滤。 这是配置。 CORS: @Configuration @EnableWebMvc public class MyWebMvcConfig extends WebMvcConfigurerAdapter { ********some irrelevant configs************ @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping(“/*”).allowedOrigins(“*”).allowedMethods(“GET”, “POST”, “OPTIONS”, “PUT”) .allowedHeaders(“Content-Type”, “X-Requested-With”, “accept”, “Origin”, “Access-Control-Request-Method”, “Access-Control-Request-Headers”) .exposedHeaders(“Access-Control-Allow-Origin”, “Access-Control-Allow-Credentials”) .allowCredentials(true).maxAge(3600); } } 安全: @Configuration @EnableWebSecurity public class OAuth2SecurityConfiguration extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { […]

Spring REST安全性 – 以不同方式保护不同的URL

我在Spring 4下使用基本身份validation工作REST API。 这些REST服务位于/ api / v1 / ** URL下。 但是,我想在不同的url / api / v2 / **下添加另一组REST端点,但使用基于令牌的身份validation进行保护。 是否可以使用一个servlet执行此操作? 如何配置Spring Security以对不同的URL使用不同forms的身份validation? 谢谢。

向Spring安全上下文中存储的主体对象添加其他详细信息

我正在使用Spring 3.0和Spring Security 3.我能够使用Spring Security对数据库进行身份validation。 使用: SecurityContextHolder.getContext().getAuthentication().getPrincipal() 我能够检索当前登录用户的用户名。 我希望添加其他详细信息,例如用户标识和模块访问存储在Spring Security上下文中的主体对象,以便我以后可以检索它。 如何向主体对象添加其他详细信息,然后如何在jsp或java类中检索它。 如果可能,请提供适当的代码段。 编辑:我使用JDBC访问我的数据库。 提前致谢。

将Spring Security移至Java Config,authentication-success-handler-ref在哪里?

我们的应用程序具有成功登录的自定义成功处理程序。 它基本上将它们重定向到它们的会话到期时它们所在的页面。 我们正在转向Java配置而不是spring xml配置。 配置的其余部分非常顺利,但是我们找不到将security:form-login标记的authentication-success-handler-ref属性放在哪里。 … … 到目前为止,这是我们的配置。 @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .anyRequest().authenticated() .and() .formLogin() .loginPage(“/login”) .failureUrl(“/login”) .and() .logout() .permitAll() .and() } 此外,我们找不到将default-target-url放在哪里,但这绝对不那么重要。 注意,我们实际上使用的是Groovy,但代码与Java配置基本相同。

Spring OAuth2为令牌端点的每个请求生成访问令牌

是否可以使用每个请求的client_credentials或密码授予类型生成多个有效的访问令牌? 使用上述授权类型生成令牌仅在当前请求到期时提供新令牌。 我可以使用密码授予类型生成刷新令牌,然后生成多个访问令牌,但这样做会使以前的任何访问令牌无效。 我知道如何更改以允许每次请求生成访问令牌到/ oauth / token端点并确保任何以前的令牌都不会失效? 下面是我的oauth服务器的XML配置。

如何为RESTful端点禁用基于spring form的登录?

我根据auto-config=’true’使用基本和基于表单的身份validation配置了spring-security。 我希望/api/**下的端点不使用基于表单的安全性。 /api/**之外的其他端点应使用基于表单的登录。 我希望401响应发送给这些没有在/api/**下提供凭据的端点。 更新 :感谢Luke Taylor在下面的评论,我提出了以下解决方案。 注意 :此技术仅适用于弹簧安全3.1。 首先我/api/** 。 我们从不创建会话,但如果可用,则使用一个会话,这由create-session=”never”和的使用来 。

Spring安全“forward:”指令无法转发到登录表单

用户创建帐户后,我想自动登录该用户。 我有标准表单登录由/postloginfilter/postlogin 。 如果我去http://localhost/postlogin它会尝试登录我(失败因为我没有包含post参数),但是做了正确的尝试。 但是如果我想以编程方式登录用户并尝试从控制器返回:“forward:/ postlogin”我得到了404。 我假设forward:指令没有通过filter,因此不会被UsernamePasswordAuthenticationFilter处理。 如何以编程方式手动引导登录? 我希望在用户创建新帐户后执行此操作(他们应在完成注册后立即登录该帐户)。

启用S​​pring安全性时,无法加载资源(css或js)

资源在src / main / resources / static / css或src / main / resources / static / js下,我使用的是spring boot,安全类是: @Configuration @EnableWebMvcSecurity @EnableGlobalAuthentication public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { // http.authorizeRequests().antMatchers(“/”, “/index”, “/quizStart”) // .permitAll().anyRequest().authenticated(); // http.formLogin().loginPage(“/login”).permitAll().and().logout() // .permitAll(); } @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { auth.inMemoryAuthentication().withUser(“test”).password(“test”) […]

Spring Boot OAuth2单点注销(注销)

我正在考虑将OAuth2用于我的应用程序。 我想要实现的架构如下: 我将拥有自己的(也是唯一一个)授权服务器 某些资源应用程序使用授权服务器validation对其资源的访问 一些客户端应用程序(Web,移动)将用户重定向到授权服务器进行身份validation并成功将消耗资源应用程序上的api。 到目前为止,我已设法在3个基本应用程序(1个auth服务器,1个资源服务器和1个客户端)之间实现此交互。 我没有工作的是注销function。 我已经读过Dave Syer在他的教程中描述的“臭名昭着的棘手问题” ,但在这种情况下我真的需要用户在注销后重新登录。 我已经尝试给访问令牌和刷新令牌提供几秒钟,但是当到期时,我没有被提示再次登录,而是在客户端应用程序上获得NPE。 我也尝试过这篇文章中提出的解决方案来从令牌存储中删除令牌,但它不起作用。 单点注销对我来说是这种实现的理想行为。 如何使用Spring Boot Oauth2实现此目的。 如果由于某种原因不可能,我可以使用哪些替代方法来实现使用Spring Boot的集中安全性? 提前致谢。

基于Spring Security Token的身份validation

我有一个restapi,我在使用spring security Basic Authorization进行身份validation,其中客户端为每个请求发送用户名和密码。 现在,我想实现基于令牌的身份validation,我将在用户首先进行身份validation时在响应头中发送令牌。 对于进一步的请求,客户端可以在标头中包含该标记,该标记将用于向用户validation资源。 我有两个身份validation提供程序tokenAuthenticationProvider和daoAuthenticationProvider @Component public class TokenAuthenticationProvider implements AuthenticationProvider { @Autowired private TokenAuthentcationService service; @Override public Authentication authenticate(final Authentication authentication) throws AuthenticationException { final RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes(); final HttpServletRequest request = ((ServletRequestAttributes) requestAttributes).getRequest(); final String token = request.getHeader(Constants.AUTH_HEADER_NAME); final Token tokenObj = this.service.getToken(token); final AuthenticationToken authToken = new AuthenticationToken(tokenObj); return […]