- PR -

JSFでのSSL設定方法

1
投稿者投稿内容
しま太郎
常連さん
会議室デビュー日: 2006/08/22
投稿数: 39
投稿日時: 2007-02-27 17:45
ただいま、JSFでサイトを作成中です。
その際マイページなどはSSLで情報送信をおこないたいと思っておりますが、JSFでの設定方法がわかりません。
(通常遷移ですとfaces-config.xmlで設定しますが、そうしますと遷移先は相対パスとなってしまい、https://とはなりません。。)

手持ちの本やサイトで探してはいるのですが、探し方が悪いのか中々参考になるものが見つけられません。
(JSFの本で説明されているものもあるようなのですが、その本は絶版で入手困難でした…)
ご存知の方がいらっしゃいましたら、どうぞご教授お願いいたします。
あしゅ
ぬし
会議室デビュー日: 2005/08/05
投稿数: 613
投稿日時: 2007-02-27 18:38
<h:form>で作ったフォームの送信先をHTTPSにしたいのですか?

・コンポーネントを拡張して<h:form>のRendererをいじる
・ViewHandler#getActionURL()を乗っ取って何とかする
・あきらめて普通のリンクにする
・あきらめて全てのJSFページをSSLにする

もしかしたらどこぞの拡張コンポーネントで可能かもしれません。
いっきゅう
大ベテラン
会議室デビュー日: 2004/04/04
投稿数: 153
お住まい・勤務地: 兵庫
投稿日時: 2007-02-27 22:22
JSFの設定にこだわらなければTomcatの基本機能で実現可能かと思います。

/WEB-INF/web.xmlに以下の記述を追加する。
コード:
<security-constraint>
  <web-resource-collection>
    <web-resource-name>SSLPages</web-resource-name>
    <description />
    <!-- 制限を変えたいURLを列挙 //-->
    <url-pattern>/*.jsf</url-pattern>
    <url-pattern>/test/*.jsf</url-pattern>
    <!-- 制限を変えたいHTTPメソッド名を列挙 //-->
    <http-method>GET</http-method>
    <http-method>PUT</http-method>
    <http-method>POST</http-method>
  </web-resource-collection>
  <!--
  <!-- 認証をつける場合指定 //-->
  <auth-constraint>
    <description />
    <role-name>admin</role-name>
  </auth-constraint>
  //-->
  <user-data-constraint>
    <!-- CONFIDENTIAL:SSL(HTTPS)を用いて通信することを要求します //-->
    <transport-guarantee>CONFIDENTIAL</transport-guarantee>
  </user-data-constraint>
</security-constraint>


詳細の意味はどこぞの解説を見て下さい。
あしゅ
ぬし
会議室デビュー日: 2005/08/05
投稿数: 613
投稿日時: 2007-02-27 23:57
引用:

いっきゅうさんの書き込み (2007-02-27 22:22) より:
コード:
  <user-data-constraint>
    <!-- CONFIDENTIAL:SSL(HTTPS)を用いて通信することを要求します //-->
    <transport-guarantee>CONFIDENTIAL</transport-guarantee>
  </user-data-constraint>
</security-constraint>





へぇ〜、CONFIDENTIALだとSSLポートへのリダイレクトもしてくれるんですか。
初めて知りました。勉強になります。

JSFの場合はURLが不定になるのでJ2EE認証と組み合わせにくいですよね。
結局、制約のかかったページへ普通のリンクかける形になっちゃいますし。
しま太郎
常連さん
会議室デビュー日: 2006/08/22
投稿数: 39
投稿日時: 2007-02-28 10:29
皆さん色々とアドバイスいただき、ありがとうございました。
指定のページだけをSSL化したいので、いっきゅうさんのアドバイスに従ってがんばってみたいと思います。
ですが、あしゅさんのアドバイスも今後のお仕事のために調べていきたいと思います。
ご丁寧にお教えいただき、ありがとうございました。
KOX
大ベテラン
会議室デビュー日: 2004/08/23
投稿数: 142
投稿日時: 2007-02-28 11:33
引用:

あしゅさんの書き込み (2007-02-27 23:57) より:
引用:

いっきゅうさんの書き込み (2007-02-27 22:22) より:
コード:
  <user-data-constraint>
    <!-- CONFIDENTIAL:SSL(HTTPS)を用いて通信することを要求します //-->
    <transport-guarantee>CONFIDENTIAL</transport-guarantee>
  </user-data-constraint>
</security-constraint>





へぇ〜、CONFIDENTIALだとSSLポートへのリダイレクトもしてくれるんですか。
初めて知りました。勉強になります。

JSFの場合はURLが不定になるのでJ2EE認証と組み合わせにくいですよね。
結局、制約のかかったページへ普通のリンクかける形になっちゃいますし。



リダイレクトしてくれます?
この設定は、SSLしか許可しないのではないですか?
少なくともWeblogic6.1で、この設定をするとhttp://で表示できないですよ。
#それとも他の設定と組合わせて制御できるのかなぁ。
あしゅ
ぬし
会議室デビュー日: 2005/08/05
投稿数: 613
投稿日時: 2007-02-28 14:50
引用:

KOXさんの書き込み (2007-02-28 11:33) より:
リダイレクトしてくれます?
この設定は、SSLしか許可しないのではないですか?
少なくともWeblogic6.1で、この設定をするとhttp://で表示できないですよ。
#それとも他の設定と組合わせて制御できるのかなぁ。



Tomcat-5.5.20のソースを見る限りではしてくれるみたいです。
RealmBaseのhasUserDataPermission()に書いてありました。

RequestのisSecure()がfalseかつ、
<transport-guarantee>がNONE以外の場合は、
<Connector>のredirectPortに飛ばしていました。

Servlet APIのどこかのバージョンでの仕様追加なんですかね?
1

スキルアップ/キャリアアップ(JOB@IT)