Información de referencia de la API del proxy de almacenamiento en caché
Utilice la información acerca de las API de Caching Proxy como ayuda para escribir los programas.
- Variables
- Definiciones de variables
- Autenticación y autorización
- Proceso de autenticación y autorización
- Almacenamiento de variantes en caché
- Ejemplos de API
Variables
Al escribir programas API, puede utilizar variables de proxy de almacenamiento en caché que proporcionan información sobre el cliente remoto y el sistema servidor.
- Los nombres de variables definidos por el usuario no pueden tener el prefijo SERVER_. La función API del proxy de almacenamiento en caché reserva cualquier variable que comience por SERVER_ para el servidor y, por lo tanto, estas variables son de solo lectura. Además, los prefijos HTTP_ y PROXY_ también se reservan para cabeceras HTTP.
- Todos las cabeceras de solicitud enviadas por el cliente (como Set-Cookie) tienen el prefijo HTTP_ y sus valores se pueden extraer. Para acceder a las variables que son encabezados de solicitud, anteponga HTTP_ al nombre de la variable. También puede crear nuevas variables utilizando la función predefinida httpd_setvar(). Para obtener más información sobre estos encabezados, consulte Códigos de retorno de funciones y macros predefinidas.
- Se utilizan dos prefijos de variables, HTTP_ y PROXY_, para indicar si una variable es aplicable a cabeceras para la solicitud o para la respuesta. El prefijo HTTP_ hace referencia a las variables que fluyen entre el cliente y el proxy de almacenamiento en caché. El prefijo PROXY_ hace referencia a las variables que fluyen entre el proxy de almacenamiento en caché y el servidor de origen (o el siguiente servidor de una cadena de proxies). Estas variables sólo son válidas durante los pasos de proceso de solicitudes.
- La extracción de una variable HTTP_* genera el valor de una cabecera que estaba en la solicitud del cliente al servidor proxy.
- Al establecer una variable HTTP_* se establece la cabecera de respuesta que se envía del servidor proxy al cliente.
- La extracción de una variable PROXY_* genera el valor de una cabecera que ha devuelto el servidor de contenido al servidor proxy.
- Al establecer una variable PROXY_* se establece la cabecera de solicitud que se envía del servidor proxy al servidor de contenido (o al servidor siguiente de una cadena de proxy).
Figura 1. Prefijos de variables HTTP_ y PROXY_. Leyenda: Máquina 1—Client 2—Proxy de almacenamiento en caché Servidor 3—Origin 
- Algunas variables son de sólo lectura. Las variables de sólo lectura representan los valores que se pueden extraer de una solicitud o una respuesta y utilizar en la función httpd_getvar() predefinida. Se genera un código de retorno HTTPD_READ_ONLY si intenta cambiar variables de sólo lectura utilizando la función httpd_setvar().
- Las variables no definidas como de sólo lectura se pueden leer y establecer en las funciones predefinidas httpd_getvar() o httpd_setvar(). Estas variables representan valores que se pueden extraer de una solicitud o una respuesta o valores que se pueden establecer al procesar una solicitud o una respuesta.
Definiciones de variables
- ACEPTAR_RANGO
- Contiene el valor de la cabecera de respuesta Accept-Ranges, que especifica si el servidor de contenido puede responder a solicitudes de rangos. Utilice PROXY_ACCEPT_RANGES
para extraer el valor de cabecera que envía el servidor de contenido al proxy. Utilice HTTP_ACCEPT_RANGES para establecer el valor de cabecera que se envía del proxy al cliente.Nota: ACCEPT_RANGES es ambiguo. Para eliminar la ambigüedad, utilice, en su lugar, HTTP_ACCEPT_RANGES y PROXY_ACCEPT_RANGES.
- TODAS_LAS_VARIABLES
- Es de sólo lectura. Contiene todas las variables de CGI. Por ejemplo:
ACCEPT_RANGES BYTES CLIENT_ADDR 9.67.84.3 - CADENA_AUTENTICACIÓN
- Es de sólo lectura. Si el servidor da soporte a la autenticación de clientes, esta serie contiene las credenciales no decodificadas que se deben utilizar para autenticar el cliente.
- auth_type
- Es de sólo lectura. Si el servidor da soporte a la autenticación de clientes y el script está protegido, esta serie contiene el método utilizado para autenticar el cliente. Por ejemplo,
Basic. - CACHE_HIT
- Es de sólo lectura. Identifica si la solicitud del proxy se ha encontrado o no en la memoria caché. Los valores que se devuelven son los siguientes:
- 0: la solicitud no se ha encontrado en la memoria caché.
- 1: la solicitud no se ha encontrado en la memoria caché.
- FALLO DE CACHE
- Es de sólo escritura. Se utiliza para forzar un fallo de memoria caché. Los valores válidos son los siguientes:
- 0: no fuerza un fallo de memoria caché.
- 1: fuerza un fallo de memoria caché.
- TAREA_CACHÉ
- Es de sólo lectura. Identifica si se ha utilizado la memoria caché. Los valores que se devuelven son los siguientes:
- 0: la solicitud no ha accedido a la memoria caché ni la ha actualizado.
- 1: la solicitud se ha servido desde la memoria caché.
- 2: el objeto solicitado estaba en la memoria caché pero se tenía que volver a validar.
- 3: el objeto solicitado no estaba en la memoria caché y probablemente se ha añadido.
Esta variable se puede utilizar en los pasos PostAuthorization, PostExit, ProxyAdvisor o Log.
- CACHE_UPDATE
- Es de sólo lectura. Identifica si la solicitud del proxy ha actualizado la memoria caché. Los valores que se devuelven son los siguientes:
- 0: la memoria caché no se ha actualizado.
- 1: la memoria caché se ha actualizado.
- CLIENT_ADDR or CLIENTADDR
- Es igual que REMOTE_ADDR.
- MÉTODO DEL CLIENTE
- Es igual que REQUEST_METHOD.
- CLIENT_NAME o CLIENTNAME
- Es igual que REMOTE_HOST.
- CLIENT_PROTOCOL o CLIENTPROTOCOL
- Contiene el nombre y la versión del protocolo que el cliente va a utilizar para realizar la solicitud. Por ejemplo,
HTTP/1.1. - ENCABEZADOS_DE_RESPUESTA_DEL_CLIENTE
- Es de sólo lectura. Devuelve un almacenamiento intermedio que contiene las cabeceras que el servidor envía al cliente.
- Conexiones
- Es de sólo lectura. Contiene el número de conexiones que se van a servir o el número de solicitudes activas. Por ejemplo,
15. - CONTENIDO_CONJUNTO_DE_SIGNOS
- El juego de caracteres de la respuesta de text/*, por ejemplo,
US ASCII. La extracción de esta variable es aplicable a la cabecera content-charset desde el cliente. Su establecimiento afecta a la cabecera content-charset en la solicitud al servidor de contenido. - CODIFICACIÓN DEL CONTENIDO
- Especifica la codificación que se utiliza en el documento, por ejemplo,
x-gzip. La extracción de esta variable es aplicable a la cabecera content-encoding desde el cliente. Su establecimiento afecta a la cabecera content-encoding en la solicitud al servidor de contenido. - LONGITUD DEL CONTENIDO
- La extracción de esta variable es aplicable a la cabecera content-charset desde la solicitud del cliente. Su establecimiento afecta al valor de la cabecera en la solicitud al servidor de contenido.Nota: CONTENT_LENGTH es ambiguo. Para eliminar la ambigüedad, utilice, en su lugar, HTTP_CONTENT_LENGTH y PROXY_CONTENT_LENGTH.
- Content_type
- La extracción de esta variable es aplicable a la cabecera content-charset desde la solicitud del cliente. Su establecimiento afecta al valor de la cabecera en la solicitud al servidor de contenido.Nota: CONTENT_TYPE es ambiguo. Para eliminar la ambigüedad, utilice, en su lugar, HTTP_CONTENT_TYPE y PROXY_CONTENT_TYPE.
- PARÁMETROS_TIPO_CONTENIDO
- Contiene otros atributos MIME, pero no el juego de caracteres. La extracción de esta variable es aplicable a la cabecera content-charset desde la solicitud del cliente. Su establecimiento afecta al valor de la cabecera en la solicitud al servidor de contenido.
- URL_DEL_DOCUMENTO
- Contiene el URL (Uniform Request Locator). Por ejemplo:
http://www.anynet.com/~userk/main.htm - DOCUMENT_URI
- Es igual que DOCUMENT_URL.
- DOCUMENT_ROOT
- Es de sólo lectura. Contiene la vía de acceso raíz al documento, como definen las reglas de paso.
- ErrorInfo
- Especifica el código de error para determinar la página de error. Por ejemplo,
blocked. - EXPIRES
- Define cuándo caducan los documentos almacenados en la memoria caché de un proxy. La extracción de esta variable es aplicable a la cabecera content-charset desde la solicitud del cliente. Su establecimiento afecta al valor de la cabecera en la solicitud al servidor de contenido. Por ejemplo:
Mon, 01 Mar 2002 19:41:17 GMT - INTERFAZ DE PUERTA DE ENLACE
- Es de sólo lectura. Contiene la versión de la API que está utilizando el servidor. Por ejemplo,
ICSAPI/2.0. - GC_BIAS
- Es de sólo escritura. Este valor de coma flotante influye en la recogida de basura del archivo que se va a considerar para la recogida de basura. El valor introducido se multiplica por la configuración de calidad del proxy de almacenamiento en caché para ese tipo de archivo con el fin de determinar la clasificación. Los valores de calidad se encuentran en un intervalo de 0.0 a 0.1 y los definen las directivas AddType en el archivo de configuración de proxy (ibmproxy.conf).
- GC_EVALUACIÓN
- Es de sólo escritura. Este valor de coma flotante determina si eliminar (0.0) o conservar (1.0) el archivo que se va a considerar para la recogida de basura. Los valores entre 0.0 y 1.0 se ordenan por rangos, es decir, un archivo con el valor de GC_EVALUATION 0.1 es más probable que se elimine que un archivo con el valor de GC_EVALUATION 0.9.
- GC_EXPIRA
- Es de sólo lectura. Identifica el número de segundos que quedan hasta que el archivo que se está considerando caduque en la memoria caché. Sólo puede extraer esta variable un plug-in de asesor de GC.
- GC_FILENAME
- Es de sólo lectura. Identifica el archivo que se va a considerar para la recogida de basura. Sólo puede extraer esta variable un plug-in de asesor de GC.
- GC_TAMAÑO_ARCHIVO
- Es de sólo lectura. Identifica el tamaño del archivo que se va a considerar para la recogida de basura. Sólo puede extraer esta variable un plug-in de asesor de GC.
- ÚLTIMO ACCESO
- Es de sólo lectura. Identifica cuando se ha accedido al archivo por última vez. Sólo puede extraer esta variable un plug-in de asesor de GC.
- GC_ÚLTIMA_COMPROBACIÓN
- Es de sólo lectura. Identifica cuándo se han comprobado los archivos por última vez. Sólo puede extraer esta variable un plug-in de asesor de GC.
- GC_LOAD_DELAY
- Es de sólo lectura. Identifica cuánto se ha tardado en recuperar el archivo. Sólo puede extraer esta variable un plug-in de asesor de GC.
- HTTP_COOKIE
- Cuando se lee, esta variable contiene el valor de la cabecera Set-Cookie establecida por el cliente. También se puede utilizar para establecer una nueva cookie en la secuencia de respuesta (entre el proxy y el cliente). Al establecer esta variable, se crea una nueva cabecera Set-Cookie en la secuencia de solicitudes del documento, independientemente de si existe una cabecera duplicada.
- http_headers
- Es de sólo lectura. Se utiliza para extraer todas las cabeceras de solicitud del cliente.
- http_reason
- El establecimiento de esta variable afecta a la serie de motivo de la respuesta HTTP. Su establecimiento también afecta a la serie de motivo de la respuesta del proxy al cliente. La extracción de esta variable devuelve la serie de motivo en la respuesta del servidor de contenido al proxy.
- RESPUESTA HTTP
- El establecimiento de esta variable afecta al código de respuesta en la respuesta HTTP. Su establecimiento también afecta al código de estado de la respuesta del proxy al cliente. La extracción de esta variable devuelve el código de estado en la respuesta del servidor de contenido al proxy.
- HTTP_STATUS
- Contiene el código de respuesta HTTP y la serie de respuesta. Por ejemplo,
200 OK. - HTTP_USER_AGENT
- Contiene el valor de la cabecera de solicitud User-Agent, que es el nombre del navegador web del cliente, por ejemplo,
Netscape Navigator ⁄ V2.02. El establecimiento de esta variable afecta a la cabecera en la respuesta del proxy al cliente. Su extracción se aplica a la cabecera desde la solicitud del cliente. - init_string
- Es de sólo lectura. La directiva ServerInit define esta serie. Esta variable sólo puede ser de lectura durante el paso Server Initialization.
- LAST_MODIFIED
- La extracción de esta variable es aplicable a la cabecera content-charset desde la solicitud del cliente. Su establecimiento afecta al valor de la cabecera en la solicitud al servidor de contenido. Por ejemplo:
Mon, 01 Mar 1998 19:41:17 GMT - VARIABLES_LOCALES
- Es de sólo lectura. Todas las variables definidas por el usuario.
- MaxActiveThreads
- Es de sólo lectura. Número máximo de hebras activas.
- NO MODIFICADO_A_OK
- Fuerza una respuesta completa al cliente. Es válida en los pasos PreExit y ProxyAdvisor.
- ORIGINAL_HOST
- Es de sólo lectura. Devuelve el nombre de sistema principal o la dirección IP de destino de una solicitud. Se aplica en un proxy transparente.
- ORIGINAL_URL
- Es de sólo lectura. Devuelve el URL original enviado en la solicitud del cliente.
- ANULAR_HTTP_NO_TRANSFORMAR
- Habilita la modificación de los datos en presencia de una cabecera Cache-Control: no-transform. El establecimiento de esta variable afecta a la cabecera de respuesta al cliente.
- ANULAR_PROXY_NO_TRANSFORMAR
- Habilita la modificación de los datos en presencia de una cabecera Cache-Control: no-transform. El establecimiento de esta variable afecta a la respuesta al servidor de contenido.
- PASSWORD
- Para autenticación básica, contiene la contraseña decodificada. Por ejemplo,
password. - PATH
- Contiene la vía de acceso totalmente convertida.
- PATH_INFO
- Contiene información de vía de acceso adicional tal como la envía el navegador web. Por ejemplo,
/foo. - PATH_TRADUCIDO
- Contiene la versión decodificada o convertida de la información de vía de acceso contenida en PATH_INFO. Por ejemplo:
d:\wwwhome\foo/wwwhome/foo - PICS_ETIQUETA
- Es de sólo escritura. Contiene información de etiqueta PICS. El servidor comprobará el valor de PICS_LABEL sólo si el valor se ha establecido en el paso PicsDBLookup.
- PICS_NOMBRE_DEL_SERVICIO
- Es de sólo lectura. Contiene el nombre del servicio de clasificación de PICS. Por ejemplo:
Ratings USA - PICS_NOMBRE_DEL_SITIO
- Es de sólo lectura. Contiene el URL del servicio de clasificación de PICS. Por ejemplo:
http://www.ratings.com/ - PICS_PATHNAME
- Es de sólo lectura. Contiene el nombre de archivo y la vía de acceso del documento que se debe clasificar.
- pPath
- Contiene la vía de acceso parcialmente convertida. Utilícela en el paso Name Translation.
- PROXIED_CONTENT_LENGTH
- Es de sólo lectura. Devuelve la longitud de los datos de respuesta que se han transferido realmente a través del servidor proxy.
- ACCESO_PROXY
- Define si la solicitud es una solicitud de proxy. Por ejemplo,
NO. - TIPO_DE_CONTENIDO_PROXY
- Contiene el encabezado Content-Type de la solicitud proxy realizada a través de HTTPD_proxy(). Cuando se envía información con el método POST, esta variable contiene el tipo de datos incluidos. Puede crear un tipo de contenido propio en el archivo de configuración del servidor proxy y correlacionarlo con un visor. La extracción de esta variable se aplica al valor de cabecera desde la respuesta del servidor de contenido. Su establecimiento afecta a la cabecera de la solicitud al servidor de contenido. Por ejemplo:
application/x-www-form-urlencoded - LONGITUD_DEL_CONTENIDO_PROXY
- El encabezado Content-Length de la solicitud proxy realizada a través de HTTPD_proxy(). Cuando se envía información con el método POST, esta variable contiene el número de caracteres de los datos. Los servidores no suelen enviar un distintivo de final de archivo cuando reenvían la información mediante la entrada estándar. Si es necesario, puede utilizar el valor de
CONTENT_LENGTH para determinar el final de la serie de entrada. La extracción de esta variable se aplica al valor de cabecera desde la respuesta del servidor de contenido. Su establecimiento afecta a la cabecera de la solicitud al servidor de contenido. Por ejemplo:
7034 - PROXY_COOKIE
- Cuando se lee, esta variable contiene el valor de la cabecera Set-Cookie establecida por el servidor de origen. También se puede utilizar para establecer una nueva cookie en la secuencia de solicitudes. Al establecer esta variable, se crea una nueva cabecera Set-Cookie en la secuencia de solicitudes del documento, independientemente de si existe una cabecera duplicada.
- PROXY_HEADERS
- Es de sólo lectura. Se utiliza para extraer las cabeceras de proxy.
- MÉTODO DE PROXY
- Método para la solicitud realizada a través de HTTPD_proxy(). La extracción de esta variable se aplica al valor del encabezado de la respuesta del servidor de contenido. Su establecimiento afecta a la cabecera de la solicitud al servidor de contenido.
- CADENA_DE_CONSULTA
- Cuando se envía información utilizando el método GET, esta variable contiene la información que sigue al signo de interrogación (?) en una consulta. El programa de CGI debe decodificar esta información. Por ejemplo:
NAME=Eugene+T%2E+Fox&ADDR=etfox%7Cibm.net&INTEREST=xyz - RCA_PROPIETARIO
- Es de sólo lectura. Devuelve un valor numérico que indica el nodo propietario del objeto solicitado. Esta variable se puede utilizar en los pasos PostExit, ProxyAdvisor o Log y sólo tiene sentido cuando el servidor forma parte de una matriz de memoria caché que utiliza el acceso a memoria caché remota (RCA).
- RCA_TIMEOUTS
- Es de sólo lectura. Devuelve un valor numérico, que contiene el número total (agregado) de tiempos de espera excedidos en las solicitudes de RCA a todos los iguales. Puede utilizar esta variable en cualquier paso.
- REDIRECT_*
- Es de sólo lectura. Contiene una cadena de redireccionamiento para el código de error que corresponde al nombre de la variable (por ejemplo,
REDIRECT_URL). Puede encontrar una lista de posibles variables REDIRECT_ en la documentación en línea del servidor web Apache en http://httpd.apache.org/docs-2.0/custom-error.html. - Referrer_URL
- Es de sólo lectura. Contiene la última ubicación de URL del navegador. Permite al cliente especificar, a beneficio del servidor, la dirección (URL) del recurso del que se ha obtenido
Request-URL. Por ejemplo:
http://www.company.com/homepage - REMOTE_ADDR
- Contiene la dirección IP del navegador web, si está disponible. Por ejemplo,
45.23.06.8. - remote_host
- Contiene el nombre de sistema principal del navegador web, si está disponible. Por ejemplo,
www.raleigh.ibm.com. - remote_user
- Si el servidor da soporte a la autenticación de clientes y el script está protegido, esta variable contiene el nombre de usuario que se ha pasado para autenticación. Por ejemplo,
joeuser. - REQHDR
- Es de sólo lectura. Contiene una lista de las cabeceras enviadas por el cliente.
- TIPO_DE_CONTENIDO_SOLICITADO
- Es de sólo lectura. Devuelve el tipo de contenido del cuerpo de la solicitud. Por ejemplo:
application/x-www-form-urlencoded - LONGITUD_DEL_CONTENIDO_SOLICITADO
- Es de sólo lectura. Cuando se envía esta información con el método de POST, esta variable contiene el número de caracteres de datos. Los servidores no suelen enviar un distintivo de final de archivo cuando reenvían la información mediante la entrada estándar. Si es necesario, puede utilizar el valor de
CONTENT_LENGTH para determinar el final de la serie de entrada. Por ejemplo,
7034. - request_method
- Es de sólo lectura. Contiene el método (tal como se especifica con el atributo METHOD
en un formulario HTML) que se utiliza para enviar la solicitud. Por ejemplo,
GEToPOST. - REQUEST_PORT
- Es de sólo lectura. Devuelve el número de puerto especificado en el URL o un puerto predeterminado basado en el protocolo.
- TIPO_DE_CONTENIDO_DE_RESPUESTA
- Es de sólo lectura. Cuando se envía información con el método de POST, esta variable contiene el tipo de datos incluidos. Puede crear un tipo de contenido propio en el archivo de configuración del servidor proxy y correlacionarlo con un visor. Por ejemplo,
text/html. - RESPUESTA_CONTENIDO_LONGITUD
- Es de sólo lectura. Cuando se envía esta información con el método de POST, esta variable contiene el número de caracteres de datos. Los servidores no suelen enviar un distintivo de final de archivo cuando reenvían la información mediante la entrada estándar. Si es necesario, puede utilizar el valor de
CONTENT_LENGTH para determinar el final de la serie de entrada. Por ejemplo,
7034. - RULE_FILE_PATH
- Es de sólo lectura. Contiene la vía de acceso al sistema de archivos plenamente cualificada y el nombre del archivo de configuración.
- SSL_SESSIONID
- Es de sólo lectura. Devuelve el ID de sesión de SSL si la solicitud actual se ha recibido en una conexión SSL. Devuelve NULL si la solicitud actual no se ha recibido en una conexión SSL.
- Script_Name
- Contiene el URL de la solicitud.
- DIRECCIÓN DEL SERVIDOR
- Es de sólo lectura. Contiene la dirección IP local del servidor proxy.
- SERVER_NAME
- Es de sólo lectura. Contiene el nombre de sistema principal del servidor proxy o dirección IP del servidor de contenido para esta solicitud. Por ejemplo,
www.ibm.com. - PUERTO_SERVIDOR
- Es de sólo lectura. Contiene el número de puerto del servidor proxy al que se ha enviado la solicitud de cliente. Por ejemplo,
80. - PROTOCOLO DEL SERVIDOR
- Es de sólo lectura. Contiene el nombre y la versión del protocolo que se ha utilizado para realizar la solicitud. Por ejemplo,
HTTP/1.1. - RAÍZ DEL SERVIDOR
- Es de sólo lectura. Contiene el directorio donde está instalado el programa del servidor proxy.
- SOFTWARE DEL SERVIDOR
- Es de sólo lectura. Contiene el nombre y la versión del servidor proxy.
- estado
- Contiene el código de respuesta HTTP y la serie de respuesta. Por ejemplo, 200 OK.
- Rastreo
- Determina cuánta información se rastreará. Los valores que se devuelven son:
- OFF: sin rastreo.
- V: modalidad de salida detallada.
- VV: modalidad de salida muy detallada.
- MTV: modalidad de salida demasiado detallada.
- Titularidades
- Lectura/escritura. Es igual que DOCUMENT_URL.
- URI_PATH
- Es de sólo lectura. Devuelve sólo la parte de vía de acceso de un URL.
- URL
- Lectura/escritura. Es igual que DOCUMENT_URL.
- URL_MD4
- Es de sólo lectura. Devuelve el nombre del archivo posible de memoria caché para la solicitud actual.
- USE_PROXY
- Identifica el proxy con el que se debe asociar para la petición actual. Especifique el URL. Por ejemplo,
http://myproxy:8080. - ID DE USUARIO
- Es igual que REMOTE_USER.
- Nombre de usuario
- Es igual que REMOTE_USER.
Autenticación y autorización
En primer lugar, revisemos brevemente la terminología:
- Autenticación
- Verificación de las señales de seguridad asociadas con esta solicitud a fin de determinar la identidad del solicitante.
- Autorización
- Proceso que utiliza las señales de seguridad para determinar si el solicitante tiene acceso al recurso.
La siguiente figura muestra el proceso de autenticación y autorización del servidor proxy.

Como se muestra en la figura, el inicio del proceso de autorización es el primer paso del proceso de autorización y autenticación del servidor.
En el proxy de almacenamiento en caché, la autenticación forma parte del proceso de autorización; solo se produce cuando se requiere autorización.
Estos son los tres modos de proporcionar autenticación en los plug-ins de autorización:
- Escriba sus propios plug-ins de autorización y autenticación independientes. En el archivo de configuración de proxy, utilice las directivas Authorization y Authentication
para especificar estas funciones. Asegúrese de incluir la llamada a la función HTTPD_authenticate()
en la función de plug-in de autorización.
Cuando se ejecuta el paso Authorization, realiza la función de plug-in de autorización, que, por su parte, llama a la función de plug-in de autenticación.
- Escriba su propia función de plug-in de autorización, pero haga que llame a la autenticación de servidor predeterminada. En el archivo de configuración de proxy, utilice la directiva Authorization para especificar la función. En tal caso, no necesita la directiva Authentication. Asegúrese de llamar a la función HTTPD_authenticate() en la función de plug-in de autorización.
Cuando se ejecuta el paso Authorization, lleva a cabo la función de plug-in de autorización, que, por su parte, llama a la autenticación de servidor predeterminada.
- Escriba su propia función de plug-in de autorización e incluya en ella todo el proceso de autenticación necesario. No utilice la función HTTPD_authenticate() en el plug-in de autorización. En el archivo de configuración de proxy, utilice la directiva Authorization para especificar el plug-in de autorización. En tal caso, no necesita la directiva Authentication.
Cuando se ejecuta el paso Authorization, realiza la función de plug-in de autorización y las autenticaciones que incluya.
Si su complemento Caching Proxy no proporciona su propio proceso de autorización, aún puede proporcionar una autenticación personalizada utilizando el siguiente método:
- Escriba su propia función de plug-in de autenticación. En el archivo de configuración de proxy, utilice las directivas Authentication para especificar la función. En tal caso, no necesita la directiva Authorization.
Cuando se ejecuta el paso Authorization, realiza la autorización de servidor predeterminada, que, por su parte, llama a la función de plug-in de autenticación.
- Si no tiene directivas Authorization en el archivo de configuración o si sus funciones de plug-in especificadas rechazan la gestión de la solicitud devolviendo HTTP_NOACTION, tiene lugar la autorización predeterminada del servidor.
- Si tiene directivas Authorization en el archivo de configuración y sus funciones de plug-in incluyen HTTPD_authenticate(), el servidor llama a las funciones de autenticación especificadas en las directivas Authentication. Si no ha definido ninguna directiva Authentication o sus funciones de plug-in especificadas rechazan gestionar la solicitud devolviendo HTTP_NOACTION, tiene lugar la autenticación predeterminada del servidor.
- Si tiene directivas Authorization en el archivo de configuración pero sus funciones de plug-in no incluyen HTTPD_authenticate(), el servidor no llama a ninguna función de autenticación. Debe escribir su propio proceso de autenticación como parte de las funciones de plug-in de autorización o realizar sus propias llamadas a otros módulos de autenticación.
- El proxy de almacenamiento en caché genera automáticamente un desafío (solicitando al navegador que devuelva un ID de usuario y una contraseña) si su función de autorización devuelve los códigos
401o407. Sin embargo, aún debe configurar una configuración de protección en el proxy de almacenamiento en caché para que esta acción se realice correctamente.
Proceso de autenticación y autorización
El servidor proxy sigue estos pasos al procesar una solicitud que requiere autorización.
- En primer lugar, el servidor proxy examina su archivo de configuración para determinar si existe o no una directiva de autorización.
- Si hay una directiva de autorización en el archivo de configuración, el servidor llama a la función de autorización definida en la directiva y comienza la autenticación con el paso 2.
- Si no hay ninguna directiva de autorización, el servidor realiza una autorización predeterminada y luego pasa directamente a los procedimientos de autenticación del paso 3.
- El servidor proxy inicia el proceso de autenticación comprobando si el encabezado HTTP_authenticate está presente en la solicitud del cliente.
- Si el encabezado está presente, el servidor continúa con el proceso de autenticación (véase el paso 3 ).
- Si la cabecera no está presente, otro método debe realizar la autenticación.
- El servidor proxy comprueba si hay una directiva de autenticación presente en el archivo de configuración del proxy.
- Si hay presente una directiva de autenticación en el archivo de configuración, el servidor llama a la función de autenticación definida en la directiva.
- Si no hay ninguna directiva, el servidor realiza una autenticación predeterminada.
Si el complemento Caching Proxy proporciona su propio proceso de autorización, este sustituye la autorización y autenticación predeterminadas del servidor. Por lo tanto, si tiene directivas de autorización en el archivo de configuración, las funciones de plug-in asociadas con ellas deben gestionar también las autenticaciones necesarias. Se proporciona la función HTTPD_authenticate() predefinida para que la utilice.
Almacenamiento de variantes en caché
Utilice el almacenamiento de variantes en memoria caché para guardar en memoria caché los datos que se hayan modificado del documento original (el URI). El proxy de almacenamiento en caché gestiona las variantes generadas por la API. Las variantes son distintas versiones de un documento base.
Por lo general, cuando los servidores de origen envían variantes, no pueden identificarse como tales. El proxy de almacenamiento en caché solo admite variantes creadas por complementos (por ejemplo, conversión de página de códigos). Si un complemento crea una variante basada en criterios que no se encuentran en el encabezado HTTP, debe incluir una función de paso PreExit o PostAuthorization para crear un pseudoencabezado, de modo que el proxy de almacenamiento en caché pueda identificar correctamente la variante existente.
Por ejemplo, utilice el programa de la API de Transmogrifier para modificar los datos que los usuarios soliciten según el valor de la cabecera User-Agent que el navegador envíe. En la función close, guarde el contenido modificado en un archivo o especifique un longitud de almacenamiento intermedio y pase el almacenamiento intermedio como argumento de datos. A continuación, utilice las funciones de almacenamiento de variantes en memoria caché httpd_variant_insert() y httpd_variant_lookup() para colocar el contenido en la memoria caché.
Ejemplos de API
Para ayudarle a empezar a utilizar sus propias funciones de la API de proxy de almacenamiento en caché, consulte los programas de ejemplo que se incluyen en el directorio de ejemplos del CD-ROM de instalación de los componentes Edge. Hay información adicional disponible en la documentación.