lunes, 30 de junio de 2014

Abreviaciones de Netbeans

Abreviaciones


Pdf de la pagina oficial: https://netbeans.org/project_downloads/www/shortcuts.pdf

jueves, 19 de junio de 2014

[JAVA EE] Autentificación de usuarios usando JAAS en aplicación web

Java Authentication and Authorization Service es una plataforma que permite a las aplicaciones de java crear ambientes seguros para las aplicaciones, los cuales puedes restringir que tipo de peticiones acepta en base a los encabezados HTTP y que usuarios tienen permisos.  

Lo que vamos a hacer es una pequeña aplicación implementada en Glassfish 4.0 y utilizando Netbeans en la cual en una aplicación web tendremos cuatro archivos jsp, uno de bienvenido a la aplicación (index.jsp), uno de login (login.jsp) que nos ayudara a pedir las credenciales de los usuarios, una de error (error.jsp) que se mostrara cuando el usuario no de las credenciales correctas y por ultimo tendremos una pagina inicial (index.jsp) puesta en una carpeta adicional (protegido) que permitira dar la bienvenida a los usuarios que fueron autentificados de manera correcta.

Empezamos creando una aplicación web para java utilizando Java EE 7 


Una vez creado tu proyecto procedemos a crear cada uno de los archivos  en este caso ya nos crea iun index, aunque no sea jsp porque depende la versión de netbeans puedemos dejarlo con el mismo codigo. En este caso el archivo index.jsp tendra el siguiente codigo

<!DOCTYPE html>

<html>
    <head>
        <title>TODO supply a title</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>
        <div>Bienvenido a mi aplicación </div>
    </body>
</html>

Damos botón derecho y creamos el archivo error.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>Error !</h1>
    </body>
</html>

 Damos clic derecho en web pages y ponemos Folder en este caso le pongo el nombre de protegido






Damos clic derecho en dicho folder creado y damos clic derecho new -> Jsp y creamos el index.jsp que nos indicara que ya estamos en un ambiente protegido

<!DOCTYPE html>

<html>
    <head>
        <title>TODO supply a title</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>
        <div>Bienvenido a entorno protegido </div>
    </body>
</html>

Por ultimo creamos en la carpeta de Web Pages el login.jsp que nos permitira hacer la autentificacion con el nombre del usuario y contraseña. El cuadro de texto del nombre debe llamarse j_username, el cuatro de texto debe de llamarse j_password por ultimo solo la acción del submit del formulario debe de llamar a j_security_check

Codigo de login.jsp

Listo!, Ahora solo tenemos que configurar nuestro sitio para esto damos clic derecho en el proyecto y agregamos el deployment descriptor que es quien manejara los parametros de los datos protegidos.

Primero le marcamos en el web.xml como se hara la autentificación

Luego posteriormente damos las restricciones para la carpeta que ese estara utilizando como protegida en el web.xml





Y por ultimo damos de alta los roles que son necesarios

Aquí muestro el web.xml completo



<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
          version="3.1">
    <!-- Configuracion de mi login -->  
    <login-config>            
        <auth-method>FORM</auth-method>
        <form-login-config>
            <form-login-page>/login.jsp</form-login-page>
            <form-error-page>/error.jsp</form-error-page>
        </form-login-config>            
    </login-config>      
       <!-- Configurar los roles de seguridad -->
       <security-role>
           <role-name>admin</role-name>
       </security-role>
       <!-- Vienen las restricciones de mi sitio -->
       <security-constraint>
           <display-name>Contexto Seguro</display-name>
           <web-resource-collection>
               <web-resource-name>admin</web-resource-name>
               <url-pattern>/protegido/*</url-pattern>            
           </web-resource-collection>
           <auth-constraint>
               <role-name>admin</role-name>
           </auth-constraint>
       </security-constraint>
       <!-- ............................. -->
    <session-config>                                
        <session-timeout>
            30
        </session-timeout>
    </session-config>
</web-app>


Ahora solo mapearemos los roles con los grupos de los usuarios ya que en el repositorio de datos estaremos trabajando con grupos, para eso ocupamos un xml que permita ese puente con el servidor en el caso de glassfish utilizamos glassfish-web.xml su codigo:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE glassfish-web-app PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Servlet 3.0//EN" "http://glassfish.org/dtds/glassfish-web-app_3_0-1.dtd">
<glassfish-web-app error-url="">
  <context-root>/jaas</context-root>
  <class-loader delegate="true"/>
  <jsp-config>
    <property name="keepgenerated" value="true">
      <description>Keep a copy of the generated servlet class' java code.</description>
    </property>
  </jsp-config>
  <security-role-mapping>
    <role-name>admin</role-name>
    <group-name>Users</group-name>        
</security-role-mapping>
</glassfish-web-app>

Por ultimo solo configuraremos un usuario, para esto ponemos en nuestro navegador la dirección
localhost:4848

Esto abrira el panel de configuración de Glassfish , para eso nos vamos a ir a la opcion de configuración -> Server config -> Seguridad -> Dominios -> file, es la autentificacion que tiene por default el servidor por lo que agregaremos un usuario.


Ahi agregamos un usuari, no ilvidemos que debe de ser el grupo Users porque es como lo mapeamos en el XML del glassfish

Con esto cada que vayamos a entrar a localhos:8080/mi proyecto/protegido automaticamente el servidor tratara de verificar que tienen una sesión activa si no la tiene lo mandara a login, el cual le pedira los datos de usuario y contraseña que son los que dio de alta, si los da erroneos lo mandara directamente a error.jsp, si los da correcto les permitira entrar. 


jueves, 5 de junio de 2014

Configurar Variables de entorno para Java en windows

Configurar Variables de entorno


  • En Windows, abra el cuadro de diálogo Environment Variables, entrando a propiedades del sistema -> Configuracion avanzada 

 



  • Configure la variable de entorno JAVA_HOME en el directorio donde instaló el JDK, por ejemplo: C:\Program Files\Java\jdk1.7.0_60. En Windows de 64 bits, la ruta predeterminada es C:\Program Files(x86)\Java\jdk1.7.0_60. Puede checarlo en sus propios archivos de los equipos
  
  • En la variable de entorno PATH, agregue %JAVA_HOME%\bin; ó  C:\Program Files\Java\jdk1.7.0_60\bin al principio de la cadena, no olvide el ";".  Haga clic en aceptar para guardar y cerrar el cuadro de diálogo Environment Variables.





  • Compruebe que las variables de entorno estén configuradas correctamente. Escriba java -version y asegúrese de que la versión de Java sea la misma que la versión que ha configurado en la variable de entorno: 
  • Abra una ventana del símbolo del sistema.
java version "1.7.0_60"
Java(TM) SE Runtime Environment (build 1.7.0_60-b07)
Java HotSpot(TM) Client VM (build 19.1-b02, mixed mode, sharing)

Nota: Puede añadir una mas si es que no la tiene con el nombre de ClassPath y valor un punto