<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
 
  <title>Binoid Verses</title>
  <subtitle>Apuntes, ideas y tecnologías emergentes muy personales</subtitle>
  <link href="http://binoid.org/blogs/verses/" rel="self" />
  <link href="http://binoid.org/" />
  <updated>2010-04-15T18:26:17+02:00</updated>
  <author>
    <name>BINOID</name>
    <email>info@binoid.com</email>
  </author>


  <id>http://binoid.org/</id>
  
  <entry>
    <title>CAS + Política de Expiración de Passwords en LDAP</title>
    <link href="/blogs/verses/posts/2010/03/15/cas-+-ldap-expiración-de-passwords.html" />
    <id>tag:binoid.org,2010-03-15:1268668640</id>
    <updated>2010-03-15T16:57:20+01:00</updated>
    <content type="html">&lt;h1 id=&quot;post-title&quot;&gt;CAS + Política de Expiración de Passwords en LDAP&lt;/h1&gt;
&lt;h3 id=&quot;post-date&quot;&gt;escrito el 15-03-2010 a las 16:57&lt;/h3&gt;
&lt;p&gt;Funciona a partir de la versión de CAS 3.3.5&lt;/p&gt;
&lt;h3&gt;Casos&lt;/h3&gt;
&lt;p&gt;La política de expiración de contraseñas a través de CAS con LDAP, maneja los siguientes 4 casos:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;strong&gt;Password Warning&lt;/strong&gt;&lt;br /&gt;
  Muestra un mensaje de aviso al usuario tras hacer login, antes de redireccionarlo, en el que le avisamos que su contraseña expirará en X días&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;strong&gt;Password Expired&lt;/strong&gt;&lt;br /&gt;
  La contraseña ha expirado. Mostramos un mensaje de error al usuario, y le permitimos al usuario cambiar su clave. Actualmente, le pondremos un enlace para que vaya a nuestro interfaz de cambio de clave. En futuras versiones (&amp;gt; 3.3.5), teóricamente, CAS soportará un interfaz de cambio de clave.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;strong&gt;Account Disabled&lt;/strong&gt;&lt;br /&gt;
  La cuenta del usuario ha sido deshabilitada por parte del administrador. Mostramos un error, en el que le decimos que el usuario ha de ponerse en contacto con el centro de soporte para volver a tener acceso.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;strong&gt;Account Locked&lt;/strong&gt;&lt;br /&gt;
  La cuenta ha sido bloquedada por realizarse gran cantidad de intentos de autenticación fallidos. El usuario habrá de esperar un tiempo prudencial para poder volver a introducir sus credenciales.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Atributos LDAP&lt;/h3&gt;
&lt;p&gt;Atributos que entran en juego para la aplicación de políticas de expiración de contraseñas con CAS y LDAP:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;strong&gt;passwordchangedtime&lt;/strong&gt;&lt;br /&gt;
  Fecha-Hora de la última vez que cambiamos la contraseña&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;strong&gt;passwordwarningdays&lt;/strong&gt;&lt;br /&gt;
  Número de días que avisamos al usuario antes de que la contraseña expire. Por defecto, CAS establece 30 días (1 mes) si el atributo no está definido.&lt;/li&gt;
&lt;/ul&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;strong&gt;Passwordexpiredays&lt;/strong&gt;&lt;br /&gt;
  Número de días que una contraseña es válida. Por defecto, CAS establece 180 días (6 meses) si el atributo no está definido.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;Enlaces de interés&lt;/h4&gt;
&lt;ul&gt;
	&lt;li&gt;El schema está basado en el borrador de la RFC &lt;a href=&quot;http://tools.ietf.org/html/draft-behera-ldap-password-policy-09&quot;&gt;draf-behera-ldap-password-policy-09&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://linux.die.net/man/5/slapo-ppolicy&quot;&gt;ppolicy overlay&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.openldap.org/software/man.cgi?query=slapo-ppolicy&amp;amp;sektion=5&amp;amp;apropos=0&amp;amp;manpath=OpenLDAP+2.3-Release&quot;&gt;slapo-ppolicy man page&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.symas.com/blog/?page_id=66&quot;&gt;Managing Password Policies in the Directory&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.zytrax.com/books/ldap/ch6/ppolicy.html&quot;&gt;OpenLDAP password policy overlay&lt;/a&gt; &amp;larr; Aquí está el schema&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Vistas&lt;/h3&gt;
