0

Http を使用してページを要求したユーザーに、安全な https バージョンを使用させるにはどうすればよいでしょうか?

アプリケーション サーバーとして Websphere 6.1 を使用し、開発環境として Rad 7 を使用しています。

ありがとうダミアン

4

4 に答える 4

3

サーバー構成ではなくアプリケーション内でこれを行う1つの方法は、フィルター(web.xmlで指定)を使用しServletRequest.getScheme()て「http」か「https」かを確認し、ユーザーをにリダイレクトすることです。適切なURL(を使用HttpServletResponse.sendRedirect(String url))。

于 2008-09-25T12:48:43.660 に答える
0

Websphere は完全な http サーバーではありません。HTTP サーバーのように機能する「トランスポート チェーン」があります。

通常、HTTP サーバーを前面に配置します。IBM は、Apache HTTP Server を少し変更した IHS (IBM HTTP Server) を提供しています。HTTP サーバーは、httpd.conf ファイルで構成されます。そこで、http の要求が https にリダイレクトされるようにリダイレクトを追加します。

インフラストラクチャに関する詳細情報を提供できる場合があります。

于 2008-09-25T12:29:40.587 に答える
0

同意します。フィルターを使用するとこれが達成されると思います。これは、負荷分散とポート リダイレクト用に作成したフィルターですが、ニーズに合わせて編集する方法は簡単に理解できるはずです。

public class RequestWrapperFilter は Filter {

public void doFilter(ServletRequest servletRequest,
        ServletResponse servletResponse, FilterChain filterChain)
        throws IOException, ServletException {

    HttpServletRequest httpRequest = (HttpServletRequest) servletRequest;
    HttpServletResponse httpResponse = (HttpServletResponse) servletResponse;

    String requestWrapperClassName = (String) (httpRequest
            .getAttribute(LoadBalancerRequestWrapper.class.getName()));

    String initiatingServerName = httpRequest.getServerName();

    if (requestWrapperClassName == null
            && initiatingServerName.equals(loadBalancerHostName)) {

        httpRequest = new LoadBalancerRequestWrapper(AuthenticationUtil
                .getHttpServletRequest(httpRequest));
    }

    filterChain.doFilter(httpRequest, httpResponse);
}

}

/**
 * The custom implementation of the request wrapper. It simply overrides the
 * getScheme() and getServerPort() methods to perform the redirect
 * filtering.
 * 
 * 
 */
private static class LoadBalancerRequestWrapper extends
        HttpServletRequestWrapper {

    /**
     * Default Constructor. Simply declares the Wrapper as injected.
     * 
     * @param httpServletRequest
     *            the app-server HttpServletRequest.
     * 
     */
    public LoadBalancerRequestWrapper(HttpServletRequest httpServletRequest) {
        super(httpServletRequest);
    }

    /**
     * The overridden scheme.
     * 
     */
    public final String getScheme() {
        if (loadBalancerHttpScheme.equals(EMPTY_STRING)) {
            return super.getScheme();
        }

        return loadBalancerHttpScheme;
    }
}

}

于 2008-09-26T19:25:01.757 に答える