Frage

Ich habe mich gefragt, wie ich erzwingen, dass Benutzer kann die Http angefordert hat, eine Seite mit der sicheren https-Version verwenden?

Ich bin mit Websphere 6.1 als meine Anwendungsserver und Rad 7 als meine Entwicklungsumgebung

Danke Damien

War es hilfreich?

Lösung

Eine Möglichkeit, dass Sie dies in Ihrer Anwendung tun könnten, anstatt in der Server-Konfiguration wäre ein Filter (in web.xml angegeben) zu überprüfen, ob ServletRequest.getScheme() ist "http" oder "https" und Umleiten der Benutzer auf die entsprechende URL (mit HttpServletResponse.sendRedirect(String url)).

Andere Tipps

Sie können den folgenden Eintrag in der web.xml hinzufügen und es wird alle Anfragen stellen Sie sicher, umgewandelt werden 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>

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

Websphere ist keine vollständige HTTP-Server. Es hat ‚Transportketten‘, die wie ein HTTP-Server handeln.

Normalerweise werden Sie einen HTTP-Server vor setzen. IBM stellt IHS (IBM HTTP Server), die eine leicht modifizierte Apache HTTP-Server ist. Der HTTP-Server ist mit der Datei httpd.conf konfiguriert. Es Sie Umleitungen so hinzuzufügen, die für HTTP-Anforderung werden umgeleitet https.

Vielleicht können Sie einige detaillierte Informationen über Ihre Infrastruktur geben.

Ich bin damit einverstanden. Ich denke, ein Filter verwendet, wird dies zu erreichen. Hier ist ein Filter I für den Lastausgleich und Anschlussumleitung geschrieben, aber es sollte einfach sein, herauszufinden, wie es zu bearbeiten Ihre Bedürfnisse anzupassen.

public class RequestWrapperFilter implementiert 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;
    }
}

}

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top