&lt;p&gt;El uso de este addon dentro de CAS, nos introduce cuatro nuevas vistas por plantilla (template), equivalentes a los cuatro casos posibles con los que contamos. Dichos interfaces  habremos de personalizarlos para que se ajusten a nuestra imagen corporativa, tanto a nivel estético como informativo.&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;casAccountDisabledView.jsp&lt;/li&gt;
	&lt;li&gt;casAccountLockedView.jsp&lt;/li&gt;
	&lt;li&gt;casExpiredPassView.jsp&lt;/li&gt;
	&lt;li&gt;casWarnPassView.jsp&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Instalación de política de expiración de contraseña&lt;/h3&gt;
&lt;ol&gt;
	&lt;li&gt;Descargamos CAS 3.3.5&lt;/li&gt;
	&lt;li&gt;Descargamos &lt;a href=&quot;http://www.ja-sig.org/wiki/download/attachments/26149328/cas-server-support-ldap-pwd-expiration-3.3.5.tar.gz?version=1&quot;&gt;cas-server-support-ldap-pwd-expiration-3.3.5.tar.gz&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;Descomprimimos el archivo recién descargado en el directorio de CAS&lt;/li&gt;
	&lt;li&gt;Accedemos a la carpeta creada, cas-server-support-ldap-expiration, y ejecutamos el comando: &lt;em&gt;mvn package install&lt;/em&gt;&lt;/li&gt;
	&lt;li&gt;Una vez realizado esto vamos a nuestro overlay de Maven 2, y añadimos la siguiente dependencia en nuestro fichero &lt;em&gt;pom.xml&lt;/em&gt;&lt;br /&gt;
&lt;pre&gt;&lt;br /&gt;
&lt;code&gt;
  &amp;lt;!-- LDAP password expiration --&amp;gt;
  &amp;lt;dependency&amp;gt;
    &amp;lt;groupId&amp;gt;ldap-pwd-expiration&amp;lt;/groupId&amp;gt;
    &amp;lt;artifactId&amp;gt;cas-server-support-ldap-pwd-expiration&amp;lt;/artifactId&amp;gt;
    &amp;lt;version&amp;gt;3.3.5&amp;lt;/version&amp;gt;
    &amp;lt;type&amp;gt;war&amp;lt;/type&amp;gt;
    &amp;lt;/dependency&amp;gt;
&lt;/code&gt;&lt;br /&gt;
&lt;/pre&gt;&lt;/li&gt;
	&lt;li&gt;Copiamos el fichero &lt;em&gt;passwordWarningcheck.xml&lt;/em&gt; desde  &lt;em&gt;cas-server-support-ldap-pwd-expiration/src/main/webapp/WEB-INF/spring-configuration/&lt;/em&gt; a nuestro overlay (&lt;em&gt;mi_overlay/src/main/webapp/WEB-INF/spring-configuration/&lt;/em&gt;). Debemos personalizarlo&lt;sup class=&quot;footnote&quot;&gt;&lt;a href=&quot;#fn1&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;, diciéndole quién es nuestro servidor LDAP, y el valor por defecto de los atributos LDAP.&lt;/li&gt;
	&lt;li&gt;Si hemos tocado previamente los ficheros siguientes, hemos de fijarnos cómo se han generado los nuevos:&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
	&lt;li&gt;cas-servlet.xml&lt;/li&gt;
	&lt;li&gt;login-webflow.xml&lt;/li&gt;
	&lt;li&gt;messages.properties&lt;/li&gt;
	&lt;li&gt;protocol_views.properties&lt;/li&gt;
