2008-09-25 4 views
0

HTTP https를 사용하여 페이지를 요청한 사용자에게 강제로 https 버전을 사용할 수 있는지 궁금합니다.Websphere 6.1의 강제 Https

내 개발 환경으로 내 응용 프로그램 서버와 웹 스피어 6.1 라드 7을 사용하고

감사 데미안

답변

3

서버 구성이 아닌 응용 프로그램 내에서이 작업을 수행 할 수있는 방법 중 하나는 ServletRequest.getScheme()이 "http"또는 "https"인지 확인하고 (web.xml에 지정)을 사용하고, 적절한 URL로 사용자를 안내하십시오 (HttpServletResponse.sendRedirect(String url) 사용).

0

스피어는 완전한 HTTP 서버가 아닙니다. 그것은 HTTP Server처럼 작동하는 'Transport Chains'을 가지고 있습니다.

일반적으로 HTTP 서버를 앞에 둡니다. IBM은 가볍게 수정 된 Apache HTTP Server 인 IHS (IBM HTTP Server)를 제공합니다. HTTP Server는 httpd.conf 파일로 구성됩니다. HTTP 요청이 https로 리디렉션되는 방식으로 리디렉션을 추가합니다.

인프라에 대한 자세한 정보를 제공 할 수 있습니다.

0

동의합니다. 나는 이것을 사용하여 필터를 사용한다고 생각한다. 로드 밸런싱 및 포트 리디렉션을 위해 작성한 필터는 다음과 같지만 사용자의 필요에 맞게 편집하는 방법을 쉽게 이해할 수 있어야합니다.

공용 클래스 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; 
    } 
} 

}

1

당신은 당신의 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> 

<!--********************************* -->