JettyでセッションCookieにsecure属性を設定する。

HTTPSを用いたサイトを構築する場合、Cookieにsecure属性をつける必要が出てくる場合があります。

Jettyで設定のメモです。

JettyのCookieにSecure属性を付与する

探しました。

スクリーンショット 2014-07-18 22.11.39

How to get jetty to send jsessionid-cookies with the secure-flag when using a secure channel

Jettyの設定ファイルのjetty-web.xmlを書き換えれば良いようです。

<?xml version="1.0"  encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
 
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
    <Get name="sessionHandler">
        <Get name="sessionManager">
            <Set name="secureCookies" type="boolean">true</Set>
        </Get>
    </Get>
</Configure>

これを試してみたんですが、動きませんでした。

java.lang.NoSuchMethodException: class org.eclipse.jetty.server.session.HashSessionManager.setSecureCookies(boolean)

Jetty9でインターフェイスが変わっていた

先ほどの設定はJetty 7のもので、最新のJetty9ではインターフェイスが変更されていました。

Jetty 7のドキュメント。

AbstractSessionManager (Jetty :: Project 7.6.15.v20140411 API)

Jetty 9のドキュメント。

AbstractSessionManager (Jetty :: Project 9.2.1.v20140609 API)

というわけで、Jetty 9ではこうです。

<?xml version="1.0"  encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd">
 
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
	<Get name="sessionHandler">
		<Get name="sessionManager">
			<Set name="httpOnly" type="boolean">true</Set>
			<Set name="sessionCookie" type="string">SESSIONID</Set>
			<Set name="secureRequestOnly" type="boolean">true</Set>
		</Get>
	</Get>
</Configure>

これで動かすことができました。

About katty0324

Comments are closed.

Scroll To Top