質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
GlassFish

GlassFishは、Java EE準拠のアプリケーションサーバの名称です。

IIS 7

IIS(インターネットインフォメーションサービス) 7は、 Microsoftによって開発された、Windowsの標準ウェブサーバーです。Window Server 2008 と Windows Vista向けにリリースされました。

IIS

IIS(Internet Information Services)はマイクロソフト社によって開発されたwebサーバーです。Windows上で動作します。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Q&A

1回答

4733閲覧

GlassFishでHttpServletRequest#isSecure()をtrueにする方法

jcs502ulf

総合スコア307

GlassFish

GlassFishは、Java EE準拠のアプリケーションサーバの名称です。

IIS 7

IIS(インターネットインフォメーションサービス) 7は、 Microsoftによって開発された、Windowsの標準ウェブサーバーです。Window Server 2008 と Windows Vista向けにリリースされました。

IIS

IIS(Internet Information Services)はマイクロソフト社によって開発されたwebサーバーです。Windows上で動作します。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

0グッド

0クリップ

投稿2015/02/19 10:21

編集2015/02/21 03:43

環境
IIS 7.5 -> ARR(SSLオフロード有効) -> GlassFish 3.1.2.2

GlassFish側で、リクエストがHTTPS通信かチェックしたいのですが、上記の通りリバースプロキシ環境のため、HttpServletRequest#isSecure()は常にfalseが返却されてしまいます。

そこで、ネット上で散見される「Cookiesecure属性を付与する」方法を試したのですが、どうもうまくいかず、#isSecure()falseしか返却されません。

何か他の方法をご存知でしたらご指南ください。

これまで試した設定

lang

1<!-- web.xml --> 2<session-config> 3 <cookie-config> 4 <secure>true</secure> 5 </cookie-config> 6</session-config>

lang

1<!-- glassfish-web.xml --> 2<session-config> 3 <cookie-properties> 4 <property name="cookieSecure" value="true"/> 5 </cookie-properties> 6</session-config>

2/21 検証したXMLを修正

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

環境を拝見しましたがSSLのエンドポイントがARRになるため、バックエンドのglassfishの通信は平文となるのでメソッドでは判定できないのではないでしょうか。
メソッドで判定できるのはglassfish上でSSLを構成した場合(参考HP)になるかと思います。
SSLオフロードを構成した経験は無いのですが、ご参考までに。

推測で失礼しますが、目的がCookeiにsecure属性を付けたい(cookeiのやり取りも暗号化したい)のが目的であれば、2つめのXMLのValueにtrueを設定すれば良いようです。

lang

1<session-config> 2 <cookie-properties> 3 <property name="cookieSecure" value="true"/> 4 </cookie-properties> 5</session-config>

SSLアクセラレータを入れる場合、これをやらないとCookeiは平文になってしまうのですね。勉強になりました。
参考サイト
Oracle GlassFish Server 3.1 Application Deployment Guide cookie-properties

投稿2015/02/20 00:11

編集2015/02/20 16:24
BlueMoon

総合スコア1339

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jcs502ulf

2015/02/20 09:09

ご回答ありがとうございます。 Apache->Tomcatの場合は、ApacheがHTTPヘッダーにセキュアチャネルである旨を付与できて、Tomcat側でisSecure()が使えた記憶があり、同じような仕組みがあるのでは、と思った次第です。 GlassFishがisSecure()をtrueとするようなヘッダーをIIS側で付与できればうまくいきそうなのですが。
BlueMoon

2015/02/20 14:13

手がかりになるかとApache->Tomcatの例について調べてみたのですが、ApacheがSSLエンドポイントになるのでTomcat側でsecureで有ることを設定してCookeiの暗号化を有効にする例しか見つけられませんでした。 (私の勉強不足であれば済みません。) もし目的がCookeiの暗号化に有るのであれば、方法を見つけましたので回答に追記いたします。
jcs502ulf

2015/02/21 03:41

調査していただきありがとうございます。 目的ですが、クライアントからのリクエストがhttpsかをGlassFish側で判定したいのです。ログイン後はhttps通信が前提であり、もしhttpsでなければエラーを返却しようと考えております。 記載した例がCookieの設定のもので、混乱させてしまいすみませんでした。 また、2つめのXMLのvalueはtrueでも検証しておりますが、うまくいきませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問