GlassFish 3.1.2.2でCookieにsecure属性とhttpOnly属性をつける

何もしなくてもhttpOnly属性は付いてる感じですが、それはGrizzlyの機能なのでしょうかね。 それはそれでまた調べておくことにします。

プログラムで設定する

javax.servlet.SessionCookieConfig を使用します。

package example;

import java.util.Set;
import javax.servlet.ServletContainerInitializer;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.SessionCookieConfig;

public class CookieSettings implements ServletContainerInitializer {

    @Override
    public void onStartup(Set<Class<?>> c, ServletContext ctx) throws ServletException {
        SessionCookieConfig scc = ctx.getSessionCookieConfig();
        scc.setHttpOnly(true);
        scc.setSecure(true);
    }
}

GlassFish Server Deployment Descriptorで設定する

cookie-properties - Oracle GlassFish Server 3.1 Application Deployment Guide を参照。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE glassfish-web-app PUBLIC
  "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN"
  "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
<glassfish-web-app error-url="">
 <session-config>
  <cookie-properties>
   <property name="cookieSecure" value="true"/>
   <property name="cookieHttpOnly" value="true"/>
  </cookie-properties>
 </session-config>
</glassfish-web-app>