标签: jsessionid

在spring mvc中删除url重写中的jsessionid

我正在使用spring MVC并且在jsessionid中遇到问题,我发现如果在浏览器中没有启用cookie,则会在URL中注入jsessionid,生成类似的URL:

HTTP://本地主机/类别; JSESSIONID = Bsls4aQFXA5RUDcmZKV5iw CID = 13001?

实际上浏览器没有问题,但是当Google抓取我的网站,并且Google抓取工具似乎没有Cookie :)时,他们会将该网站的网址存储在该表单中,而我的网站会显示在搜索结果中,其网址类似于包含jsessionid的网址.

实际上它运行没有任何问题,但我更喜欢在没有jsessionid的情况下将网址显示在Google搜索结果中.

有帮助吗?

java session spring spring-mvc jsessionid

19
推荐指数
2
解决办法
4万
查看次数

注销在浏览器上留下了JSESSIONID.如何清除它?

我使用以下代码从我的系统注销用户.

/**
 * This function helps to set the session attribute for the present user to null and then
 * removes the attribute itself and this helps in clearing the session
 * @param request
 * @param response
 */
@RequestMapping(value = AuthConstants.EXIT, method = RequestMethod.POST)
public void exitPrime(HttpServletRequest request, HttpServletResponse response) {
        /*Getting session and then invalidating it*/
        HttpSession session = request.getSession(false);
        if(request.isRequestedSessionIdValid() && session != null)
        {
            session.invalidate();

        }
}
Run Code Online (Sandbox Code Playgroud)

这导致成功注销,但登录时提供的JSESSION ID仍然保留在浏览器中,因为对于任何新用户,在登录时再次使用相同的JSESSION ID.我希望JSESSIONID cookie仅对当前会话有效,一旦用户注销,它将被销毁或无效以便下次完成登录.我的登录代码如下: -

