Tag: spring security

处理401错误(Spring Security)

我可以处理404错误。 @ResponseStatus(value = HttpStatus.NOT_FOUND) @ExceptionHandler(NoHandlerFoundException.class) @ResponseBody public void noHandlerFoundException (HttpServletResponse response) throws IOException{ //some code } 但是如何处理401错误? 编辑我使用的是Java而不是web.xml 编辑我应该在NoHandlerFoundException中放置什么来处理HttpStatus.UNAUTHORIZED 编辑 validation失败时,我的方法不成功validation: public class StatelessLoginFilter extends AbstractAuthenticationProcessingFilter { protected void unsuccessfulAuthentication(HttpServletRequest request, HttpServletResponse response, AuthenticationException failed) throws IOException, ServletException { SecurityContextHolder.clearContext(); if (logger.isDebugEnabled()) { logger.debug(“Authentication request failed: ” + failed.toString()); logger.debug(“Updated SecurityContextHolder to contain null Authentication”); […]

Spring-security – AccessDecisionVoter-impl不会被调用

我正在尝试创建自定义AccessDecisionVoter,并在调用它时调试它。 我在每种方法中都提出了一个断点,但没有发生任何事情。 弹簧security.xml文件: IBrandsApi.java public interface IBrandsApi { IHibernateBean getByPK(Integer id); @Secured({ “ROLE_BRAND_ADMIN” }) IHibernateBean update(IHibernateBean brand); @Secured({ “ROLE_BRAND_ADMIN” }) IHibernateBean insert(IHibernateBean brand); @Secured({ “ROLE_BRAND_ADMIN” }) ResultContainer getAll(IFilter filter); @Secured({ “ROLE_ADMIN” }) Integer delete(IFilter filter); } VoterTest.java(带有断点的空文件) public class VoterTest implements AccessDecisionVoter { private IBrandsApi brandsApi; public IBrandsApi getBrandsApi() { return brandsApi; } public void […]

OpenSaml3文档

有谁知道OpenSaml3是否有任何文档? 支付还是其他? 我知道曾经有一本15美元的书可用,但我相信它只涵盖OpenSaml2。 我知道这可能会被投票,因为它不是一个特定于编程的问题,但是Spring-Saml现在将SO列为主要论坛( http://projects.spring.io/spring-security-saml/ )。 如果没有一个好的库,SAML很难实现,我认为Spring-SAML是在JVM上写作的人最好的东西。 因为Spring-Saml看起来被抛弃了,OpenSaml2很快就会终结。 我想看看我是否可以更新Spring Saml以使用更新支持的OpenSAML版本,但除了src代码之外似乎没有文档(没有迁移指南,甚至是已发布的javadoc)。 任何人都可以指出我正确的方向。

无效的记住我令牌(系列/令牌)不匹配。 意味着以前的cookie盗窃攻击

org.springframework.security.web.authentication.rememberme.CookieTheftException: Invalid remember-me token (Series/token) mismatch. Implies previous cookie theft attack. at org.springframework.security.web.authentication.rememberme.PersistentTokenBasedRememberMeServices.processAutoLoginCookie(PersistentTokenBasedRememberMeServices.java:102) at org.springframework.security.web.authentication.rememberme.AbstractRememberMeServices.autoLogin(AbstractRememberMeServices.java:115) 我注意到processAutoLoginCookie方法被调用两次。 方法本身的行为似乎是正确的,例如,更新数据库中的令牌并更新客户端中的cookie。 任何有关这方面的帮助将不胜感激。

使用Apache CXF 2.4 JAX-RS和Spring Security 3.2获取用户名

我使用SecurityContextHolder在我的JAX-RS资源中获取用户名,并且可以正常工作: @Path(“/myresource”) public class MyResoure { @Get public String getUserName() { return SecurityContextHolder.getContext().getAuthentication().getName(); } } 但我想将SecurityContext注入到类字段中(以编写JUnit测试)。 我尝试了一些记录的方法: 使用javax.ws.rs.core.SecurityContext我得到一个NullPointerException ,因为securityContext始终为null 。 @Path(“/myresource”) public class MyResoure { @Context private javax.ws.rs.core.SecurityContext securityContext; @Get public String getUserName() { return securityContext.getUserPrincipal().getName(); } } 使用org.apache.cxf.security.SecurityContext (请参阅Apache CXF文档 ),我得到一个NullPointerException ,因为securityContext.getUserPrincipal()始终为null 。 @Path(“/myresource”) public class MyResoure { @Context private org.apache.cxf.security.SecurityContext securityContext; @Get public […]

Spring MVC中的自定义授权

我们有一个应用程序,用户可以由管理员创建用户,并将角色分配给特定类型的实体。 例如,如果实体名为Student ,则应用程序的用户具有不同级别的权限,例如: 查看者 – 查看学生详细信息 编辑 – 编辑学生详细信息 出口商 – 出口学生详细信息 执行上述操作的URI如下所示: GET – /content/{classId}/{studentId}/view PUT – /content/{classId}/{studentId} GET – /content/{classId}/{studentId}/export POST – /content/{classId}/{studentId}/export 请注意,URI具有动态性质。 此外,给定用户User A可以为Class 1分配VIEWER角色,为Class 2分配EXPORTER 。 在我的spring-security配置中,我只定义了两个权限 – ADMINISTRATOR和USER 。 ADMINISTRATOR – 可以访问所有内容 USER – 可以访问除/admin/* URI之外的所有内容。 角色VIEWER , EDITOR , EXPORTER不是弹簧安全角色。 现在我遇到了一个问题,同时限制用户访问他们没有权限的资源。 此外,如果用户没有正确的EXPORTER ,他甚至不应该看到导出按钮(放在应用程序的某个位置)。 也许我可以使用spring的security标记库来做到这一点。 但这完全是另一个问题。 我可以让他们知道spring-security,但问题是我在哪里读取{studentId} ( @PathVariable […]

SAML服务提供商的弹簧安全性

在使用预先配置的服务提供程序元数据时,在spring安全性中,是否应该有2个bean定义用于扩展元数据委托? 一个用于IDP元数据,一个用于SP元数据? classpath:security/localhost_sp.xml classpath:security/idp.xml

Spring方法级安全性在第二次调用时失败

我想在GWT应用程序上使用方法级安全性。 我正在尝试使用Spring Security 3.1,因为我在这里找到了一个工作示例,但它没有使用form-login。 阅读此答案后 ,第一个方法调用成功获取SecurityContext,但在下次调用之前将其清除: [org.springframework.security.web.context.HttpSessionSecurityContextRepository] – Obtained a valid SecurityContext from SPRING_SECURITY_CONTEXT: ‘org.springframework.security.core.context.SecurityContextImpl@6fe9f089: Authentication: org.example.MyAppName.server.auth.MyAppNameUserAuthentication@6fe9f089’ … [org.springframework.security.access.intercept.aspectj.AspectJMethodSecurityInterceptor] – Authorization successful … [org.springframework.security.web.context.SecurityContextPersistenceFilter] – SecurityContextHolder now cleared, as request processing completed … [org.springframework.security.web.context.HttpSessionSecurityContextRepository] – SecurityContext is empty or contents are anonymous – context will not be stored in HttpSession. [org.springframework.security.web.context.SecurityContextPersistenceFilter] – SecurityContextHolder now cleared, […]

Spring Security – 无法注销

我是Spring Framework的初学者。 我和我的朋友正在波兹南理工大学写我们的工程论文,我们遇到了Spring Security(3.1.0)的问题。 我不能很好地退出。 当我想再次登录时,我看到消息“用户已经登录”(我覆盖了标准的Spring Security错误消息)。 我试图清除SecurityContextHolder的上下文,但它仍然无法正常工作。 弹簧security.xml文件 ` web.xml中 springSecurityFilterChain org.springframework.web.filter.DelegatingFilterProxy springSecurityFilterChain /* 针对home.jsp <a href="https://stackoverflow.com/questions/13920729/spring-security-cannot-logout/”>Logout Controller.java @RequestMapping(value = “logout”) public String logout() { SecurityContextHolder.clearContext(); return “redirect:/j_spring_security_logout”; } @RequestMapping(value = “start”) public String start(Model model, HttpServletRequest request) { // sprawdzenie czy uzytkownik nie jest juz zalogowany if (request.getRemoteUser() == null) { return “start”; […]

如何使用Spring Security在多个基于JVM的应用程序上实现单点登录

我目前正在尝试在多个基于JVM(Grails,Servlets)的Web应用程序上实现单一登录解决方案,这些Web应用程序当前都部署在同一个servlet容器中(目前是Tomcat,但不希望将我的解决方案仅限于Tomcat)。 所有Web应用程序共享一个公共数据库 我已经研究了使用CAS或其他第三方库创建新的Web服务来处理单点登录的各种选项,但似乎没有一个真正满足业务需求。 我当前的实现涉及创建一个新的jar库,它具有AuthenticationProviders的通用实现,以及基于Spring Security的预身份validationfilter 。 在这种方法中,我有多个AuthenticationProviders(当前是Active Directory和Database)供应用程序进行身份validation。 validation成功后,将在包含用户的会话表,过期时间和令牌中插入一行。 令牌也将作为cookie存储在用户的计算机上,并用于validation它们在预认证filter中是否具有当前会话。 从来没有这样做之前我想确保我没有创建一个巨大的安全问题,我也想知道我需要什么来创建令牌? 此时一个简单的GUID似乎足够了? 目前我们正在开发Spring Security 3.0.x,尚未升级到3.1。 提前致谢。