mirror of
https://github.com/php/doc-es.git
synced 2026-03-23 23:12:09 +01:00
139 lines
5.0 KiB
XML
139 lines
5.0 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- $Revision$ -->
|
|
<!-- EN-Revision: cd4180557a185469a64a7eb26f7be98d0a5f1ebb Maintainer: PhilDaiguille Status: ready -->
|
|
<!-- Reviewed: yes -->
|
|
|
|
<chapter xml:id="features.http-auth" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
<title>Identificación HTTP con PHP</title>
|
|
|
|
<simpara>
|
|
Es posible utilizar la función <function>header</function> para solicitar
|
|
una identificación (<literal>"Authentication Required"</literal>) al cliente,
|
|
generando así la aparición de una ventana
|
|
de solicitud de usuario y contraseña. Una vez que los
|
|
campos han sido completados, la URL será llamada de nuevo, con las <link linkend="reserved.variables">variables predefinidas</link>
|
|
<varname>PHP_AUTH_USER</varname>, <varname>PHP_AUTH_PW</varname> y
|
|
<varname>AUTH_TYPE</varname> conteniendo respectivamente el nombre de usuario, la contraseña y
|
|
el tipo de identificación. Estas variables predefinidas se encuentran en los arrays
|
|
<varname>$_SERVER</varname>.
|
|
<emphasis>Solo</emphasis> el método de identificación "Basic"
|
|
es soportado. Consulte la función
|
|
<function>header</function> para más información.
|
|
</simpara>
|
|
|
|
<para>
|
|
Aquí hay un ejemplo de script que fuerza la identificación del cliente
|
|
para acceder a una página:
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Ejemplo de identificación HTTP simple</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
if (!isset($_SERVER['PHP_AUTH_USER'])) {
|
|
header('HTTP/1.1 401 Unauthorized');
|
|
header('WWW-Authenticate: Basic realm="My Realm"');
|
|
echo 'Texto utilizado si el visitante usa el botón de cancelación';
|
|
exit;
|
|
} else {
|
|
echo "<p>Hola, {$_SERVER['PHP_AUTH_USER']}.</p>";
|
|
echo "<p>Su contraseña es {$_SERVER['PHP_AUTH_PW']}.</p>";
|
|
}
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
|
|
<note>
|
|
<title>Compatibilidad</title>
|
|
<para>
|
|
Sea muy cuidadoso al usar encabezados HTTP con PHP. Para
|
|
garantizar la máxima compatibilidad entre los navegadores, la palabra clave
|
|
"Basic" debe escribirse con una B mayúscula, y el texto de presentación
|
|
debe colocarse entre comillas dobles (no simples), y exactamente un espacio debe
|
|
preceder al código <emphasis>401</emphasis> en el encabezado
|
|
<emphasis>HTTP/1.1 401</emphasis>. Los parámetros de autenticación deben
|
|
estar separados por comas.
|
|
</para>
|
|
</note>
|
|
|
|
<para>
|
|
En lugar de mostrar simplemente las variables globales <varname>PHP_AUTH_USER</varname>
|
|
y <varname>PHP_AUTH_PW</varname>, se preferirá
|
|
verificar la validez del nombre de usuario y la contraseña.
|
|
Por ejemplo, enviando esta información a una base de datos,
|
|
o buscando en un fichero dbm.
|
|
</para>
|
|
|
|
<note>
|
|
<title>Configuración de Apache</title>
|
|
<para>
|
|
PHP utiliza la presencia de la directiva <literal>AuthType</literal>
|
|
para determinar si una identificación externa está activada.
|
|
</para>
|
|
</note>
|
|
|
|
<simpara>
|
|
Tenga en cuenta, sin embargo, que las manipulaciones anteriores no impiden
|
|
que cualquier persona con una página no identificada
|
|
robe las contraseñas de las páginas protegidas,
|
|
en el mismo servidor.
|
|
</simpara>
|
|
|
|
<note>
|
|
<title>Comportamiento del navegador</title>
|
|
<simpara>
|
|
La autenticación HTTP Basic es realmente básica, y no fue diseñada para
|
|
soportar cierres de sesión. Dado que HTTP es un protocolo sin estado, la mayoría
|
|
de los navegadores almacenarán en caché las credenciales proporcionadas tan pronto como
|
|
se reciba un código de estado <literal>2xx</literal>, y las enviarán en cada solicitud,
|
|
hasta que se cierre el navegador. No existe una forma definida para que un servidor
|
|
solicite nuevas credenciales.
|
|
|
|
A lo largo de los años, varias soluciones alternativas se han difundido como consejos
|
|
en Internet, pero todas dependen de cómo los diferentes navegadores han elegido
|
|
manejar casos límite no definidos (o incluso violaciones del estándar HTTP).
|
|
Es mejor evitar tales soluciones alternativas y no utilizar la autenticación Basic
|
|
para nada serio.
|
|
</simpara>
|
|
</note>
|
|
|
|
<note>
|
|
<title>Configuración de IIS</title>
|
|
<simpara>
|
|
Para que la identificación HTTP funcione con un servidor IIS con
|
|
la versión CGI de PHP, la directiva PHP
|
|
<link linkend="ini.cgi.rfc2616-headers">cgi.rfc2616_headers</link>
|
|
debe establecerse en <literal>0</literal> (el valor por defecto),
|
|
y debe editar la configuración "<literal>Directory Security</literal>"
|
|
de IIS. Haga clic en "<literal>Edit</literal>" y active solo
|
|
"<literal>Anonymous Access</literal>", todos los demás campos deben
|
|
dejarse inactivos.
|
|
</simpara>
|
|
</note>
|
|
|
|
</chapter>
|
|
|
|
<!-- Keep this comment at the end of the file
|
|
Local variables:
|
|
mode: sgml
|
|
sgml-omittag:t
|
|
sgml-shorttag:t
|
|
sgml-minimize-attributes:nil
|
|
sgml-always-quote-attributes:t
|
|
sgml-indent-step:1
|
|
sgml-indent-data:t
|
|
indent-tabs-mode:nil
|
|
sgml-parent-document:nil
|
|
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
|
|
sgml-exposed-tags:nil
|
|
sgml-local-catalogs:nil
|
|
sgml-local-ecat-files:nil
|
|
End:
|
|
vim600: syn=xml fen fdm=syntax fdl=2 si
|
|
vim: et tw=78 syn=sgml
|
|
vi: ts=1 sw=1
|
|
-->
|