&lt;/ul&gt;
&lt;p class=&quot;footnote&quot; id=&quot;fn1&quot;&gt;&lt;sup&gt;1&lt;/sup&gt; Podríamos crear variables en el cas.properties, y después desde  passwordWarningcheck.xml, simplemente utilizarlas. De este modo, si cambiamos de servidor LDAP, solamente debemos cambiar un fichero y volver&lt;/p&gt;
&lt;h3&gt;Más información&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.ja-sig.org/wiki/display/CASUM/LDAP+Password+Policy+Enforcement&quot;&gt;http://www.ja-sig.org/wiki/display/CASUM/LDAP+Password+Policy+Enforcement&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;&lt;a href=&quot;http://www.ja-sig.org/wiki/display/CAS/Expired+Password+Integration&quot;&gt;http://www.ja-sig.org/wiki/display/CAS/Expired+Password+Integration&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry>
  
  <entry>
    <title>RSRuby y Ruby On Rails</title>
    <link href="/blogs/verses/posts/2009/11/26/rsruby-y-ruby-on-rails.html" />
    <id>tag:binoid.org,2009-11-26:1259257656</id>
    <updated>2009-11-26T18:47:36+01:00</updated>
    <content type="html">&lt;h1&gt;&lt;b&gt;RSRuby + RoR&lt;/b&gt;, o cómo utilizar R desde Ruby on Rails&lt;/h1&gt;
&lt;h3 id=&quot;post-date&quot;&gt;escrito el 26-11-2009 a las 18:47&lt;/h3&gt;
&lt;h3&gt;Cómo instalar RSRuby en Ubuntu&lt;/h3&gt;
&lt;p&gt;Lo primero que debemos instalar es el núcleo propio de R:&lt;/p&gt;
&lt;div class=&quot;CodeRay&quot;&gt;
&lt;pre&gt;&lt;span class=&quot;no&quot;&gt;1&lt;/span&gt;   sudo apt-get install r-base-core
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;RSRuby es una gema de Ruby, así que tendremos que tener Rubygems instalado:&lt;/p&gt;
&lt;div class=&quot;CodeRay&quot;&gt;
&lt;pre&gt;&lt;span class=&quot;no&quot;&gt;1&lt;/span&gt;   sudo gem i rsruby --with-R-include=/usr/share/R/include --with-R-lib=/usr/lib/R/lib
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Definimos una variable de entorno desde la consola, o podemos definirla en nuestro .bashrc&lt;/p&gt;
&lt;div class=&quot;CodeRay&quot;&gt;
&lt;pre&gt;&lt;span class=&quot;no&quot;&gt;1&lt;/span&gt;   export R_HOME=/usr/lib/R
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Probamos que todo está funcionando bien:&lt;/p&gt;
&lt;div class=&quot;CodeRay&quot;&gt;
&lt;pre&gt;&lt;span class=&quot;no&quot;&gt;1&lt;/span&gt; $ irb
&lt;span class=&quot;no&quot;&gt;2&lt;/span&gt; irb(main):001:0&amp;gt; require 'rsruby'
&lt;span class=&quot;no&quot;&gt;3&lt;/span&gt; =&amp;gt; true
&lt;span class=&quot;no&quot;&gt;4&lt;/span&gt; irb(main):002:0&amp;gt; r = RSRuby.instance
&lt;span class=&quot;no&quot;&gt;5&lt;/span&gt; =&amp;gt; ##, &amp;quot;helpfun&amp;quot;=&amp;gt;#, &amp;quot;help&amp;quot;=&amp;gt;#, &amp;quot;NaN&amp;quot;=&amp;gt;NaN, &amp;quot;FALSE&amp;quot;=&amp;gt;false, &amp;quot;TRUE&amp;quot;=&amp;gt;true, &amp;quot;F&amp;quot;=&amp;gt;false, &amp;quot;NA&amp;quot;=&amp;gt;-2147483648, &amp;quot;eval&amp;quot;=&amp;gt;#, &amp;quot;T&amp;quot;=&amp;gt;true, &amp;quot;parse&amp;quot;=&amp;gt;#}, @proc_table={}, @class_table={}, @default_mode=-1, @caching=true&amp;gt;
&lt;span class=&quot;no&quot;&gt;6&lt;/span&gt; irb(main):003:0&amp;gt; 
&lt;span class=&quot;no&quot;&gt;7&lt;/span&gt; 
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;A partir de ahora, ya podemos empezar a utilizar RSRuby.&lt;/p&gt;
&lt;h3&gt;Algunos enlaces interesantes&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href='http://github.com/alexgutteridge/rsruby/'&gt;Repositorio de RSRuby&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href='http://web.kuicr.kyoto-u.ac.jp/~alexg/rsruby/manual.pdf'&gt;Manual de RSRuby&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href='http://nsaunders.wordpress.com/2009/05/20/baby-steps-with-rsruby-in-rails/'&gt;Baby steps with RSRuby in Rails&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href='http://nsaunders.wordpress.com/2009/07/24/rsruby-and-rails-revisited/'&gt;RSRuby and Rails revisiteda/a&amp;gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href='http://ananelson.com/said/on/2008/04/24/r-on-rails-with-rsruby/'&gt;R on Rails with RSRuby&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href='http://rubyforscientificresearch.blogspot.com/'&gt;Ruby for scientific research&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content>
  </entry>
  
  <entry>
    <title>Revisión de SVN en Ruby on Rails</title>
    <link href="/blogs/verses/posts/2009/11/18/revisión-de-svn-en-ruby-on-rails.html" />
    <id>tag:binoid.org,2009-11-18:1258507287</id>
    <updated>2009-11-18T02:21:27+01:00</updated>
    <content type="html">&lt;h1 id=&quot;post-title&quot;&gt;Revisión de &lt;b&gt;SVN&lt;/b&gt; en Ruby on Rails&lt;/h1&gt;
