miércoles, 8 de octubre de 2014

Anotaciones Java

Hola

Esta entrada voy a explicar como crear  nuestras propias anotaciones java y usarlo. Las anotaciones Java aparecieron en la version 1.5 de java, seguro que lo habéis usado por ejemplo:

  • @Override
  • @SuppresWarning
  • @Deprecated
Para crear nuestro anotación tenemos que crear una interface pero un poco especial como podemos ver en ejemplo tenemos que poner la @ delante de la palabra interface.


@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnotacion{
String valorInicial() default "algo";
}

Vamos a analizar el codigo, lo primero el @Target es donde determinamos donde podemos usar nuestra anotación a nivel de clase, metodo, campos, etc. Los valores posibles son los siguientes:
  • ANNOTATION_TYPE
  • CONSTRUCTOR
  • FIELD  
  • LOCAL_VARIABLE 
  • METHOD  
  • PACKAGE 
  • PARAMETER  
  • TYPE
Como se puede ver el mismo nombre nos indica donde podemos usar nuestras anotaciones, tambien podemos usar combinaciones por ejemplo

@Target({ElementType.CONSTRUCTOR, ElementType.METHOD})

La siguiente linea analizar es @Retention determina cuanto tiempo deben estar disponibles los datos de la anotación, los valores posible son los siguientes:
  • SOURCE : Solo visible en source ignorada por el compilador y JVM
  • CLASS : El compilador lo puede ver y actuar pero es ignorada JVM
  • RUNTIME : La JVM puede ver la anotacion y utilizar en tiempo de ejecucion por reflection
Con esto ya tenemos nuestra anotación como podeis ver se puede asignar valores por defecto usando la palabra reservada default.

Como simpre esto se ve mejor con un ejemplo, tengo un ejemplo subido a github.com 

martes, 7 de octubre de 2014

Oauth 2.0 (seguridad nuestra Api Rest)

Hola

En esta entrega vamos a hablar Oauth (Open Authorization) es un protocolo abierto,
que permite autorización segura de una API de modo estándar y simple para aplicaciones de escritorio, móviles y web.

En como siempre vamos a explicar lo que es oauth version 2.0 y posteriormente un ejemplo. A continuación se muetra una imagen mostrando el baile de Oauth 2.0



El acceso de los clientes a su aplicación (1) y hace que la solicitud para acceder a un recurso protegido (2).
 El servidor de autenticación devuelve un token de acceso basado en las credenciales de usuario publicado (3).  Después, el usuario realiza una solicitud para acceder a los recursos con el token obtenido anteriormente (4).  Una vez que el token se valida, el servidor de recursos devuelve el recurso protegido a la aplicación cliente (5).

Asi se tiene una idea global del funcionamiento de Oauth 2.0, ahora vamos a ver un diagramas que muestra mas claro el funcionamiento








Este ejemplo muestra como sería usando grant_type "password y refresh_token", hay más opciones que no vamos a ver aquí pero si quereís más información.

Como véis la primera petición se envía la información de usuario, contraseña, client_id y password, la respuesta es el access_token y token_refesh. El access_token es el token que vamos a usar para poder acceder a los recursos, como podemos ver en la segunda petición.

Los tokens tiene un tiempo de duración, cuando accedemos a los recursos y obtenemos el mensaje “invalid_token” debemos solicitar un nuevo token usando el token_refresh que obtenimos anteriormente.





Como veis la petición de refresco del token es muy parecida a la de obtención de token (no enviamos el usuario y contraseña)

Como se puede ver es muy intuitivo el protocolo oauth 2.0 como siempre hay varias implementaciones de oauth 2.0:


  • Spring Oauth
  • Apache Oltu
  • Picketlink
El ejemplo que tenemos hemos usado Spring Oauth 2.0, como siempre esta subido a github.com

viernes, 8 de agosto de 2014

Full Stack Developer

Hola

