2011-03-16 15 views
11

Tengo un sitio web impulsado por Jetty.Jetty webserver security

Me gustaría que la contraseña del sitio esté protegida (o similar).

Hay una forma de hacerlo por configuración solamente (sin tocar el código).

Toda ayuda muy apreciada.

Dan

+2

Todo está en la documentación (http://wiki.eclipse.org/Jetty). Lamentablemente, los documentos están sorprendentemente mal organizados. – skaffman

Respuesta

21

Una forma de hacerlo es mediante la configuración de la autenticación básica para su aplicación. Solo deberías hacer esto si usas ssl, pero entonces iniciar sesión sin ssl no es seguro de todos modos, así que supongo que ya lo tienes.

Hay muchas maneras de hacer esto en Jetty, y este es solo uno de ellos.

Primero, debe definir un dominio donde defina todos los usuarios, contraseñas, roles, etc. La configuración predeterminada en Jetty ya define un dominio llamado "Reino de prueba". El dominio se define en el archivo /etc/jetty-testrealm.xml. Puede usar este reino o crear uno nuevo. Si define una nueva, puede definirla en el mismo archivo o en un archivo separado. Si crea un archivo separado, recuerde incluir ese archivo en start.ini.

/etc/jetty-testrealm.xml tiene una referencia a /etc/realm.properties. Aquí es donde creas tus usuarios. Si solo quiere usar el reino de prueba, recuerde eliminar los usuarios predeterminados que ya están definidos en realm.properties.

También hay otro tipo de implementaciones de reino que utilizan, por ejemplo, una base de datos para datos de usuario.

A continuación, abra el archivo /etc/webdefault.xml y añadir algo como esto en la parte inferior:

<security-constraint> 
    <web-resource-collection> 
    <url-pattern>/*</url-pattern>  <!--The url that should be protected --> 
    </web-resource-collection> 
    <auth-constraint> 
    <role-name>admin</role-name>  <!--The required roles for accessing the url --> 
    <role-name>user</role-name> 
    <role-name>moderator</role-name> 
    </auth-constraint> 
</security-constraint> 

<login-config> 
    <auth-method>BASIC</auth-method>  <!-- Use http basic authentication --> 
    <realm-name>Test Realm</realm-name> <!-- Users are defined in this realm --> 
</login-config> 
+0

También debe incluir defaultDescriptor, a través de su aplicación. archivo de contexto: /etc/webdefault.xml maximdim

0

me encontré con el ejemplo que la distribución embarcadero ofrece muy útil. Para usar autenticación básica usando cuentas de usuario de un archivo de texto, busque en su directorio {jetty.home}/demo-base/etc. Copie estos dos archivos en su carpeta {jetty.base}/etc: realm.properties, test-realm.xml

Jetty no cargará estos archivos a menos que así lo indique. Esto puede hacerse añadiendo el siguiente texto a la start.ini o cualquier archivo * .ini en su {} jetty.base carpeta /start.d:

# Create and configure the test realm 
etc/test-realm.xml 
jetty.demo.realm=etc/realm.properties 

Por último, crear un archivo web.xml (si no hecho ya) e inserte el ejemplo proporcionado por @ sstendal/@ Torsten en su respuesta anterior. Utiliza el mismo nombre real que el ejemplo de base de demostración de la distribución de embarcadero, por lo que debería funcionar. Reinicie el muelle e intente acceder a cualquiera de sus recursos web. Su navegador o cliente debe pedirle credenciales. Usuario usuario/contraseña, por ejemplo.