&lt;h3 id=&quot;post-date&quot;&gt;escrito el 18-11-2009 a las 02:21&lt;/h3&gt;
&lt;p&gt;Ponemos esta línea en &lt;b&gt;environment.rb&lt;/b&gt; y ya podemos acceder desde cualquier sitio…&lt;/p&gt;
&lt;div class=&quot;CodeRay&quot;&gt;
&lt;pre&gt;  &lt;span class=&quot;co&quot;&gt;APP_VERSION&lt;/span&gt;  = &lt;span class=&quot;co&quot;&gt;IO&lt;/span&gt;.popen(&lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;svn info&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;).readlines[&lt;span class=&quot;i&quot;&gt;4&lt;/span&gt;]
&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Podemos hacerlo para GIT o SVN con &lt;a href='http://guides.rubyonrails.org/rails_on_rack.html' title='Rack'&gt;Rack&lt;/a&gt;, para versiones más modernas.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Más info:&lt;/b&gt; &lt;a href='http://sickill.net/blog/2009/06/01/rack-middleware-showing-git-or-svn-revision.html'&gt;http://sickill.net/blog/2009/06/01/rack-middleware-showing-git-or-svn-revision.html&lt;/a&gt;&lt;/p&gt;</content>
  </entry>
  
  <entry>
    <title>Verse No.1</title>
    <link href="/blogs/verses/posts/2009/11/18/verse-number-1.html" />
    <id>tag:binoid.org,2009-11-18:1258506653</id>
    <updated>2009-11-18T02:10:53+01:00</updated>
    <content type="html">&lt;h1 id=&quot;post-title&quot;&gt;Verse No.1&lt;/h1&gt;
&lt;h3 id=&quot;post-date&quot;&gt;escrito el 18-11-2009 a las 02:10&lt;/h3&gt;
&lt;p&gt;Empezamos posteando enlaces de allí y de acá en la serie&lt;/p&gt;
&lt;p&gt;request-log-analyzer – Un analizador de los logs de rails muy apañao&lt;br /&gt;
CSS Abstraction, Why? – Razones para empezar a utilizar SASS frente a las viejas CSS&lt;br /&gt;
efax – Gem para mandar faxes a través de Efax a 0,09 EUR/página… un poco caro&lt;br /&gt;
Learnivore – Un screencast aggregator con muchos videos de Ruby&lt;br /&gt;
Rails 2.3.4 Seeds – Nueva característica para añadir registros a la base de datos de forma rápida&lt;br /&gt;
AuthLogic + ActiveLDAP – Explicación poca…&lt;/p&gt;</content>
  </entry>
  
</feed>
