15.8. SSL によるセキュリティ
Seam は HTTPS プロトコルによる機密ページの提供に基本的な対応を行います。これを設定する場合は、
pages.xml でページの scheme を指定します。以下の例では HTTPS を使った /login.xhtml ビューの設定方法について示しています。
<page view-id="/login.xhtml" scheme="https"/>
<page view-id="/login.xhtml" scheme="https"/>
この設定は自動的に
s:link や s:button の JSF コントロールを拡張しリンクを正しいプロトコルで表示します (view を指定した場合)。 前述の例を基にして、 /login.xhtml は HTTPS を使用するよう設定されているため以下のリンクは HTTPS を使用します。
<s:link view="/login.xhtml" value="Login"/>
<s:link view="/login.xhtml" value="Login"/>
ユーザーが間違ったプロトコルで直接ページを閲覧するとリダイレクトが引き起こされ、同じビューが正しいプロトコルで再度読み込まれます。 たとえば、
scheme="https" ページを HTTP で閲覧しようとすると HTTPS を使用する同じページへのリダイレクトが引き起こされます。
また、 すべてのページに デフォルトのスキーマ を設定することも可能です。これは数ページにのみ HTTPS を使用したい場合などに役立ちます。デフォルトのスキーマが指定されていない場合は、 現在のスキーマが使用されます。 従って、 ユーザーが HTTPS を必要とするページにアクセスすると、HTTPS を必要としないページにユーザーが移行した後も HTTPS が継続して使用されます。これはセキュリティ上は好ましいですが、パフォーマンスは低減します。HTTP をデフォルトの
scheme として定義するには、次の行を pages.xml に追加してください。
<page view-id="*" scheme="http" />
<page view-id="*" scheme="http" />
アプリケーションのいずれのページも HTTPS を 使用しない 場合はデフォルトのスキーマを定義する必要はありません。
スキーマの変更のたび Seam が自動的に現在の HTTP セッションを無効にするよう設定することができます。そのためには
components.xml に次の行を追加します。
<web:session invalidate-on-scheme-change="true"/>
<web:session invalidate-on-scheme-change="true"/>
このオプションにより、HTTPS を使うページから HTTP を使うページへの機密データの漏出やセッション ID のスニッフィングからさらに強力に保護します。
15.8.1. デフォルトのポートの上書き リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
HTTP と HTTPS ポートを手作業で設定したい場合は、
pages エレメントの http-port 属性と https-port属性を指定することで pages.xml 内で設定することができます。