]> granicus.if.org Git - apache/blob - docs/manual/howto/auth.html.es.utf8
move es and fr targets to *.utf8 extension. Update transformation
[apache] / docs / manual / howto / auth.html.es.utf8
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" />
5 <!--
6         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7               This file is generated from xml source: DO NOT EDIT
8         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
9       -->
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">
15 </script>
16
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="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
23 <div id="path">
24 <a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">Servidor HTTP</a> &gt; <a href="http://httpd.apache.org/docs/">Documentación</a> &gt; <a href="../">Versión 2.5</a> &gt; <a href="./">How-To / Tutoriales</a></div><div id="page-content"><div id="preamble"><h1>Autenticación y Autorización</h1>
25 <div class="toplang">
26 <p><span>Idiomas disponibles: </span><a href="../en/howto/auth.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
27 <a href="../es/howto/auth.html" title="Español">&nbsp;es&nbsp;</a> |
28 <a href="../fr/howto/auth.html" hreflang="fr" rel="alternate" title="Français">&nbsp;fr&nbsp;</a> |
29 <a href="../ja/howto/auth.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
30 <a href="../ko/howto/auth.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
31 <a href="../tr/howto/auth.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a></p>
32 </div>
33
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
37     quiera tener.
38     </p>
39
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>
41 </div>
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 
47         entre</a></li>
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 
50         contraseñas</a></li>
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>
57 <div class="section">
58 <h2><a name="related" id="related">Módulos y Directivas Relacionados</a><a title="Enlace permanente" href="#related" class="permalink">&para;</a></h2>
59
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>
62
63 <ul>
64   <li>Modos de Autenticación (consulte la directiva
65       <code class="directive"><a href="../mod/mod_authn_core.html#authtype">AuthType</a></code> )
66     <ul>
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>
69     </ul>
70   </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>)
74
75     <ul>
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>
82     </ul>
83   </li>
84   <li>Autorización (consulte la directiva
85       <code class="directive"><a href="../mod/mod_authz_core.html#require">Require</a></code>)
86     <ul>
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>
94     </ul>
95   </li>
96 </ul>
97
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>
102
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>
110
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>
112
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">&para;</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>
121
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>
124
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>
128     </div>
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">&para;</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 
134         la sección 
135     <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</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>
138
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
144     por directorio.</p>
145
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:
148         </p>
149
150     <pre class="prettyprint lang-config">AllowOverride AuthConfig</pre>
151
152
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
155         en el archivo. </p>
156
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>
161
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">&para;</a></h2>
171     <p>Aquí está lo básico de cómo proteger con contraseña un directorio en tu
172      servidor.</p>
173
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>
177
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>
183
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>
189
190     <p>Para crear el fichero, escribiremos:</p>
191
192     <div class="example"><p><code>
193       htpasswd -c /usr/local/apache/passwd/passwords rbowen
194     </code></p></div>
195
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>
198
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
204     </code></p></div>
205
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>
210
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 &lt;Directory  
222     "/usr/local/apache/htdocs/secret"&gt; , como se muestra a continuación:</p>
223
224     <pre class="prettyprint lang-config">&lt;Directory "/usr/local/apache/htdocs/secret"&gt;
225 AuthType Basic
226 AuthName "Restricted Files"
227 # (Following line optional)
228 AuthBasicProvider file
229 AuthUserFile "/usr/local/apache/passwd/passwords"
230 Require user rbowen
231 &lt;/Directory&gt;</pre>
232
233
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.
247     </p>
248
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>
256
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.
265     </p>
266
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>
272
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 
283     módulos de terceros 
284     <a href="http://modules.apache.org/">Base de datos de Módulos disponibles</a>.</p>
285
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">&para;</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>
300
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 
305      se parecerá a:</p>
306
307    <div class="example"><p><code>
308      GroupName: rbowen dpitts sungo rshersey
309    </code></p></div>
310
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>
313
314     <p>Para añadir un usuario a tu fichero de contraseñas existente teclee:</p>
315
316     <div class="example"><p><code>
317       htpasswd /usr/local/apache/passwd/passwords dpitts
318     </code></p></div>
319
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>
324
325     <p>Ahora, tendrá que modificar su fichero <code>.htaccess</code> para que sea 
326     parecido a lo siguiente:</p>
327
328     <pre class="prettyprint lang-config">AuthType Basic
329 AuthName "By Invitation Only"
330 # Optional line:
331 AuthBasicProvider file
332 AuthUserFile "/usr/local/apache/passwd/passwords"
333 AuthGroupFile "/usr/local/apache/passwd/groups"
334 Require group GroupName</pre>
335
336
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>
340
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 
343     directiva:</p>
344
345     <pre class="prettyprint lang-config">Require valid-user</pre>
346
347
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">&para;</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&nbsp;
363     se&nbsp; vuelve a cargar la misma página, y para cada imagen de la página (si
364 &nbsp;&nbsp;&nbsp;&nbsp;provienen de un directorio protegido). Como se puede imaginar, esto
365 &nbsp;&nbsp;&nbsp;&nbsp;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&nbsp;lista de usuarios hasta que llega a su nombre.
368     Y tiene que hacer esto cada vez que se carga una página.</p>
369
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
375     en ese momento.
376         </p>
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">&para;</a></h2>
381
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.
385         </p>
386
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>
391
392     <p>Para seleccionar los ficheros de tipo dbm en vez de texto plano, podremos hacer algo parecido a lo siguiente:</p>
393
394     <pre class="prettyprint lang-config">&lt;Directory "/www/docs/private"&gt;
395     AuthName "Private"
396     AuthType Basic
397     AuthBasicProvider dbm
398     AuthDBMUserFile "/www/passwords/passwd.dbm"
399     Require valid-user
400 &lt;/Directory&gt;</pre>
401
402
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">&para;</a></h2>
408
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:
416      </p>
417
418     <pre class="prettyprint lang-config">&lt;Directory "/www/docs/private"&gt;
419     AuthName "Private"
420     AuthType Basic
421     AuthBasicProvider file ldap
422     AuthUserFile "/usr/local/apache/passwd/passwords"
423     AuthLDAPURL ldap://ldaphost/o=yourorg
424     Require valid-user
425 &lt;/Directory&gt;</pre>
426
427
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>
437
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 
440         autorización.
441         En este ejemplo ambos ficheros de autorización de grupo así como 
442         autorización de grupo mediante LDAP va a ser usado:
443     </p>
444
445     <pre class="prettyprint lang-config">&lt;Directory "/www/docs/private"&gt;
446     AuthName "Private"
447     AuthType Basic
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 &lt;/Directory&gt;</pre>
455
456
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">&lt;RequireAll&gt;</a></code>
460     and
461     <code class="directive"><a href="../mod/mod_authz_core.html#requireany">&lt;RequireAny&gt;</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>
466
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">&para;</a></h2>
470
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 
474     </p>
475
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
491             configuración.
492         </p>
493
494         <p>
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">&lt;RequireAll&gt;</a></code>
497                 y
498                 <code class="directive"><a href="../mod/mod_authz_core.html#requireany">&lt;RequireAny&gt;</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.
501                 Vease
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.
505             </p>
506
507         <p>
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">&lt;RequireAny&gt;</a></code>.
512                 En otras palabras, Si alguno de los métodos de autorización 
513                 especificados tiene éxito, se concede la autorización.
514         </p>
515
516     
517
518     <h3><a name="reqaccessctrl" id="reqaccessctrl">Uso de los proveedores de autorización para 
519         el control de acceso</a></h3>
520
521         <p>
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.
526         </p>
527
528         <p>
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.
534         </p>
535
536         <p>
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:
541         </p>
542
543         <pre class="prettyprint lang-config">Require ip <var>address</var>
544         </pre>
545
546
547         <p>
548                 Donde <var>address</var> es una dirección IP (o una dirección IP parcial) 
549                 o bien:
550         </p>
551
552         <pre class="prettyprint lang-config">Require host <var>domain_name</var>
553         </pre>
554
555
556         <p>
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.
560         </p>
561
562         <p>
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>
565
566         <pre class="prettyprint lang-config">&lt;RequireAll&gt;
567     Require all granted
568     Require not ip 10.252.46.165
569 &lt;/RequireAll&gt;</pre>
570
571
572         <p>
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:
576         </p>
577
578         <pre class="prettyprint lang-config">&lt;RequireAll&gt;
579     Require all granted
580     Require not host host.example.com
581 &lt;/RequireAll&gt;</pre>
582
583
584         <p>
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:
588         </p>
589
590         <pre class="prettyprint lang-config">&lt;RequireAll&gt;
591     Require all granted
592     Require not ip 192.168.205
593     Require not host phishers.example.com moreidiots.example
594     Require not host ke
595 &lt;/RequireAll&gt;</pre>
596
597
598         <p>
599                 Usando <code class="directive"><a href="../mod/mod_authz_core.html#requireall">&lt;RequireAll&gt;</a></code>
600                 con múltiples directivas <code class="directive"><a href="../mod/mod_authz_core.html#require">&lt;Require&gt;</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
603                 negadas fallara.
604         </p>
605
606     
607
608     <h3><a name="filesystem" id="filesystem">Compatibilidad de Control de Acceso con versiones 
609         anteriores </a></h3>
610
611         <p>
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>.
620         </p>
621
622         <div class="warning"><h3>Nota:</h3>
623                 <p>
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 
630                     como 
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
635                     a la versión 2.4.
636                     Por favor revise la documentación de 
637                     <a href="../upgrading.html">actualización</a> para más información al
638                     respecto.
639                 </p>
640             </div>
641         
642
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">&para;</a></h2>
646         <p>
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.
654         </p>
655     <p>
656         Esto puede ofrecer un aumento de rendimiento sustancial para algunos usuarios.
657     </p>
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">&para;</a></h2>
661
662     <p>
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">&lt;AuthnProviderAlias&gt;</a></code> puede también ayudar 
667             a la hora de simplificar ciertas configuraciones de autenticación.
668         </p>
669
670     <p>
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>.
674     </p>
675
676     <p>
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 
679         relacionados.</p>
680
681 </div></div>
682 <div class="bottomlang">
683 <p><span>Idiomas disponibles: </span><a href="../en/howto/auth.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
684 <a href="../es/howto/auth.html" title="Español">&nbsp;es&nbsp;</a> |
685 <a href="../fr/howto/auth.html" hreflang="fr" rel="alternate" title="Français">&nbsp;fr&nbsp;</a> |
686 <a href="../ja/howto/auth.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
687 <a href="../ko/howto/auth.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
688 <a href="../tr/howto/auth.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</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&amp;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';
693 (function(w, d) {
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';
698         s.async = true;
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);
701     }
702     else {
703         d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
704     }
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') {
710     prettyPrint();
711 }
712 //--><!]]></script>
713 </body></html>