Tag: spring security

Spring Security多个url规则集不能一起工作

我有一个HTTP Spring安全配置,当我注释掉每个方面时它似乎工作但是当我将Spring Security规则组合在一起时它不起作用,所以我知道问题不在于regexMatcher或antMatcher而在于规则结合使用。 这是我的Spring Security类: package com.driver.website.config; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.builders.WebSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; import org.springframework.security.web.csrf.CsrfTokenRepository; import org.springframework.security.web.csrf.HttpSessionCsrfTokenRepository; import org.springframework.security.web.header.writers.StaticHeadersWriter; import org.springframework.security.web.header.writers.frameoptions.XFrameOptionsHeaderWriter; import org.springframework.security.web.util.matcher.RequestMatcher; import javax.servlet.http.HttpServletRequest; import java.security.AccessControlContext; @Configuration @EnableWebSecurity @EnableGlobalMethodSecurity(prePostEnabled = true) public class SecurityConfig extends WebSecurityConfigurerAdapter { @Value(“${widget.headers.xframeoptions.domains.allowed}”) private String […]

如何使用Spring Security重新加载用户更新的权限

我正在使用Spring Security通过OpenID进行身份validation的应用程序。 当用户登录时,会话中会加载某些权限。 我有完全权限的用户,可以修改其他用户的权限(撤销,添加角色)。 我的问题是,如何动态更改用户会话权限? (不能使用SecurityContextHolder,因为我想更改另一个用户会话)。 简单方法:使用户会话无效,但如何? 更好的方法:刷新用户会话与新权限,但如何?

NoSuchMethodError:Spring配置中的registerAutoProxyCreatorIfNecessary(ParserContext; Object;)exception

我的春季项目有点问题。 我有这个配置:applicationContext.xml 弹簧security.xml文件 faces-config.xml中 org.springframework.web.jsf.el.SpringBeanFacesELResolver userTestManagedBeans cz.web.managedBeans.UserTestManagedBeans session ejb #{userBean} registrationManagedBean cz.web.managedBeans.pub.RegistrationManagedBean request registrationBean #{registerUserBean} web.xml中 facesServlet javax.faces.webapp.FacesServlet 1 facesServlet *.xhtml org.springframework.web.context.ContextLoaderListener org.springframework.web.context.request.RequestContextListener index.xhtml contextConfigLocation /WEB-INF/spring/*.xml encoding-filter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 forceEncoding true encoding-filter /* springSecurityFilterChain org.springframework.web.filter.DelegatingFilterProxy springSecurityFilterChain /* 的pom.xml 4.0.0 cz.web TestWebApp 1.0-SNAPSHOT war TestWebApp ${project.build.directory}/endorsed UTF-8 4.0.0.RELEASE 2.0.8 3.2.0.RELEASE 4.0 5.1.6 mysql mysql-connector-java ${mysql.version} […]

如何从spring security获取当前登录的用户对象?

我使用的是Spring安全版3.1.4.RELEASE。 如何访问当前登录的用户对象? SecurityContextHolder.getContext().getAuthentication().getPrinciple() 返回用户名,而不是用户对象。 那么如何使用返回的用户名并获取UserDetails对象? 我试过以下代码: public UserDetails getLoggedInUser(){ final Authentication auth = SecurityContextHolder.getContext().getAuthentication(); if (auth != null && auth.isAuthenticated() && !(auth instanceof AnonymousAuthenticationToken)) { if(auth.getDetails() !=null) System.out.println(auth.getDetails().getClass()); if( auth.getDetails() instanceof UserDetails) { System.out.println(“UserDetails”); } else { System.out.println(“!UserDetails”); } } return null; } 以下是结果: [2015-08-17 19:44:46.738] INFO http-bio-8443-exec-423 System.out class org.springframework.security.web.authentication.WebAuthenticationDetails [2015-08-17 19:44:46.738] INFO http-bio-8443-exec-423 […]

SpringBoot 1.5.x + Security + OAuth2

我有一个带有OAuth2安全性的Spring Boot REST API。 今天我将spring-boot-starter-parent从1.4.2升级到1.5.2 。 变化让我很困惑。 之前,我可以使用Postman测试我的REST API。 当我的访问令牌不正确或我没有特定资源的权限时,服务器响应如下: { “error”: “access_denied”, “error_description”: “Access is denied” } 现在它一直将我重定向到/login页面…当我登录时 – 它显示我的资源而没有任何OAuth2身份validation… 我试图禁用它,我发现了这个神奇的属性: security.oauth2.resource.filter-order = 3 该行关闭重定向到登录页面。 但是,我的问题是: 这两个版本在安全方面发生了什么? 这个“奇怪”的行是唯一有效的修复方法吗? 这个登录页面的目的是什么以及它正在使用什么身份validation(我检查了Google Chrome中的请求和响应,我看不到任何访问令牌和oauth2的东西,所以它只使用用户存储库?) 我的代码中一些更重要的部分: 的pom.xml org.springframework.boot spring-boot-starter-parent 1.5.2.RELEASE 2.1.0.RELEASE org.springframework.boot spring-boot-starter-data-jpa org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-actuator org.springframework.boot spring-boot-starter-security org.springframework.security.oauth spring-security-oauth2 ${spring-security-oauth.version} application.properties #other properties security.oauth2.resource.filter-order = 3 OAuth2.java […]

我在哪里定义`springSecurityFilterChain` bean?

当我将springSecurityFilterChain的bean定义放在web.xml ,我收到一个错误,指示Tomcat 7无法启动,因为duplicate bean definition for springSecurityFilterChain有一个duplicate bean definition for springSecurityFilterChain 。 我将整个堆栈跟踪上传到文件共享站点,您可以通过单击此链接阅读该站点。 但是,当我在web.xml springSecurityFilterChain bean定义并尝试重新启动服务器时,我得到一条不同的错误消息,指出springSecurityFilterChain没有bean定义。 您可以通过单击此链接来读取文件共享站点上的第二个堆栈跟踪。 那么我应该把springSecurityFilterChain的bean定义放在springSecurityFilterChain ,它的语法应该是什么? 我认为问题可能是我用来测试这种方法的spring petclinic示例应用程序有自己的方式使用clinicservice和自己的xml配置文件来处理应用程序启动和资源管理。 您可以在此链接中查看spring petclinic应用程序的完整代码。 我对petclinic应用程序所做的更改如下: 我在pom.xml中添加了以下内容: org.springframework.security spring-security-core 3.2.2.RELEASE org.springframework.security spring-security-web 3.2.2.RELEASE org.springframework.security spring-security-config 3.2.2.RELEASE 我在web.xml中添加了以下内容: springSecurityFilterChain org.springframework.web.filter.DelegatingFilterProxy springSecurityFilterChain /* 我在Java Resources向src/main/java添加了一个名为org.springframework.security.samples.knowledgemanager.config的包,然后我向它添加了以下两个类: MessageSecurityWebApplicationInitializer.java: @Order(2) public class MessageSecurityWebApplicationInitializer extends AbstractSecurityWebApplicationInitializer {} SecurityConfig.java: @Configuration @EnableWebMvcSecurity public class SecurityConfig […]

Spring的SecurityContextHolder.getContext()。getAuthentication()在HTTPS / SSL中使用RedirectView后返回null

我有一个典型的Spring MVC在Tomcat上运行。 将系统切换为在HTTPS上运行后(一切都在普通HTTP下运行正常),登录停止工作。 原因是Spring的SecurityContextHolder.getContext().getAuthentication()对象在使用RedirectView后变为null 。 我已经搜索了答案,我发现了唯一一个在viewResolver bean设置中将属性redirectHttp10Compatible设置为false的viewResolver 。 这没有用。 我还检查了整个重定向,我的会话ID保持不变,连接仍然是安全的,即http和https之间的变化(反之亦然)不是问题(至少就我所知)。 可能是什么问题呢?

当用户名和密码除了具有更多字段的登录页面时如何实现Spring安全性?

我有一个登录页面,用户需要在其中输入以下信息VIN号码,电子邮件,邮政编码和accessCode,它们将从不同的应用程序中获取。 因此,为了validation用户,我需要自定义UserDetailsService类中的所有信息,然后调用一个过程来validation用户。 但是当我实现UserDetailsService时,我看到了如下所示 @Component public class LoginService implements UserDetailsService { @Autowired LoginStoredProcedureDao loginStoredProcedureDao; public Map verifyLogin(LoginDetails details) { return loginStoredProcedureDao.verifyLogin(details); } @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { // TODO Auto-generated method stub //verifyLogin(); return null; } } loginDetails对象如下所示 public class LoginDetails { String vin; String email; String zipcode; String accessCode; } 在上述情况下如何使用弹簧安全。 在这里,用户需要提供所有信息以validation他自己。

Spring Security – 忽略请求参数规则的Url

我有一个使用spring安全性的Web应用程序。 它使用元素来描述不同URL的访问filter。 默认情况下,这不会考虑URL的请求参数。 我需要根据请求参数设置url的自定义安全规则。 所以我做了以下事情: 1)我创建了一个bean后处理器类,它将为spring安全机制启用请求参数选项: . . . . . . 和代码: public class MySecurityBeanPostProcessor implements BeanPostProcessor { private Boolean stripQueryStringFromUrls = null; @Override public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { if (bean instanceof DefaultFilterInvocationSecurityMetadataSource && stripQueryStringFromUrls != null) { ((DefaultFilterInvocationSecurityMetadataSource) bean) .setStripQueryStringFromUrls(stripQueryStringFromUrls.booleanValue()); } return bean; } // code stripped for clarity […]

使用Spring Security和JavaConfig进行身份validation时出现PartialResultException

我目前正在使用Spring Boot创建一个新的Web应用程序,并开始集成Spring Security进行身份validation。 在成功遵循基于Spring Boot的LDAP教程之后 ,我想将基于JavaConfig的配置指向我的Active Directory实例。 我的应用程序现在按预期处理错误的凭据,但现在会产生有效的凭据 javax.naming.PartialResultException: Unprocessed Continuation Reference(s); remaining name ” 这是一个常见问题 – 有很多 地方遇到过这个问题。 解决方案似乎是将Context.REFERRAL设置为“follow”,但我找不到任何说明如何使用JavaConfig设置该选项的文档。 这是我唯一可以恢复到基于XML的配置吗? 看起来Spring正在将开发人员推向JavaConfig,所以如果可能的话,我想避免混合使用这两种方法。 以下是我的安全配置: @Configuration @EnableWebMvcSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.authorizeRequests().antMatchers(“/css/**”).permitAll().anyRequest() .fullyAuthenticated().and().formLogin(); } @Configuration protected static class AuthenticationConfiguration extends GlobalAuthenticationConfigurerAdapter { @Override public void init(AuthenticationManagerBuilder auth) […]