Hoy voy hablar sobre un perfil que se esta demandado mucho en los últimos años, que es Full Stack Developer.¿Qué es un Full Stack Developer?

En pocas palabras "el puto amo", es decir una persona que sabe de todo y tiene un conocimiento medio ó alto de tecnologías, heramientas, paradigmas, metodologias, servidores, redes, etc y gran facilidad de aprender. ¡Casi nada!

En el mundo del desarrollo web (donde estoy actualemente trabajanado) son muchas las tecnologías y las herramientas que hay para el desarrollo web, dependiendo del tamaño del softtware se puede utilizar un conjunto de tecnologías y herremientas para su desarrollo.

Para un desarrollo pequeño o mediano este sería el stack tecnologico

y para un desarrollo grande


Como veis son un monton de tecnologías, falta las herremientas, metodologías, servidores, etc. como veis hay que saber de muchas cosas para poder ser un Full Stack Developer.¿Se puede ser un Full Stack Developer?

Sí, pero no se hace de noche de la mañana, se tarda varios años y siempre se tiene que estar actulizando, probando y evaluando. Como he dicho al principio para ser FSD (Full Stack Developer) tienes que ser el puto amo.

martes, 5 de agosto de 2014

Seguridad web (Métodos)

Hola

Una vez visto la teoría en que consistente la seguridad web, vamos a ver que métodos que tenemos para poder implementar nuestra seguridad en nuestras aplicaciones web JEE:

  • HTTP-BASIC
  • HTTP-DIGEST
  • FORM-LOGIN
  • CLIENT-CERTIFICATE-AUTENTICATION
  • CUSTOMER AUTENTICATION

Esta son los métodos que tenemos para implementar seguridad en nuestras aplicaciones la mas usuada de FORM-LOGIN (Formulario de logeo). Todos estos métodos no sirve para poner seguriad tambien para nuestra Api Rest excepto FORM-LOGIN y ademas podemos añadir una mas que esta cogiendo mucha fuerza en el mundo de Api Rest que es Oauth, el listado de seguridad sería para las Api Rest las siguientes:

  • HTTP-BASIC
  • HTTP-DIGEST
  • OAUTH
  • CLIENT-CERTIFICATE-AUTENTICATION
  • CUSTOMER AUTENTICATION

Como vemos hay muchos métodos para elegir e incluso podemos hacer el nuestro propio. Como siempre hay frameworks que nos facilita la vida para poder usar estos métodos de seguridad en nuestras aplicaciones, estos son algunos:

En las proxima entradas pondre ejemplos de algunos de los metodos de seguridad para nuestra aplicaciones y un resumen de la seguridad web.


miércoles, 30 de julio de 2014

Seguridad mundo web (Teoría)

Hola

En esta entrada voy hablar sobre la seguridad, durante este tiempo hemos visto como relizar aplicaciones web, un punto muy importante en el desarrollo del mundo web es el tema de la seguridad. ¿Que consiste? 

Cuando hablamos de seguridad en el mundo web es restringuir o controlar el acceso a mi aplicación.
Como siempre un ejemplo se ve mejor, a continuación vamos a ver como funciona la seguridad de la página web 'Cosas':
Acabamos de entrar en la web de 'Cosas' página que se dedica al a venta de cosas, cuando accedemos a la web, la primera página nos ofrece la opción de buscar articulos y añadir a un carrito de compras.
Yas hemos elegido los productos que deseamos comprar y pulsamos el boton comprar y la aplicación nos pregunta ¿Qué si ya tenemos una cuenta?. Al ser la primera no tenemos y decimos que no y  nos ofrece la posibilidad de crear una cuenta y procedemos a crear una cuenta rellenado el formulario con nuestros datos personales, direccion, etc.

