8 jun 2012

// // Comentar

Validar complejidad de claves de lado del cliente en ASP .NET

Muchas veces necesitamos en nuestros desarrollos obligar a que el usuario ingrese una clave con cierto nivel de complejidad por razones de seguridad, en este post, detallaré una forma fácil de poder implementar esto en una aplicación ASP .NET de lado del cliente, no solo validando que la clave sea compleja, sino que también indicando el nivel de complejidad mientras va escribiendo.

image

Introducción

Para poder ejemplificar esto, vamos a crear un formulario de cambio de clave, el cual tendremos estructurado como la imagen anterior, no consideraremos el código para hacer la validación de la clave anterior o el cambio de clave, únicamente nos centraremos en validar la complejidad de la nueva clave e indicarle esto al usuario.

Mostrando el nivel de complejidad

Para realizar esto, recurriremos al control PasswordStrength del Ajax Control Toolkit que nos permitirá establecer algunos parámetros de complejidad que vamos a requerir para la clave y según estos parámetros y criterios definidos nos irá mostrando en pantalla el nivel de complejidad que tiene la clave que estamos escribiendo.

<asp:TextBox runat="server" ID="txtNuevaClave" TextMode="Password" ValidationGroup="Enviar" />
<act:PasswordStrength ID="txtNuevaClave_PasswordStrength" runat="server" 
    Enabled="True" MinimumNumericCharacters="1" PrefixText="Complejidad: " 
    TargetControlID="txtNuevaClave" TextStrengthDescriptions="Baja;Media;Alta" 
    MinimumLowerCaseCharacters="1" PreferredPasswordLength="6" 
    RequiresUpperAndLowerCaseCharacters="True">
</act:PasswordStrength>

Este código nos permitirá ver el efecto que se aprecia en la imagen anterior al momento de digitar la nueva clave, para lo cual necesitamos configurar algunas propiedades:


MinimumNumericCharacters – Esto nos indica como mínimo cuantos caracteres numéricos debe tener la clave.
PrefixText – Es el prefijo que ira al momento de mostrarse la complejidad de la clave.
TargetControlID – Es el control al cual estará asociado esta validación.
TextStrengthDescriptions – Es la descripción que tendrán los distintos niveles de seguridad que consideremos, separados por ponto y coma.
MinimumLowerCaseCharacters – Esto nos indica como mínimo cuantos caracteres en minúscula se debe considerar, pero necesita de la propiedad RequiresUpperAndLowerCaseCharacters para tener efecto.
PreferredPasswordLength – Esto nos indica el tamaño mínimo requerido para considerar la clave en el ultimo nivel de validación, en el caso del ejemplo “Alta”, tener en cuenta que esto solo sirve para evaluar el nivel de complejidad, pero no valida el TextBox que tenga como mínimo esta cantidad de dígitos.
RequiresUpperAndLowerCaseCharacters – Esta propiedad sirve para activar las propiedades de mínimo minúsculas y mayúsculas requeridas.


Con esta configuración mínima, estamos pidiendo una clave que tenga al menos 6 dígitos, con una minúscula y un numero al menos.


Validando el nivel del complejidad


Ya anteriormente hicimos que se muestre el nivel de complejidad de una clave según los parámetros establecidos, pero esto no realiza una validación al momento de enviar estos datos, simplemente nos indica la complejidad que tiene lo que vamos escribiendo.


Entonces para validar la clave, haremos uso del control RegularExpressionValidator que si nos permitirá realizar esta validación con una expresión regular.



<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" 
    ControlToValidate="txtNuevaClave" 
    ErrorMessage="La clave debe ser como minimo de 6 digitos y al menos un número" 
    ForeColor="Red" 
    ValidationExpression="(?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{6,12})$" 
    ValidationGroup="Enviar">**</asp:RegularExpressionValidator>
<act:ValidatorCalloutExtender ID="RegularExpressionValidator1_ValidatorCalloutExtender" 
    runat="server" Enabled="True" TargetControlID="RegularExpressionValidator1">
</act:ValidatorCalloutExtender>

Aquí tenemos el control con extender del Ajax Control Toolkit agregado para que muestre el mensaje de forma mas amigable.


En este control básicamente configuramos el mensaje que debe mostrarse y la expresión regular que hará la misma validación de mínimo 6 caracteres alfanuméricos.


image


Con esto logramos exigirle al usuario un cierto nivel de complejidad para su clave y también indicarle el nivel de complejidad que va teniendo el texto que va digitando de una forma muy intuitiva.


Espero les sea de utilidad y si pueden aportar con otras formas alternativas, pues bienvenido.

Leer post completo

11 abr 2012

// // 3 comentarios

Publicación de aplicaciones ASP .NET con Informes en Microsoft Reporting

Si tenemos una aplicación web desarrollada en ASP .NET en la cual hemos creado reportes usando Microsof Reporting al momento de publicarlo en un servidor web nos va a pedir las librerías necesarias para ejecutarlo que son las siguientes:

  • Microsoft.ReportViewer.Common.dll
  • Microsoft.ReportViewer.WebForms.dll
  • Microsoft.ReportViewer.ProcessingObjectModel.dll

Estas librerías las podemos adjuntar en la carpeta bin de nuestra aplicación, siendo así, con las 2 primeras librerías no tendremos problema, ya que si vemos la referencia agregada en nuestro proyecto nos daremos cuenta que se encuentran en la ruta:

C:\Program Files (x86)\Microsoft Visual Studio 10.0\

Pero la última no figura en esa ruta, y si no lo copiamos con el proyecto, tendremos un error del tipo:

could not load file or assembly 'microsoft.reportviewer.processingobjectmodel version=10.0.0.0

Por este motivo es que se requiere, lo bueno es que si encuentra pero está registrada en el GAC, por lo que tendremos que copiarla de ahi, en esta ocasión les comparto una forma de hacerlo:

Copiarlo vía consola DOS


  1. Abrir la consola DOS (Presione Windows + R, luego escribir cmd y aceptar)
  2. Escribir el siguiente comando: cd C:\WINDOWS\assembly\GAC_MSIL\Microsoft.ReportViewer.ProcessingObjectModel
  3. Escribir el comando dir para listar los directorios que representan a las versiones para poder seleccionar la adecuada a nuestra aplicación, tendremos una lista similar a la que muestra la Figura 1.
  4. Escribimos el comando cd versionNumber, donde versionNumber representa una de las versiones que visualizamos en el comando anterior (ejemplo cd 10.0.0.0__b03f5f7f11d50a3a) presionamos enter y luego escribir el comando dir y deberíamos visualizar la librería que estamos buscando.
  5. Por ultimo solo nos queda copiar la librería en algún directorio, para ello escribimos el comando copy *.dll D:\Lib.
Figura 1: Lista de versiones de libreria de Microsoft Reporting

Con esto ya tendremos la última librería que podremos adjuntar a nuestra aplicación y poder visualizar los informes.

Espero les sea de utilidad.

 
Leer post completo