在spring或spring安全性中配置cookie头的Domain属性

时间:2014-11-25 23:01:45

标签: spring spring-security spring-java-config

如何使用spring security java config配置cookie的Domain属性。 我需要将cookie的访问限制为只有一个特定的子视图,如

Domain=.test.example.com;

现在我知道有一个xml配置看起来像下面的示例,但是我不再在我的应用程序中使用任何web.xml了,我希望通过java完成所有配置。

<session-config>
    <session-timeout>400</session-timeout>
    <cookie-config>
        <name>KSESSION</name>
        <path>/</path>
        <http-only>true</http-only>
        <secure>true</secure>
    </cookie-config>
</session-config>

在扩展WebSecurityConfigurerAdapter的SecurityConfig类中,我正在搜索一些session-config对象或参数,但我找不到一个,即我只有sessionManagement对象。

    .sessionManagement()
        .enableSessionUrlRewriting(false)

        .sessionAuthenticationStrategy(sessionControlStrategy())
        .sessionCreationPolicy(SessionCreationPolicy.ALWAYS)
        .sessionFixation().newSession()

        .maximumSessions(1)
        .maxSessionsPreventsLogin(true)
        .expiredUrl("/login?expired")

也许这是通过TomcatContextCustomizer bean完成的,即我在那里找到参数setUseHttpOnly和路径参数,但域属性上没有setter。

@Bean 
public TomcatContextCustomizer tomcatContextCustomizer() {
    System.out.println("TOMCATCONTEXTCUSTOMIZER INITILIZED");
    return new TomcatContextCustomizer() {

    @Override
    public void customize(Context context) {
        // TODO Auto-generated method stub
        context.addServletContainerInitializer(new WsSci(), null);
        context.setUseHttpOnly(true);
        context.setPath("/testBlaBlaPage");



    }
};

}

所以基本上我的目标是拥有像这样的http标头

Set-Cookie: JSESSIONCookie: JSESSIONID=DEAC4422AB4E28A7062C08724C8BCFAA; Path=/login; Secure; Domain=.test.example.com; HttpOnly.

目前看起来像是

Set-Cookie: JSESSIONCookie: JSESSIONID=DEAC4422AB4E28A7062C08724C8BCFAA; Path=/; Secure; HttpOnly

1 个答案:

答案 0 :(得分:2)

好吧我找到了问题的答案,即它是tomcat上下文下的方法setSessionCookieDomain()。即

之类的东西

context.setSessionCookieDomain(&#34; .test.example.com&#34);