Acabamos de finalizar el lanzamiento del repositorio Maven para los proyectos en Java que quieran trabajar con la tecnología de PAPI. Maven es una herramienta de software para la gestión de proyectos desarrollados en Java. Una de sus principales características es la posibilidad de definir dependencias de otras librerías Java externas, siendo capaz de instalarlas y utilizarlas en nuestros proyectos.
Para utilizar el repositorio Maven de PAPI, utilizaremos la siguiente configuración:
<repository>
<id>papimaven</id>
<name>papi maven repository</name>
<url>https://forja.rediris.es/svn/papi-ee/trunk/maven/</url>
</repository>
Como está bajo el protocolo https, tendréis que tener importado el certificado digital de su servidor web. Podéis hacerlo de la siguiente manera:
echo |openssl s_client -connect forja.rediris.es:443 2>&1 |sed -ne ‘/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p’ | keytool -import -trustcacerts -alias forja -keystore $JAVA_HOME/lib/security/cacerts -storepass changeit -noprompt
Por ahora hay 4 módulos disponibles:
Nosotros ahora mismo lo estamos utilizando para nuevos desarrollos basados en PAPI que ya os iremos contando en otras entradas del blog…
Los servicios web que utilizan SOAP para el envío de mensajes han tenido la suerte de contar con la especificación Web Services Security (WS-SEC), la cual les permite incluir tokens de seguridad en la cabecera SOAP.
Mensaje SOAP con WS-SEC
Los token de seguridad más comunes en WS-SEC son:
De esta forma, se pueden proteger servicios web clásicos sin ningún problema de interoperabilidad, ya que existen numerosas implementaciones de WS-SEC para casi cualquier tipo de lenguaje de programación.
Para el caso de un escenario donde tenemos servicios web tipo REST, nos encontramos con un gran problema ya que el estándar WS-SEC no puede ser aplicado, ya que al usar peticiones HTTP estándares no existía forma de incluir dichos token de seguridad sin modificar los parámetros de cada petición, y no existe ningún estándar que cubra la necesidad de enviar tokens de seguridad en dicho escenario. Aunque el token de nombre de usuario (o Username Token) de WS-SEC podría mapearse sin muchos problemas al uso de HTTP Auth, si es cierto que no existe ninguna solución si nuestra arquitectura utiliza tokens basados en certificados digitales o aserciones SAML.
Afortunadamente, la semana pasada se publicó un draft a través de la IETF para la autenticación HTTP basada en tokens. Este draft busca dar una solución a la autenticación a través de tokens de OAuth, pero ofrece un modelo genérico que puede ser aprovechado por otro tipo de tokens más clásicos como los comentados más arriba.
Así, basándonos en dicho draft, una forma de proteger nuestros servicios web tipo REST utilizando certificados digitales quedaría tal como describe el siguiente ejemplo:
GET /resource/1 HTTP/1.1
Host: example.com
Authorization: Token token=»h480djs93hd8…yZT4=»,
class=»x509″,
method=»rsassa-pkcs1-v1.5-sha-256″,
nonce=»dj83hs9s»,
timestamp=»137134190″,
auth=»djosJKDKJSD8743243/jdk33klY=»
Para el caso de querer proteger el servicio web tipo REST utilizando aserciones SAML, tendríamos una petición de este estilo:
GET /resource/1 HTTP/1.1
Host: example.com
Authorization: Token token=»h480djs93hd8…yZT4=»,
class=»samlv2.0″,
method=»none»
Los pasados días 3 al 5 de Noviembre de 2009 se celebró la novena edición de Internet Identity Workshop. Aunque la agenda estaba llena de temas muy interesantes, con numerosas sesiones que había en relación a OpenID, destaca la que se llamaba OpenID v.Next, que coordinaba Dick Hardt y David Recordon, donde se terminó de perfilar los principales aspectos de la próxima especificación de OpenID 3.
La principal característica de OpenID 3 es que no será compatible 100% con la actual especificación de OpenID 2. No habrá que asustarse, la base será la misma pero al igual que hay problemas de interoperabilidad entre OpenID 1 (¿todavía lo usa alguien?) y OpenID 2, habrá algunos ajustes en el protocolo con la nueva versión. Además de esta evolución, han publicado una lista con las novedades en las que se trabajará y cuántos votos obtuvo en la sesión:
La foto es propiedad de Silverisdead tomada mientras asistía a la sesión.
Las contraseñas (o passwords, como dirían nuestros amigos los anglosajones) son parte de nuestra vida desde mucho antes que Internet se colara en nuestras vidas. En 1967, John Shepherd-Barron inventó el concepto de PIN (Persona Identification Number o Número de identificación personal) cuando trabajaba en el primer cajero de un banco londinense. Su primera idea fue utilizar una contraseña de 6 dígitos, pero al hablarlo con su mujer ella prefería 4 dígitos, ya que le resultaba más cómodo de recordar.
Pero a raíz de la popularización de Internet, cada vez más utilizamos un par «nombre de usuario» y «contraseña» para leer nuestro correo, escribir un comentario en un blog o ver las fotos de nuestra familia.
Como el nombre de usuario es algo que nos identifica dentro de la comunicación social que ocurre en Internet no existe ninguna recomendación a la hora de definirlo desde el punto de vista de la privacidad, exceptuando aquellas fundamentales como no utilizar nuestro DNI.
Con respecto a la contraseña, existen muchas recomendaciones que debemos leer y aplicar siempre cuando tengamos que establecer una nueva contraseña, como las dadas por el equipo de seguridad de Microsoft o por Inteco. Como resumen, nosotros en PRiSE recomendamos las siguientes directrices:
Una manera bastante óptima de generar una contraseña segura es utilizar una frase que nos resulte familiar, como el de alguna canción favorita, y utilizar la primera letra de cada palabra. Sobre dicha cadena de primeras letras, reemplazamos algunas vocales o consonantes por números o caracteres especiales que visualmente no nos resulte diferente a la palabra que obtuvimos al coger cada primera letra de cada palabra. Por ejemplo, si nos basamos en la canción «La casa por el tejado» de Fito y Fitipaldis:
La casa por el tejado —> Lcpet —> L[p3t
Aunque lo más cómodo desde el punto de vista del usuario es tener una sola contraseña para todas las cuentas, ya que nos facilita recordarla y no tener que apuntarla en ningún post-it (nunca hagáis esto, ¿ok?), es mejor tener varias contraseñas, en función del uso que vayamos a darle. Obviamente lo ideal es tener una contraseña muy fuerte diferente para cada uno de los portales, pero si no compaginamos usabilidad con seguridad, el modelo termina siendo un fracaso.
En PRiSE creemos que sería conveniente que tuvieras los siguientes «tipos» de contraseñas:
Desgraciadamente, estas recomendaciones que damos en esta entrada no son aplicadas tantas veces como quisiéramos. A principios de Octubre nos enteramos de que se habían filtrado 10.000 contraseñas de cuentas de Hotmail por una persona anónima. Sobre dicha lista de contraseñas, se ha realizado un estudio estadístico, y podemos resaltar las siguientes conclusiones:
Tipos de contraseña
Caracteres en las contraseñas
Estas estadísticas demuestran que todavía queda mucho en la educación del usuario a la hora de que elijan contraseña. Aunque hay que decir a su favor que los bancos siguen haciendo un «favor» al mantener el PIN de 4 dígitos, ya que, ¿qué hay más seguro que un banco?
* La foto del artículo es propiedad de Amagill y está licenciado por Creative Commons Attribution