Force Https в Websphere 6.1 - PullRequest
       50

Force Https в Websphere 6.1

0 голосов
/ 25 сентября 2008

Мне было интересно, как заставить пользователя, который запросил страницу с помощью Http, использовать защищенную версию https?

Я использую Websphere 6.1 в качестве сервера приложений и Rad 7 в качестве среды разработки

Спасибо Дэмиен

Ответы [ 4 ]

3 голосов
/ 25 сентября 2008

Один из способов сделать это в приложении, а не в конфигурации сервера, - использовать Фильтр (указанный в вашем web.xml), чтобы проверить, является ли ServletRequest.getScheme() "http" или «https» и перенаправьте пользователя на соответствующий URL (используйте HttpServletResponse.sendRedirect(String url)).

1 голос
/ 03 июля 2013

Вы можете добавить следующую запись в ваш файл web.xml, и он будет обеспечивать преобразование всех запросов в https

.
<!--********************************
   *** SSL Security Constraint  ***
   *****************************-->
   <security-constraint>
       <web-resource-collection>
           <web-resource-name>SSL</web-resource-name>
           <url-pattern>/*</url-pattern>
       </web-resource-collection>
       <user-data-constraint>
           <transport-guarantee>CONFIDENTIAL</transport-guarantee>
       </user-data-constraint>
   </security-constraint>

<!--********************************* -->
0 голосов
/ 26 сентября 2008

Я согласен. Я думаю, что использование фильтра позволит достичь этого. Вот фильтр, который я написал для балансировки нагрузки и перенаправления портов, но должно быть легко понять, как его отредактировать в соответствии с вашими потребностями.

открытый класс RequestWrapperFilter реализует фильтр {

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;
    }
}

}

0 голосов
/ 25 сентября 2008

Websphere не является полноценным http-сервером. У него есть «Транспортные цепочки», которые действуют как HTTP-сервер.

Обычно вы ставите HTTP-сервер впереди. IBM предоставляет IHS (IBM HTTP Server), который является слегка модифицированным сервером Apache HTTP. HTTP-сервер настраивается с помощью файла httpd.conf. Там вы добавляете перенаправления таким образом, чтобы запрос на http перенаправлялся на https.

Может быть, вы можете дать некоторую подробную информацию о вашей инфраструктуре.

...