Tag: spring security

Spring安全中的X-Frame DENY

我在我的spring项目中使用jquery下载插件 ,但是浏览器给出了以下错误: Refused to display ‘http://localhost:8086/DART/fleetAndCar/download/5’ in a frame because it set ‘X-Frame-Options’ to ‘DENY’. 我读到的是弹簧安全性方面的Xframe问题,所以我补充说 http .headers() .addHeaderWriter(new XFrameOptionsHeaderWriter(XFrameOptionsHeaderWriter.XFrameOptionsMode.SAMEORIGIN)) 但它不会改变DENY但是甚至添加SAMEORIGIN所以我有他跟随错误: Multiple ‘X-Frame-Options’ headers with conflicting values (‘DENY, SAMEORIGIN’) encountered when loading ‘http://localhost:8086/DART/fleetAndCar/download/5’. Falling back to ‘DENY’. 这是http请求: 这是我的弹簧配置: @Configuration @Order(1) public static class ApiWebSecurityConfig extends WebSecurityConfigurerAdapter{ @Override protected void configure(HttpSecurity http) throws Exception { […]

本地401工作,临时服务器获得302

我可能不会得到帮助第一次刺伤所需的所有必要信息,但我会尽我所能并在我们进行时编辑它。 我有一个使用Spring-Security-Core插件的Grails 1.3.7应用程序。 我正在处理处理会话超时和ajax请求的代码。 在LoginController中,我有以下内容: def authAjax = { session.SPRING_SECURITY_SAVED_REQUEST_KEY = null response.sendError HttpServletResponse.SC_UNAUTHORIZED } 在全局JavaScript文件中,我有以下内容: $.ajaxSetup({ error: function(xhr, status, err) { if (xhr.status == 401) { $(‘#login-dialog’).dialog({ // show ajax login }); } } }); 当我在本地运行时,一切都按预期工作。 当我的会话超时时,我在FireBug控制台中看到一个401,然后我得到了Login对话框。 当我将它部署到我们的登台服务器时,我只得到了302并且永远不会进入authAjax因为永远不会得到401。 本地开发和分段之间的主要区别在于我使用mod_proxy和apache httpd来代替来回Tomcat的请求。 我的假设是这就是为什么我得到302而不是401,但我不是100%肯定。 我的问题 是mod_proxy导致302 我如何解决这个问题,以便它像在本地一样工作,但仍然使用mod_proxy。 更新: 根据最近的评论,在本地,当我得到401时,我看到了这个: POST https://localhost:8080/admin/bookProject/edit 302 Moved Temporarily GET http://localhost:8080/login/authAjax 401 […]

Jquery Ajax Firefox不发送cookie(Chrome工作)

我正在尝试在我的应用程序中使用Ajax身份validation,我似乎已经让它工作,除了firefox似乎没有在后续请求的“cookie”请求标头中向服务器发送正确的jessionid,而chrome这样做就好了。 这是登录function: $.ajaxSetup({ xhrFields: { withCredentials : true } }) function sudoLogin(callback){ $.ajax({ url : HOST + “/ProperApp/j_spring_security_check”, type : “POST”, data : $(“#login”).serialize(), dataType: ‘json’, async : false, success: function(result) { if (result.login) { callback(true); } else { callback(false); } } }) } 在firefox的响应中,我可以看到cookie被设置,并且调用成功回调: Set-Cookie JSESSIONID=81235e7ff741e941c1e078afee5c; Path=/ProperApp; HttpOnly 但是,在后续请求中,例如此请求,cookie不会被发送: function getUserDeets(callback){ $.ajax({ url : […]

如何使用spring-security和jQuery处理过期的会话?

我在我的应用程序中使用spring-security和jQuery。 主页通过Ajax动态加载内容到选项卡。 一切都很好,但有时我的选项卡中有登录页面,如果我输入凭据,我将被重定向到没有标签的内容页面。 所以我想处理这种情况。 我知道有些人使用ajax身份validation,但我不确定它是否适合我,因为它对我来说看起来很复杂,我的应用程序不允许任何访问而无需登录。 我想为所有ajax响应编写一个全局处理程序,如果我们需要进行身份validation,它将执行window.location.reload() 。 我认为在这种情况下,最好是获取401错误而不是标准登录表单,因为它更容易处理。 所以, 1)是否可以为所有jQuery ajax请求编写全局error handling程序? 2)我如何自定义spring-security的行为,以便为ajax请求发送401错误,但是常规请求会像往常一样显示标准登录页面? 3)你可能有更优雅的解决方案吗? 请分享。 谢谢。

请求的资源上没有“Access-Control-Allow-Origin”标头,响应具有HTTP状态代码401

我一直在实现Spring(4.3)Restful应用程序,它具有spring security和oauth(2)配置。 实现这些配置后,我通过邮递员测试了我的其余api调用,一切都很好,但我的客户端只是jquery或ajax。 当我试图调用oauth令牌时,它显示“请求资源上没有’Access-Control-Allow-Origin’标头。因此不允许来源’ http:// localhost:8080 ‘访问”错误,我有配置的cors也启用配置。 但我不知道我错过了哪一部分,请帮助我。 在google上提出这么多建议之后我还尝试了filter方法以及Spring安全配置方法。 但仍然得到同样的错误。 我的服务器代码 @Configuration public class WebConfig extends WebMvcConfigurerAdapter { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping(“/**”) .allowedMethods(“HEAD”, “GET”, “PUT”, “POST”, “DELETE”, “PATCH”,”OPTIONS”)); } } ======================================= @Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override @Order(Ordered.HIGHEST_PRECEDENCE) protected void configure(HttpSecurity http) throws Exception { http.cors().and() .sessionManagement() .sessionCreationPolicy(SessionCreationPolicy.STATELESS).and() //.csrf().disable() […]

CORS问题 – 请求的资源上没有“Access-Control-Allow-Origin”标头

我创建了两个Web应用程序 – 客户端和服务应用程序。 当客户端和服务应用程序部署在同一个Tomcat实例中时,它们之间的交互很顺利。 但是当应用程序部署到单独的Tomcat实例(不同的机器)时,我在发送服务应用程序的请求时会收到以下错误。 Response to preflight request doesn’t pass access control check: No ‘Access-Control-Allow-Origin’ header is present on the requested resource. Origin ‘http://localhost:8080’ is therefore not allowed access. The response had HTTP status code 401 我的客户端应用程序使用JQuery,HTML5和Bootstrap。 AJAX调用服务如下所示: var auth = “Basic ” + btoa({usname} + “:” + {password}); var service_url = {serviceAppDomainName}/services; if($(“#registrationForm”).valid()){ […]