/**
 * This method allows …
Run Code Online (Sandbox Code Playgroud)

spring spring-mvc spring-security logout jsessionid

18
推荐指数
2
解决办法
4万
查看次数

如何避免;第一次调用页面时jsessionid = XXX?如果第一页是jsp,它可以工作

我有一个使用welcome-page index.jsp的应用程序,<iframe></iframe>iframe的内容是一个jsf页面.如果我访问index.jsp,我会在第一次获取firebug时看到一个cookie:

Set-Cookie  JSESSIONID=C615DA89B6EF73F801973EA3DCD3B226; Path=/
Run Code Online (Sandbox Code Playgroud)

<iframe>继承这个jsessionid 的页面.但是:当我直接访问我的页面时,<iframe/>我在第一次请求时将jsessionId重写为所有没有cookie的URL.之后使用cookie.这一切都很好 - 如果:安全系统允许我执行URL重写.

我运行jboss 4.2.2

我希望实现与index.jsp相同的行为 - 例如,总是使用cookie并始终避免http重写.

[编辑] 感谢balusc的回答我写道:

public class JsessionIdAvoiderFilter implements Filter {

            public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException,
                    ServletException {
                boolean allowFilterChain = redirectToAvoidJsessionId((HttpServletRequest) req, (HttpServletResponse)res);

                         //I'm doing this because if I execute the request completely, it will perform a pretty heavy lookup operation. No need to do it twice.
                if(allowFilterChain)
                    chain.doFilter(req, res);
            }


            public static boolean redirectToAvoidJsessionId(HttpServletRequest req, HttpServletResponse res) …
Run Code Online (Sandbox Code Playgroud)

cookies jsf jboss tomcat jsessionid

15
推荐指数
1
解决办法
2万
查看次数

在JSESSIONID cookie中设置httponly(Java EE 5)

我正在尝试在JSESSIONID cookie上设置httponly标志.我在Java EE 5中工作,但是无法使用setHttpOnly().首先,我尝试doPost()使用在servlet中创建自己的JSESSIONID cookie response.setHeader().

如果那不起作用,我试过了response.addHeader().那也行不通.然后,我了解到servlet处理将会话转换为JSESSIONID cookie并将其插入http头中,因此如果我想使用该cookie,我将不得不编写一个过滤器.我写了一个过滤器和setHeader()/ addHeader()在那里玩,再次无济于事.

然后,我了解到响应对象在进入过滤器之前会有一些刷新/关闭动作,所以如果我想操纵数据,我需要扩展HttpServletResponseWrapper并传递给它filterChain.doFilter().这已经完成,但我仍然没有得到结果.显然我做错了但我不知道是什么.

我不确定这与手头的问题是否完全相关,但servlet没有将任何html文档返回给浏览器.所有真正发生的事情是正在填充一些对象并将其返回到JSP文档.我有点假设Session对象被转换为JSESSIONID cookie,并在发送到浏览器之前将其与添加到请求中的对象一起包装在http标头中.

我很乐意发布一些代码,但我想排除我的困难源于对该理论的误解的可能性.

java cookies servlets httponly jsessionid

13
推荐指数
2
解决办法
3万
查看次数

在SOAP UI请求中为休息Web服务发送cookie作为请求标头

我正在测试一个Rest API使用SOAP UI工具.

首先,我点击了另一个API,它给了我jSessionid,然后在我的实际请求中,我通过名称"Cookie"向请求头添加了一个参数,并为其提供了上面提取的jsessionid值.一切都很好.

我想要的是以某种方式动态设置请求标头中的cookie/jessionid而不显式/手动执行它.

怎么做到呢?

cookies rest soapui jsessionid session-cookies

13
推荐指数
2
解决办法
3万
查看次数

无法从JavaScript代码访问Tomcat 7 - JSESSIONID cookie

有谁知道Tomcat 6和Tomcat 7之间的配置发生了哪些变化会导致JSESSIONIDcookie无法通过JavaScript访问?

使用Tomcat 6:

alert(document.cookie); // JSESSIONID=8675309ABCDEF...
Run Code Online (Sandbox Code Playgroud)

使用Tomcat 7:

alert(document.cookie); // nothing
Run Code Online (Sandbox Code Playgroud)

jsessionid session-cookies tomcat7

12
推荐指数
1
解决办法
1万
查看次数

如何使Spring Security OAuth2真正无状态/摆脱"状态"参数?

我目前正在开展一个项目,我们希望用户通过Facebook和其他OAuth2提供商登录.此外,REST api应该是无状态的.因此,不应创建/使用cookie/jsessionids.对于api的授权,在通过Facebook成功登录后,api会发布JWT.消耗其余api的webapp是使用AgularJS和satellizer构建的.我将代码缩减为github上最小示例.

工作流程理念:

  1. 用户进入该网站,选择"使用Facebook登录"
  2. Web应用程序打开一个弹出窗口,显示Facebook登录页面
  3. 用户登录,接受和Facebook重定向到webapp
  4. webapp从Facebook接收令牌并使用它登录到其余的api(GET/login/facebook?code = XXXXXXXXXXXXXXXXX)
  5. 其余的api返回JWT.
  6. webapp使用JWT来针对任何进一步的请求对其余api进行授权.

到目前为止工作

  • webapp可以处理步骤1到4
  • 如果您使用从执行GET的OAuth2ClientContextFilter获取的重定向到没有代码参数的"/ login/facebook",其余的api可以处理步骤5和6.(此重定向发送到Facebook,您登录后,您将再次重定向到api.)
  • 其余的api是无状态的,没有创建/需要jsessionid/cookies(禁​​用csrf并使用SessionCreationPolicy.STATELESS).除了 "登录/ facebook"调用,这个仍然创建一个jsessionid.

问题

webapp和其他api的"login/facebook?code = XXX"调用的组合不起作用.我发现当你进行GET"login/facebook"时,你将被重定向到facebook,并在网址上附加一个额外的状态参数.此外,当facebook重定向回api时,还会添加此状态参数.从我在网上找到的,这似乎是一种CSRF保护,对吧?我猜这个东西也创造了jsessionid cookie?

问题

  1. 以上工作流程是否合理?
  2. 我的用例中是否需要此CSRF保护?
  3. 我怎么能禁用这种行为?我的意思是,我使用了SessionCreationPolicy.STATELESS,但Spring仍然使用jsessionid创建了一个会话.那我怎样才能创建一个真正的无状态休息api呢?(至少关于饼干...)
  4. 这是正确的方法吗?或者我错过了什么?

示例代码

如前所述,我在GitHub上放了一个完整的最小例子.在这里,我将只发布WebSecurityConfigurerAdapter(希望)最重要的部分.该完整的文件在这里.

@EnableOAuth2Client
@Configuration
public class OAuth2ClientConfigurer extends WebSecurityConfigurerAdapter {

@Autowired
private OAuth2ClientContext oAuth2ClientContext;

@Override
protected void configure(HttpSecurity httpSecurity) throws Exception {
    httpSecurity
            .csrf().disable()
            .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).enableSessionUrlRewriting(false).and()
            .antMatcher("/**").authorizeRequests()
            .antMatchers("/login/**").permitAll()
            .anyRequest().authenticated().and()
            .exceptionHandling().authenticationEntryPoint(new Http403ForbiddenEntryPoint()).and()
            .addFilterBefore(statelessJwtAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class)
            .addFilterBefore(createSsoFilter(facebook(), facebookSuccessHandler(), "/login/facebook"), BasicAuthenticationFilter.class);
}

private OAuth2ClientAuthenticationProcessingFilter createSsoFilter(ClientResourceDetails clientDetails, AuthenticationSuccessHandler successHandler, String path) { …
Run Code Online (Sandbox Code Playgroud)

spring stateless jsessionid jwt spring-security-oauth2

12
推荐指数
1
解决办法
1096
查看次数

启用cookie后,为什么jsessionid出现在Wicket URL中?

我注意到,当用户第一次访问我的网站时,Wicket生成的URL包含一个jsessionid,而不是依赖于cookie来获取会话信息.

cookie确实成功设置,如果用户只是重新加载页面,jsessionid则不再附加到URL.你可以在这里测试一下:pixlshare.com.将鼠标悬停在任何图片链接上都会显示带有jsessionid; 重新加载页面,jsessionids将被删除.

根据以前的Wicket SEO页面的经验,我知道如何删除jsessionid它以将其隐藏起来,但是对于普通用户使用这种技术似乎是一种黑客攻击.它也将破坏网站,让那些偏执狂的人足以让cookie被禁用.

这是在最近从Glassfish转移到Tomcat之后发生的,尽管我不能肯定地说这是原因.另外,我在Tomcat面前使用Apache的mod_proxy.

cookies tomcat wicket jsessionid

10
推荐指数
1
解决办法
6639
查看次数

在URL中运行没有jsessionid的JBoss 7.0.1无效

由于某些安全原因,我决定jsessionid在URL中禁用会话跟踪.在我将web.xml更改为下面的文件之前,我第一次访问jsessionid网址中的页面时,在点击第一个链接后,它再也没有出现过.

我的web.xml样子

   <session-config>
      <session-timeout>10</session-timeout>
      <cookie-config>
         <secure>true</secure>
      </cookie-config>
      <tracking-mode>COOKIE</tracking-mode>
   </session-config>
Run Code Online (Sandbox Code Playgroud)

现在我有了jsessionidURL,如果我点击页面上的另一个链接,它永远不会消失.每次点击都会改变.

如果我尝试调用JSF操作,我得到一个javax.faces.application.ViewExpiredException但托管bean是@SessionScoped.

这是我的依赖树:

[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'dependency'.
[INFO] ------------------------------------------------------------------------
[INFO] Building Java EE 6 webapp project
[INFO]    task-segment: [dependency:tree]
[INFO] ------------------------------------------------------------------------
[INFO] [dependency:tree {execution: default-cli}]
[INFO] de.project:demoapp:war:1.0-SNAPSHOT
[INFO] +- javax.enterprise:cdi-api:jar:1.0-SP4:provided
[INFO] |  +- org.jboss.spec.javax.interceptor:jboss-interceptors-api_1.1_spec:jar:1.0.0.Final:provided (version managed from 1.0.0.Beta1)
[INFO] |  \- javax.inject:javax.inject:jar:1:provided
[INFO] +- org.jboss.spec.javax.annotation:jboss-annotations-api_1.1_spec:jar:1.0.0.Final:provided
[INFO] +- org.jboss.spec.javax.ws.rs:jboss-jaxrs-api_1.1_spec:jar:1.0.0.Final:provided
[INFO] +- org.hibernate.javax.persistence:hibernate-jpa-2.0-api:jar:1.0.1.Final:provided …
Run Code Online (Sandbox Code Playgroud)

web.xml jsessionid java-ee session-cookies jboss7.x

10
推荐指数
1
解决办法
3729
查看次数

weblogic jsessionid

我在本地运行Weblogic 10.3,并对它生成的sessionId有疑问.当我打印session.getId()时,我看到类似于此的东西:

BBp9TAACMTglQ2TDFAKR4tpyXg73LZDQJ2PtT9x8htG1tWY122aa!869187422!1308677666322

这些惊叹号及其后面是什么,特别是第二对:!1308677666322?看起来有时服务器会附加它,有时却不会.我相信如果我使用相同的浏览器第二次登录我的应用程序,weblogic会附加它.这个cookie是否以某种方式相关?

weblogic sessionid jsessionid

9
推荐指数
1
解决办法
2万
查看次数