Una creada la cuenta, pagina web cambia, es decir, tiene el mismo aspecto pero sale más opciones que antes no había, un avatar, nuestro nombre de usuario, opción de ver configuración, opción de ver pedidos, boton de cerrar sesión, etc y por último terminamos nuestra comprar.

El adminitrador de la página web 'Cosas' entra cada día para ver si hay pedidos para relizar los paquetes enviarlos a sus compradores, el administrador entra a 'Cosas' pulsa el boton acceso que le aparece una página que le piden sus credenciales. Una vez que el administrador introduce sus credenciales obtiene una pagína web parecida al usuario que ha realizado la compra pero con más opciones.

El administrador entra el opción de ver pedidos, puede ver y gestionar los pedidos realizados por los usuarios, el administrador busca los pedidos con estado nuevo, una vez que ha realizado el pedido y enviado a la empresa de mensajería. El administrador cambia el estado del pedido a enviado y cierra su sesión.

El usuario que ha relizado la compra entra a la página 'Cosas' para ver el estado de su pedido. el usuario entra a 'Cosas' y pulsa el boton acceso que le aparece una página que le piden sus credenciales y poesteriormente elige la opción 'ver pedidos', donde tiene un historico de sus pedidos y el estado de cada pedido, en su caso encuentra que su pedido se encuentra en estado 'enviado'.

Como véis es un caso muy general que en mundo web este ejemplo. De este ejemplo vamos analizador para obtener la caracteristicas de la seguridad que tiene implementada. Lo primero que podemos abstraer son los distintos tipos de usuarios:
  •  Anónimo
  •  Usuario
  •  Administrador
Otra cosa que podemos abstraer es que hay usuario que estan autenticados (logeados) y no autenticados:
  • No autenticados: Anónimo.
  • Autenticados :  Usuario y Administrador.
Si seguimos analizando nuestro ejemplo, sí estan autenticados el usuario y dependiendo de quien sea puede ver más o menos opciones en la página web.
  • Permisos para tipos Usuario
  • Permisos para tipos Administrador
Con esto ya tenemos analizado el sistema de seguridad de la página web 'Cosas', como se puede ver la seguridad el mundo web esta formado por:
  • Tipos de Usuarios
  • Permisos de Usuarios
La seguridad web consiste:

 1º Autenticación (Obtener el tipo de usuario)
 2º Autorización para ver tal cosas (Ver los permisos de pendiento del tipo de usuario)



Una vez visto la teoría de la seguridad web vamos a explicar los distintos técnicas que tenemos de de implantar seguridad en nuestras aplicaciones web y api rest.

miércoles, 23 de julio de 2014

Ejemplo de Backbone

Despues de ver la distintas clase de Backbone y sus caracteristicas, procedemos para hacer un pequeño ejemplo completo con todos los componentes de Backbone. A ver el ejemplo se ha realizado con la herramientas y tecnologias:
  • BackEnd  RestGenerator para generar Api Rest (JAX-RS, Spring, Mybatis, H2)
  • FrontEnd Html5, CSS3, Backbone, Jquery, Underscore
Como siempre el ejemplo esta publicado en github y con la explicación de como usarlo. Aqui tenéis un resumen de lo que hemos visto de Backbone.


Backbone (Router)

Router

Las routers son las encargadas de enrutar las URLs de nuestras aplicaciones


 Base = Backbone.Router.extend({
 routes : {
  "" : "root",
  "usuario/:id" : "usuarioSingle"
 },
 root : function () {
  console.log('Estoy en root');
 },
 usuarioSingle : function (id) {
  console.log('Estoy en un usuario '+id);
 }
});

 Backbone.history.start({
  silent : false //Para que salte el evento
 });

Vamos a explicar un poco esta clase para compreder su funcionamiento.

Routes

Para ello se define un objeto hash routes que contendrá todas las rutas que se atenderán, debiendo contener al menos una.

Con esto tenemos la base para crear rutas en backbone, os envito a ver todos los métodos que tiene la clase Route de Backbone.