1 <?xml version="1.0" encoding="ISO-8859-1"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es"><head>
4 <meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
6 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7 This file is generated from xml source: DO NOT EDIT
8 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
10 <title>Autenticación y Autorización - Servidor HTTP Apache Versión 2.5</title>
11 <link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
12 <link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
13 <link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="../style/css/prettify.css" />
14 <script src="../style/scripts/prettify.min.js" type="text/javascript">
17 <link href="../images/favicon.ico" rel="shortcut icon" /></head>
18 <body id="manual-page"><div id="page-header">
19 <p class="menu"><a href="../mod/">Módulos</a> | <a href="../mod/quickreference.html">Directivas</a> | <a href="http://wiki.apache.org/httpd/FAQ">Preguntas Frecuentes</a> | <a href="../glossary.html">Glosario</a> | <a href="../sitemap.html">Mapa del sitio web</a></p>
20 <p class="apache">Versión 2.5 del Servidor HTTP Apache</p>
21 <img alt="" src="../images/feather.png" /></div>
22 <div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif" /></a></div>
24 <a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">Servidor HTTP</a> > <a href="http://httpd.apache.org/docs/">Documentación</a> > <a href="../">Versión 2.5</a> > <a href="./">How-To / Tutoriales</a></div><div id="page-content"><div id="preamble"><h1>Autenticación y Autorización</h1>
26 <p><span>Idiomas disponibles: </span><a href="../en/howto/auth.html" hreflang="en" rel="alternate" title="English"> en </a> |
27 <a href="../es/howto/auth.html" title="Español"> es </a> |
28 <a href="../fr/howto/auth.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
29 <a href="../ja/howto/auth.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
30 <a href="../ko/howto/auth.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
31 <a href="../tr/howto/auth.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p>
34 <p>Autenticación es cualquier proceso por el cuál se verifica que uno es
35 quien dice ser. Autorización es cualquier proceso en el cuál cualquiera
36 está permitido a estar donde se quiera, o tener información la cuál se
40 <p>Para información de control de acceso de forma genérica visite<a href="access.html">How to de Control de Acceso</a>.</p>
42 <div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#related">Módulos y Directivas Relacionados</a></li>
43 <li><img alt="" src="../images/down.gif" /> <a href="#introduction">Introducción</a></li>
44 <li><img alt="" src="../images/down.gif" /> <a href="#theprerequisites">Los Prerequisitos</a></li>
45 <li><img alt="" src="../images/down.gif" /> <a href="#gettingitworking">Conseguir que funcione</a></li>
46 <li><img alt="" src="../images/down.gif" /> <a href="#lettingmorethanonepersonin">Dejar que más de una persona
48 <li><img alt="" src="../images/down.gif" /> <a href="#possibleproblems">Posibles Problemas</a></li>
49 <li><img alt="" src="../images/down.gif" /> <a href="#dbmdbd">Método alternativo de almacenamiento de las
51 <li><img alt="" src="../images/down.gif" /> <a href="#multprovider">Uso de múltiples proveedores</a></li>
52 <li><img alt="" src="../images/down.gif" /> <a href="#beyond">Más allá de la Autorización</a></li>
53 <li><img alt="" src="../images/down.gif" /> <a href="#socache">Cache de Autenticación</a></li>
54 <li><img alt="" src="../images/down.gif" /> <a href="#moreinformation">Más información</a></li>
55 </ul><h3>Consulte también</h3><ul class="seealso"><li><a href="#comments_section">Comentarios</a></li></ul></div>
56 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
58 <h2><a name="related" id="related">Módulos y Directivas Relacionados</a><a title="Enlace permanente" href="#related" class="permalink">¶</a></h2>
60 <p>Hay tres tipos de módulos involucrados en los procesos de la autenticación
61 y autorización. Normalmente deberás escoger al menos un módulo de cada grupo.</p>
64 <li>Modos de Autenticación (consulte la directiva
65 <code class="directive"><a href="../mod/mod_authn_core.html#authtype">AuthType</a></code> )
67 <li><code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code></li>
68 <li><code class="module"><a href="../mod/mod_auth_digest.html">mod_auth_digest</a></code></li>
71 <li>Proveedor de Autenticación (consulte la directiva
72 <code class="directive"><a href="../mod/mod_auth_basic.html#authbasicprovider">AuthBasicProvider</a></code> y
73 <code class="directive"><a href="../mod/mod_auth_digest.html#authdigestprovider">AuthDigestProvider</a></code>)
76 <li><code class="module"><a href="../mod/mod_authn_anon.html">mod_authn_anon</a></code></li>
77 <li><code class="module"><a href="../mod/mod_authn_dbd.html">mod_authn_dbd</a></code></li>
78 <li><code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code></li>
79 <li><code class="module"><a href="../mod/mod_authn_file.html">mod_authn_file</a></code></li>
80 <li><code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code></li>
81 <li><code class="module"><a href="../mod/mod_authn_socache.html">mod_authn_socache</a></code></li>
84 <li>Autorización (consulte la directiva
85 <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code>)
87 <li><code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code></li>
88 <li><code class="module"><a href="../mod/mod_authz_dbd.html">mod_authz_dbd</a></code></li>
89 <li><code class="module"><a href="../mod/mod_authz_dbm.html">mod_authz_dbm</a></code></li>
90 <li><code class="module"><a href="../mod/mod_authz_groupfile.html">mod_authz_groupfile</a></code></li>
91 <li><code class="module"><a href="../mod/mod_authz_host.html">mod_authz_host</a></code></li>
92 <li><code class="module"><a href="../mod/mod_authz_owner.html">mod_authz_owner</a></code></li>
93 <li><code class="module"><a href="../mod/mod_authz_user.html">mod_authz_user</a></code></li>
98 <p>A parte de éstos módulos, también están
99 <code class="module"><a href="../mod/mod_authn_core.html">mod_authn_core</a></code> y
100 <code class="module"><a href="../mod/mod_authz_core.html">mod_authz_core</a></code>. Éstos módulos implementan las directivas
101 esenciales que son el centro de todos los módulos de autenticación.</p>
103 <p>El módulo <code class="module"><a href="../mod/mod_authnz_ldap.html">mod_authnz_ldap</a></code> es tanto un proveedor de
104 autenticación como de autorización. El módulo
105 <code class="module"><a href="../mod/mod_authz_host.html">mod_authz_host</a></code> proporciona autorización y control de acceso
106 basado en el nombre del Host, la dirección IP o características de la propia
107 petición, pero no es parte del sistema proveedor de
108 autenticación. Para tener compatibilidad inversa con el mod_access,
109 hay un nuevo modulo llamado <code class="module"><a href="../mod/mod_access_compat.html">mod_access_compat</a></code>.</p>
111 <p>También puedes mirar el how-to de <a href="access.html">Control de Acceso </a>, donde se plantean varias formas del control de acceso al servidor.</p>
113 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
114 <div class="section">
115 <h2><a name="introduction" id="introduction">Introducción</a><a title="Enlace permanente" href="#introduction" class="permalink">¶</a></h2>
116 <p>Si se tiene información en nuestra página web que sea información
117 sensible o pensada para un grupo reducido de usuarios/personas,
118 las técnicas que se describen en este manual, le servirán
119 de ayuda para asegurarse de que las personas que ven esas páginas sean
120 las personas que uno quiere.</p>
122 <p>Este artículo cubre la parte "estándar" de cómo proteger partes de un
123 sitio web que muchos usarán.</p>
125 <div class="note"><h3>Nota:</h3>
126 <p>Si de verdad es necesario que tus datos estén en un sitio seguro,
127 considera usar <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> como método de autenticación adicional a cualquier forma de autenticación.</p>
129 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
130 <div class="section">
131 <h2><a name="theprerequisites" id="theprerequisites">Los Prerequisitos</a><a title="Enlace permanente" href="#theprerequisites" class="permalink">¶</a></h2>
132 <p>Las directivas que se usan en este artículo necesitaran ponerse ya sea
133 en el fichero de configuración principal del servidor ( típicamente en
135 <code class="directive"><a href="../mod/core.html#directory"><Directory></a></code> de httpd.conf ), o
136 en cada uno de los ficheros de configuraciones del propio directorio
137 (los archivos <code>.htaccess</code>).</p>
139 <p>Si planea usar los ficheros <code>.htaccess</code> , necesitarás
140 tener en la configuración global del servidor, una configuración que permita
141 poner directivas de autenticación en estos ficheros. Esto se hace con la
142 directiva <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code>, la cual especifica
143 que directivas, en su caso, pueden ser puestas en cada fichero de configuración
146 <p>Ya que estamos hablando aquí de autenticación, necesitarás una directiva
147 <code class="directive"><a href="../mod/core.html#allowoverride">AllowOverride</a></code> como la siguiente:
150 <pre class="prettyprint lang-config">AllowOverride AuthConfig</pre>
153 <p>O, si solo se van a poner las directivas directamente en la configuración
154 principal del servidor, deberás tener, claro está, permisos de escritura
157 <p>Y necesitarás saber un poco de como está estructurado el árbol de
158 directorios de tu servidor, para poder saber donde se encuentran algunos
159 archivos. Esto no debería ser una tarea difícil, aún así intentaremos
160 dejarlo claro llegado el momento de comentar dicho aspecto.</p>
162 <p>También deberás de asegurarte de que los módulos
163 <code class="module"><a href="../mod/mod_authn_core.html">mod_authn_core</a></code> y <code class="module"><a href="../mod/mod_authz_core.html">mod_authz_core</a></code>
164 han sido incorporados, o añadidos a la hora de compilar en tu binario httpd o
165 cargados mediante el archivo de configuración <code>httpd.conf</code>. Estos
166 dos módulos proporcionan directivas básicas y funcionalidades que son críticas
167 para la configuración y uso de autenticación y autorización en el servidor web.</p>
168 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
169 <div class="section">
170 <h2><a name="gettingitworking" id="gettingitworking">Conseguir que funcione</a><a title="Enlace permanente" href="#gettingitworking" class="permalink">¶</a></h2>
171 <p>Aquí está lo básico de cómo proteger con contraseña un directorio en tu
174 <p>Primero, necesitarás crear un fichero de contraseña. Dependiendo de que
175 proveedor de autenticación se haya elegido, se hará de una forma u otra. Para empezar,
176 usaremos un fichero de contraseña de tipo texto.</p>
178 <p>Este fichero deberá estar en un sitio que no se pueda tener acceso desde
179 la web. Esto también implica que nadie pueda descargarse el fichero de
180 contraseñas. Por ejemplo, si tus documentos están guardados fuera de
181 <code>/usr/local/apache/htdocs</code>, querrás poner tu archivo de contraseñas en
182 <code>/usr/local/apache/passwd</code>.</p>
184 <p>Para crear el fichero de contraseñas, usa la utilidad
185 <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> que viene con Apache. Esta herramienta se
186 encuentra en el directorio <code>/bin</code> en donde sea que se ha
187 instalado el Apache. Si ha instalado Apache desde un paquete de terceros,
188 puede ser que se encuentre en su ruta de ejecución.</p>
190 <p>Para crear el fichero, escribiremos:</p>
192 <div class="example"><p><code>
193 htpasswd -c /usr/local/apache/passwd/passwords rbowen
196 <p><code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> te preguntará por una contraseña, y después
197 te pedirá que la vuelvas a escribir para confirmarla:</p>
199 <div class="example"><p><code>
200 $ htpasswd -c /usr/local/apache/passwd/passwords rbowen<br />
201 New password: mypassword<br />
202 Re-type new password: mypassword<br />
203 Adding password for user rbowen
206 <p>Si <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code> no está en tu variable de entorno "path" del
207 sistema, por supuesto deberás escribir la ruta absoluta del ejecutable para
208 poder hacer que se ejecute. En una instalación por defecto, está en:
209 <code>/usr/local/apache2/bin/htpasswd</code></p>
211 <p>Lo próximo que necesitas, será configurar el servidor para que pida una
212 contraseña y así decirle al servidor que usuarios están autorizados a acceder.
213 Puedes hacer esto ya sea editando el fichero <code>httpd.conf</code>
214 de configuración o usando in fichero <code>.htaccess</code>. Por ejemplo,
215 si quieres proteger el directorio
216 <code>/usr/local/apache/htdocs/secret</code>, puedes usar las siguientes
217 directivas, ya sea en el fichero <code>.htaccess</code> localizado en
218 following directives, either placed in the file
219 <code>/usr/local/apache/htdocs/secret/.htaccess</code>, o
220 en la configuración global del servidor <code>httpd.conf</code> dentro de la
221 sección <Directory
222 "/usr/local/apache/htdocs/secret"> , como se muestra a continuación:</p>
224 <pre class="prettyprint lang-config"><Directory "/usr/local/apache/htdocs/secret">
226 AuthName "Restricted Files"
227 # (Following line optional)
228 AuthBasicProvider file
229 AuthUserFile "/usr/local/apache/passwd/passwords"
231 </Directory></pre>
234 <p>Vamos a explicar cada una de las directivas individualmente.
235 La directiva <code class="directive"><a href="../mod/mod_authn_core.html#authtype">AuthType</a></code> selecciona el método
236 que se usa para autenticar al usuario. El método más común es
237 <code>Basic</code>, y éste es el método que implementa
238 <code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code>. Es muy importante ser consciente,
239 de que la autenticación básica, envía las contraseñas desde el cliente
240 al servidor sin cifrar.
241 Este método por tanto, no debe ser utilizado para proteger datos muy sensibles,
242 a no ser que, este método de autenticación básica, sea acompañado del módulo
243 <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code>.
244 Apache soporta otro método más de autenticación que es del tipo
245 <code>AuthType Digest</code>. Este método, es implementado por el módulo <code class="module"><a href="../mod/mod_auth_digest.html">mod_auth_digest</a></code> y con el se pretendía crear una autenticación más
246 segura. Este ya no es el caso, ya que la conexión deberá realizarse con <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> en su lugar.
249 <p>La directiva <code class="directive"><a href="../mod/mod_authn_core.html#authname">AuthName</a></code>
250 establece el <dfn>Realm</dfn> para ser usado en la autenticación. El
251 <dfn>Realm</dfn> tiene dos funciones principales.
252 La primera, el cliente presenta a menudo esta información al usuario como
253 parte del cuadro de diálogo de contraseña. La segunda, que es utilizado por
254 el cliente para determinar qué contraseña enviar a para una determinada zona
255 de autenticación.</p>
257 <p>Así que, por ejemple, una vez que el cliente se ha autenticado en el área de
258 los <code>"Ficheros Restringidos"</code>, entonces re-intentará automáticamente
259 la misma contraseña para cualquier área en el mismo servidor que es marcado
260 con el Realm de <code>"Ficheros Restringidos"</code>
261 Por lo tanto, puedes prevenir que a un usuario se le pida mas de una vez por su
262 contraseña, compartiendo así varias áreas restringidas el mismo Realm
263 Por supuesto, por razones de seguridad, el cliente pedirá siempre por una contraseña,
264 siempre y cuando el nombre del servidor cambie.
267 <p>La directiva <code class="directive"><a href="../mod/mod_auth_basic.html#authbasicprovider">AuthBasicProvider</a></code> es,
268 en este caso, opcional, ya que <code>file</code> es el valor por defecto
269 para esta directiva. Deberás usar esta directiva si estas usando otro medio
270 diferente para la autenticación, como por ejemplo
271 <code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code> o <code class="module"><a href="../mod/mod_authn_dbd.html">mod_authn_dbd</a></code>.</p>
273 <p>La directiva <code class="directive"><a href="../mod/mod_authn_file.html#authuserfile">AuthUserFile</a></code>
274 establece el path al fichero de contraseñas que acabamos de crear con el
275 comando <code class="program"><a href="../programs/htpasswd.html">htpasswd</a></code>. Si tiene un número muy grande de usuarios,
276 puede ser realmente lento el buscar el usuario en ese fichero de texto plano
277 para autenticar a los usuarios en cada petición.
278 Apache también tiene la habilidad de almacenar información de usuarios en
279 unos ficheros de rápido acceso a modo de base de datos.
280 El módulo <code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code> proporciona la directiva <code class="directive"><a href="../mod/mod_authn_dbm.html#authdbmuserfile">AuthDBMUserFile</a></code>. Estos ficheros pueden ser creados y
281 manipulados con el programa <code class="program"><a href="../programs/dbmmanage.html">dbmmanage</a></code> y <code class="program"><a href="../programs/htdbm.html">htdbm</a></code>.
282 Muchos otros métodos de autenticación así como otras opciones, están disponibles en
284 <a href="http://modules.apache.org/">Base de datos de Módulos disponibles</a>.</p>
286 <p>Finalmente, la directiva <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code>
287 proporciona la parte del proceso de autorización estableciendo el o los
288 usuarios que se les está permitido acceder a una región del servidor.
289 En la próxima sección, discutiremos las diferentes vías de utilizar la
290 directiva <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code>.</p>
291 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
292 <div class="section">
293 <h2><a name="lettingmorethanonepersonin" id="lettingmorethanonepersonin">Dejar que más de una persona
294 entre</a><a title="Enlace permanente" href="#lettingmorethanonepersonin" class="permalink">¶</a></h2>
295 <p>Las directivas mencionadas arriba sólo permiten a una persona
296 (especialmente con un usuario que en ej ejemplo es <code>rbowen</code>)
297 en el directorio. En la mayoría de los casos, se querrá permitir el acceso
298 a más de una persona. Aquí es donde la directiva
299 <code class="directive"><a href="../mod/mod_authz_groupfile.html#authgroupfile">AuthGroupFile</a></code> entra en juego.</p>
301 <p>Si lo que se desea es permitir a más de una persona el acceso, necesitarás
302 crear un archivo de grupo que asocie los nombres de grupos con el de personas
303 para permitirles el acceso. El formato de este fichero es bastante sencillo,
304 y puedes crearlo con tu editor de texto favorito. El contenido del fichero
307 <div class="example"><p><code>
308 GroupName: rbowen dpitts sungo rshersey
311 <p>Básicamente eso es la lista de miembros los cuales están en un mismo fichero
312 de grupo en una sola linea separados por espacios.</p>
314 <p>Para añadir un usuario a tu fichero de contraseñas existente teclee:</p>
316 <div class="example"><p><code>
317 htpasswd /usr/local/apache/passwd/passwords dpitts
320 <p>Te responderá lo mismo que anteriormente, pero se añadirá al fichero
321 existente en vez de crear uno nuevo. (Es decir el flag <code>-c</code> será
322 el que haga que se genere un nuevo
323 fichero de contraseñas).</p>
325 <p>Ahora, tendrá que modificar su fichero <code>.htaccess</code> para que sea
326 parecido a lo siguiente:</p>
328 <pre class="prettyprint lang-config">AuthType Basic
329 AuthName "By Invitation Only"
331 AuthBasicProvider file
332 AuthUserFile "/usr/local/apache/passwd/passwords"
333 AuthGroupFile "/usr/local/apache/passwd/groups"
334 Require group GroupName</pre>
337 <p>Ahora, cualquiera que esté listado en el grupo <code>GroupName</code>,
338 y tiene una entrada en el fichero de <code>contraseñas</code>, se les
339 permitirá el acceso, si introducen su contraseña correctamente.</p>
341 <p>Hay otra manera de dejar entrar a varios usuarios, que es menos específica.
342 En lugar de crear un archivo de grupo, sólo puede utilizar la siguiente
345 <pre class="prettyprint lang-config">Require valid-user</pre>
348 <p>Usando ésto en vez de la línea <code>Require user rbowen</code>
349 permitirá a cualquier persona acceder, la cuál aparece en el archivo de
350 contraseñas, y que introduzca correctamente su contraseña. Incluso puede
351 emular el comportamiento del grupo aquí, sólo manteniendo un fichero de
352 contraseñas independiente para cada grupo. La ventaja de este enfoque es
353 que Apache sólo tiene que comprobar un archivo, en lugar de dos. La desventaja
354 es que se tiene que mantener un montón de ficheros de contraseña de grupo, y
355 recuerde hacer referencia al fichero correcto en la directiva
356 <code class="directive"><a href="../mod/mod_authn_file.html#authuserfile">AuthUserFile</a></code>.</p>
357 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
358 <div class="section">
359 <h2><a name="possibleproblems" id="possibleproblems">Posibles Problemas</a><a title="Enlace permanente" href="#possibleproblems" class="permalink">¶</a></h2>
360 <p>Debido a la forma en que se especifica la autenticación básica,
361 su nombre de usuario y la contraseña deben ser verificados cada vez
362 que se solicita un documento desde el servidor. Esto es, incluso si
363 se vuelve a cargar la misma página, y para cada imagen de la página (si
364 provienen de un directorio protegido). Como se puede imaginar, esto
365 ralentiza las cosas un poco. La cantidad que ralentiza las cosas es
366 proporcional al tamaño del archivo de contraseñas, porque tiene que
367 abrir ese archivo, recorrer lista de usuarios hasta que llega a su nombre.
368 Y tiene que hacer esto cada vez que se carga una página.</p>
370 <p>Una consecuencia de esto, es que hay un limite práctico de cuantos
371 usuarios puedes introducir en el fichero de contraseñas. Este límite
372 variará dependiendo de la máquina en la que tengas el servidor,
373 pero puedes notar ralentizaciones en cuanto se metan cientos de entradas,
374 y por lo tanto consideraremos entonces otro método de autenticación
377 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
378 <div class="section">
379 <h2><a name="dbmdbd" id="dbmdbd">Método alternativo de almacenamiento de las
380 contraseñas</a><a title="Enlace permanente" href="#dbmdbd" class="permalink">¶</a></h2>
382 <p>Debido a que el almacenamiento de las contraseñas en texto plano tiene
383 el problema mencionado anteriormente, puede que se prefiera guardar
384 las contraseñas en otro lugar como por ejemplo una base de datos.
387 <p>Los módulos <code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code> y <code class="module"><a href="../mod/mod_authn_dbd.html">mod_authn_dbd</a></code> son
388 dos módulos que hacen esto posible. En vez de seleccionar la directiva de fichero
389 <code><code class="directive"><a href="../mod/mod_auth_basic.html#authbasicprovider">AuthBasicProvider</a></code> </code>, en su lugar
390 se puede elegir <code>dbm</code> o <code>dbd</code> como formato de almacenamiento.</p>
392 <p>Para seleccionar los ficheros de tipo dbm en vez de texto plano, podremos hacer algo parecido a lo siguiente:</p>
394 <pre class="prettyprint lang-config"><Directory "/www/docs/private">
397 AuthBasicProvider dbm
398 AuthDBMUserFile "/www/passwords/passwd.dbm"
400 </Directory></pre>
403 <p>Hay otras opciones disponibles. Consulta la documentación de
404 <code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code> para más detalles.</p>
405 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
406 <div class="section">
407 <h2><a name="multprovider" id="multprovider">Uso de múltiples proveedores</a><a title="Enlace permanente" href="#multprovider" class="permalink">¶</a></h2>
409 <p>Con la introducción de la nueva autenticación basada en un proveedor y
410 una arquitectura de autorización, ya no estaremos restringidos a un único
411 método de autenticación o autorización. De hecho, cualquier número de
412 los proveedores pueden ser mezclados y emparejados para ofrecerle
413 exactamente el esquema que se adapte a sus necesidades.
414 En el siguiente ejemplo, veremos como ambos proveedores tanto el fichero
415 como el LDAP son usados en la autenticación:
418 <pre class="prettyprint lang-config"><Directory "/www/docs/private">
421 AuthBasicProvider file ldap
422 AuthUserFile "/usr/local/apache/passwd/passwords"
423 AuthLDAPURL ldap://ldaphost/o=yourorg
425 </Directory></pre>
428 <p>En este ejemplo el fichero, que actúa como proveedor, intentará autenticar
429 primero al usuario. Si no puede autenticar al usuario, el proveedor del LDAP
430 será llamado para que realice la autenticación.
431 Esto permite al ámbito de autenticación ser amplio, si su organización
432 implementa más de un tipo de almacén de autenticación.
433 Otros escenarios de autenticación y autorización pueden incluir la
434 mezcla de un tipo de autenticación con un tipo diferente de autorización.
435 Por ejemplo, autenticar contra un fichero de contraseñas pero autorizando
436 dicho acceso mediante el directorio del LDAP.</p>
438 <p>Así como múltiples métodos y proveedores de autenticación pueden
439 ser implementados, también pueden usarse múltiples formas de
441 En este ejemplo ambos ficheros de autorización de grupo así como
442 autorización de grupo mediante LDAP va a ser usado:
445 <pre class="prettyprint lang-config"><Directory "/www/docs/private">
448 AuthBasicProvider file
449 AuthUserFile "/usr/local/apache/passwd/passwords"
450 AuthLDAPURL ldap://ldaphost/o=yourorg
451 AuthGroupFile "/usr/local/apache/passwd/groups"
452 Require group GroupName
453 Require ldap-group cn=mygroup,o=yourorg
454 </Directory></pre>
457 <p>Para llevar la autorización un poco más lejos, las directivas
458 de autorización de contenedores tales como
459 <code class="directive"><a href="../mod/mod_authz_core.html#requireall"><RequireAll></a></code>
461 <code class="directive"><a href="../mod/mod_authz_core.html#requireany"><RequireAny></a></code>
462 nos permiten aplicar una lógica de en qué orden se manejará la autorización dependiendo
463 de la configuración y controlada a través de ella.
464 Mire también <a href="../mod/mod_authz_core.html#logic">Contenedores de
465 Autorización</a> para ejemplos de cómo pueden ser aplicados.</p>
467 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
468 <div class="section">
469 <h2><a name="beyond" id="beyond">Más allá de la Autorización</a><a title="Enlace permanente" href="#beyond" class="permalink">¶</a></h2>
471 <p>El modo en que la autorización puede ser aplicada es ahora mucho más flexible
472 que us solo chequeo contra un almacén de datos (contraseñas). Ordenando la
473 lógica y escoger la forma en que la autorización es realizada, ahora es posible
476 <h3><a name="authandororder" id="authandororder">Aplicando la lógica y ordenación</a></h3>
477 <p>Controlar el cómo y en qué orden se va a aplicar la autorización ha
478 sido un misterio en el pasado. En Apache 2.2 un proveedor del
479 mecanismo de autenticación fue introducido para disociar el proceso actual
480 de autenticación y soportar funcionalidad.
481 Uno de los beneficios secundarios fue que los proveedores de autenticación
482 podían ser configurados y llamados en un orden especifico que no dependieran
483 en el orden de carga del propio modulo.
484 Este proveedor de dicho mecanismo, ha sido introducido en la autorización
485 también. Lo que esto significa es que la directiva
486 <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code>
487 no sólo especifica que método de autorización deberá ser usado, si no
488 también especifica el orden en que van a ser llamados. Múltiples
489 métodos de autorización son llamados en el mismo orden en que la directiva
490 <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code> aparece en la
495 Con la Introducción del contenedor de directivas de autorización tales como
496 <code class="directive"><a href="../mod/mod_authz_core.html#requireall"><RequireAll></a></code>
498 <code class="directive"><a href="../mod/mod_authz_core.html#requireany"><RequireAny></a></code>,
499 La configuración también tiene control sobre cuándo se llaman a los métodos
500 de autorización y qué criterios determinan cuándo se concede el acceso.
502 <a href="../mod/mod_authz_core.html#logic">Contenedores de autorización</a>
503 Para un ejemplo de cómo pueden ser utilizados para expresar una lógica
504 más compleja de autorización.
508 Por defecto todas las directivas
509 <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code>
510 son manejadas como si estuvieran contenidas en una directiva
511 <code class="directive"><a href="../mod/mod_authz_core.html#requireany"><RequireAny></a></code>.
512 En otras palabras, Si alguno de los métodos de autorización
513 especificados tiene éxito, se concede la autorización.
518 <h3><a name="reqaccessctrl" id="reqaccessctrl">Uso de los proveedores de autorización para
519 el control de acceso</a></h3>
522 La autenticación de nombre de usuario y contraseña es sólo parte
523 de toda la historia que conlleva el proceso. Frecuentemente quiere
524 dar acceso a la gente en base a algo más que lo que son.
525 Algo como de donde vienen.
529 Los proveedores de autorización <code>all</code>,
530 <code>env</code>, <code>host</code> y <code>ip</code>
531 te permiten denegar o permitir el acceso basándose en otros
532 criterios como el nombre de la máquina o la IP de la máquina que
533 realiza la consulta para un documento.
537 El uso de estos proveedores se especifica a través de la directiva
538 <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code>.
539 La directiva registra los proveedores de autorización que serán llamados
540 durante la solicitud de la fase del proceso de autorización. Por ejemplo:
543 <pre class="prettyprint lang-config">Require ip <var>address</var>
548 Donde <var>address</var> es una dirección IP (o una dirección IP parcial)
552 <pre class="prettyprint lang-config">Require host <var>domain_name</var>
557 Donde <var>domain_name</var> es el nombre completamente cualificado de un nombre
558 de dominio (FQDN) (o un nombre parcial del dominio);
559 puede proporcionar múltiples direcciones o nombres de dominio, si se desea.
563 Por ejemplo, si alguien envía spam a su tablón de mensajes y desea
564 mantenerlos alejados, podría hacer lo siguiente:</p>
566 <pre class="prettyprint lang-config"><RequireAll>
568 Require not ip 10.252.46.165
569 </RequireAll></pre>
573 Visitantes que vengan desde esa IP no serán capaces de ver el contenido
574 que cubre esta directiva. Si, en cambio, lo que se tiene es el nombre de
575 la máquina, en vez de la dirección IP, podría usar:
578 <pre class="prettyprint lang-config"><RequireAll>
580 Require not host host.example.com
581 </RequireAll></pre>
585 Y, si lo que se quiere es bloquear el acceso desde un determinado dominio
586 (bloquear el acceso desde el dominio entero), puede especificar parte
587 de la dirección o del propio dominio a bloquear:
590 <pre class="prettyprint lang-config"><RequireAll>
592 Require not ip 192.168.205
593 Require not host phishers.example.com moreidiots.example
595 </RequireAll></pre>
599 Usando <code class="directive"><a href="../mod/mod_authz_core.html#requireall"><RequireAll></a></code>
600 con múltiples directivas <code class="directive"><a href="../mod/mod_authz_core.html#require"><Require></a></code>, cada una negada con un <code>not</code>,
601 Sólo permitirá el acceso, si todas las condiciones negadas son verdaderas.
602 En otras palabras, el acceso será bloqueado, si cualquiera de las condiciones
608 <h3><a name="filesystem" id="filesystem">Compatibilidad de Control de Acceso con versiones
612 Uno de los efectos secundarios de adoptar proveedores basados en
613 mecanismos de autenticación es que las directivas anteriores
614 <code class="directive"><a href="../mod/mod_access_compat.html#order">Order</a></code>,
615 <code class="directive"><a href="../mod/mod_access_compat.html#allow">Allow</a></code>,
616 <code class="directive"><a href="../mod/mod_access_compat.html#deny">Deny</a></code> y
617 <code class="directive"><a href="../mod/mod_access_compat.html#satisfy">Satisfy</a></code> ya no son necesarias.
618 Sin embargo, para proporcionar compatibilidad con configuraciones antiguas,
619 estas directivas se han movido al módulo <code class="module"><a href="../mod/mod_access_compat.html">mod_access_compat</a></code>.
622 <div class="warning"><h3>Nota:</h3>
624 Las directivas proporcionadas por <code class="module"><a href="../mod/mod_access_compat.html">mod_access_compat</a></code>
625 han quedado obsoletas por <code class="module"><a href="../mod/mod_authz_host.html">mod_authz_host</a></code>. Mezclar
626 directivas antiguas como
627 <code class="directive"><a href="../mod/mod_access_compat.html#order">Order</a></code>,
628 <code class="directive"><a href="../mod/mod_access_compat.html#allow">Allow</a></code> ó
629 <code class="directive"><a href="../mod/mod_access_compat.html#deny">Deny</a></code> con las nuevas
631 <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code>
632 es técnicamente posible pero desaconsejable. El módulo
633 <code class="module"><a href="../mod/mod_access_compat.html">mod_access_compat</a></code> se creó para soportar configuraciones
634 que contuvieran sólo directivas antiguas para facilitar la actualización
636 Por favor revise la documentación de
637 <a href="../upgrading.html">actualización</a> para más información al
643 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
644 <div class="section">
645 <h2><a name="socache" id="socache">Cache de Autenticación</a><a title="Enlace permanente" href="#socache" class="permalink">¶</a></h2>
647 Puede haber momentos en que la autenticación ponga una carga
648 inaceptable en el proveedor (de autenticación) o en tu red.
649 Esto suele afectar a los usuarios de <code class="module"><a href="../mod/mod_authn_dbd.html">mod_authn_dbd</a></code>
650 (u otros proveedores de terceros/personalizados).
651 Para lidiar con este problema, HTTPD 2.3/2.4 introduce un nuevo proveedor
652 de caché <code class="module"><a href="../mod/mod_authn_socache.html">mod_authn_socache</a></code> para cachear las credenciales
653 y reducir la carga en el proveedor(es) original.
656 Esto puede ofrecer un aumento de rendimiento sustancial para algunos usuarios.
658 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
659 <div class="section">
660 <h2><a name="moreinformation" id="moreinformation">Más información</a><a title="Enlace permanente" href="#moreinformation" class="permalink">¶</a></h2>
663 También debería leer la documentación para
664 <code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code> y <code class="module"><a href="../mod/mod_authz_host.html">mod_authz_host</a></code>
665 la cuál contiene más información de como funciona todo esto.
666 La directiva <code class="directive"><a href="../mod/mod_authn_core.html#authnprovideralias"><AuthnProviderAlias></a></code> puede también ayudar
667 a la hora de simplificar ciertas configuraciones de autenticación.
671 Los diferentes algoritmos de cifrado que están soportados por Apache
672 para la autenticación se explican en
673 <a href="../misc/password_encryptions.html">Cifrado de Contraseñas</a>.
677 Y tal vez quiera ojear la documentación de "how to"
678 <a href="access.html">Control de Acceso</a> donde se mencionan temas
682 <div class="bottomlang">
683 <p><span>Idiomas disponibles: </span><a href="../en/howto/auth.html" hreflang="en" rel="alternate" title="English"> en </a> |
684 <a href="../es/howto/auth.html" title="Español"> es </a> |
685 <a href="../fr/howto/auth.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
686 <a href="../ja/howto/auth.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
687 <a href="../ko/howto/auth.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
688 <a href="../tr/howto/auth.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p>
689 </div><div class="top"><a href="#page-header"><img src="../images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Comentarios</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
690 <script type="text/javascript"><!--//--><![CDATA[//><!--
691 var comments_shortname = 'httpd';
692 var comments_identifier = 'http://httpd.apache.org/docs/trunk/howto/auth.html';
694 if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
695 d.write('<div id="comments_thread"><\/div>');
696 var s = d.createElement('script');
697 s.type = 'text/javascript';
699 s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
700 (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
703 d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
705 })(window, document);
706 //--><!]]></script></div><div id="footer">
707 <p class="apache">Copyright 2018 The Apache Software Foundation.<br />Licencia bajo los términos de la <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
708 <p class="menu"><a href="../mod/">Módulos</a> | <a href="../mod/quickreference.html">Directivas</a> | <a href="http://wiki.apache.org/httpd/FAQ">Preguntas Frecuentes</a> | <a href="../glossary.html">Glosario</a> | <a href="../sitemap.html">Mapa del sitio web</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
709 if (typeof(prettyPrint) !== 'undefined') {