HTTP https를 사용하여 페이지를 요청한 사용자에게 강제로 https 버전을 사용할 수 있는지 궁금합니다.Websphere 6.1의 강제 Https
내 개발 환경으로 내 응용 프로그램 서버와 웹 스피어 6.1 라드 7을 사용하고
감사 데미안
HTTP https를 사용하여 페이지를 요청한 사용자에게 강제로 https 버전을 사용할 수 있는지 궁금합니다.Websphere 6.1의 강제 Https
내 개발 환경으로 내 응용 프로그램 서버와 웹 스피어 6.1 라드 7을 사용하고
감사 데미안
서버 구성이 아닌 응용 프로그램 내에서이 작업을 수행 할 수있는 방법 중 하나는 ServletRequest.getScheme()
이 "http"또는 "https"인지 확인하고 (web.xml에 지정)을 사용하고, 적절한 URL로 사용자를 안내하십시오 (HttpServletResponse.sendRedirect(String url)
사용).
스피어는 완전한 HTTP 서버가 아닙니다. 그것은 HTTP Server처럼 작동하는 'Transport Chains'을 가지고 있습니다.
일반적으로 HTTP 서버를 앞에 둡니다. IBM은 가볍게 수정 된 Apache HTTP Server 인 IHS (IBM HTTP Server)를 제공합니다. HTTP Server는 httpd.conf 파일로 구성됩니다. HTTP 요청이 https로 리디렉션되는 방식으로 리디렉션을 추가합니다.
인프라에 대한 자세한 정보를 제공 할 수 있습니다.
동의합니다. 나는 이것을 사용하여 필터를 사용한다고 생각한다. 로드 밸런싱 및 포트 리디렉션을 위해 작성한 필터는 다음과 같지만 사용자의 필요에 맞게 편집하는 방법을 쉽게 이해할 수 있어야합니다.
공용 클래스 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;
}
}
}
당신은 당신의 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>
<!--********************************* -->