| /* |
| * Copyright (c) 1997, 2018 Oracle and/or its affiliates. All rights reserved. |
| * |
| * This program and the accompanying materials are made available under the |
| * terms of the Eclipse Public License v. 2.0, which is available at |
| * http://www.eclipse.org/legal/epl-2.0. |
| * |
| * This Source Code may also be made available under the following Secondary |
| * Licenses when the conditions for such availability set forth in the |
| * Eclipse Public License v. 2.0 are satisfied: GNU General Public License, |
| * version 2 with the GNU Classpath Exception, which is available at |
| * https://www.gnu.org/software/classpath/license.html. |
| * |
| * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 |
| */ |
| |
| package com.sun.appserv; |
| |
| import java.security.cert.X509Certificate; |
| import java.security.cert.CertificateException; |
| import jakarta.servlet.http.HttpServletRequest; |
| |
| /** |
| * Abstract class allowing a backend appserver instance to retrieve information |
| * about the original client request that was intercepted by an SSL |
| * terminating proxy server (e.g., load balancer). |
| * <p> |
| * An implementation of this abstract class inspects a given request for |
| * the custom request headers through which the proxy server communicates the |
| * information about the original client request to the appserver instance, |
| * and makes this information available to the appserver. |
| * <p> |
| * This allows the appserver to work with any number of 3rd party SSL |
| * offloader implementations configured on the front-end web server, for |
| * which a corresponding ProxyHandler implementation has been configured |
| * on the backend appserver. |
| */ |
| public abstract class ProxyHandler { |
| |
| /** |
| * Gets the SSL client certificate chain with which the client |
| * had authenticated itself to the SSL offloader, and which the |
| * SSL offloader has added as a custom request header on the |
| * given request. |
| * |
| * @param request The request from which to retrieve the SSL client |
| * certificate chain |
| * |
| * @return Array of java.security.cert.X509Certificate instances |
| * representing the SSL client certificate chain, or null if this |
| * information is not available from the given request |
| * |
| * @throws CertificateException if the certificate chain retrieved |
| * from the request header cannot be parsed |
| */ |
| public X509Certificate[] getSSLClientCertificateChain( |
| HttpServletRequest request) |
| throws CertificateException { |
| return null; |
| } |
| |
| /** |
| * Returns the SSL keysize with which the original client request that |
| * was intercepted by the SSL offloader has been protected, and which |
| * the SSL offloader has added as a custom request header on the |
| * given request. |
| * |
| * @param request The request from which to retrieve the SSL key |
| * size |
| * |
| * @return SSL keysize, or -1 if this information is not available from |
| * the given request |
| */ |
| public int getSSLKeysize(HttpServletRequest request) { |
| return -1; |
| } |
| |
| /** |
| * Gets the Internet Protocol (IP) address of the original client request |
| * that was intercepted by the proxy server. |
| * |
| * @param request The request from which to retrieve the IP address of the |
| * original client request |
| * |
| * @return IP address of the original client request, or null if this |
| * information is not available from the given request |
| */ |
| public String getRemoteAddress(HttpServletRequest request) { |
| return null; |
| } |
| |
| } |