jueves, 9 de agosto de 2018

Poner seguridad en un sitio de IIS con un usuario de windows

Como poner seguridad en un sitio de IIS con un usuario de Windows

En ocasiones es necesario no mostrar el contenido de un sitio web por razones de seguridad, privacidad, alguna estrategia de marketing o ninguna razón en específico.

Cuando se necesita asegurar un sitio con credenciales de usuario se puede utilizar un usuario y password de una cuenta  de windows con lo que se facilita la administración de la seguridad del sitio.

En IIS poner seguridad es una cuestión de configuración del sitio. Esto puede hacerse de una manera sencilla utilizando una cuenta de windows del mismo servidor.

Aquí muestro los pasos para ligar la seguridad de un usuario de windows a un sitio web en IIS.

1. Abrir IIS
2. Seleccionar el sitio web a modificar
3. Seleccionar la opción Authentication


4. Desactivar la opción Anonymous Authentication. Esto deshabitará que el contenido del sitio pueda ser accedido por cualquier persona.

5. Activar la opción Windows Authentication. Inmediatamente después de hacer esto el sitio web va a solicitar credenciales de windows cuando se intente acceder a través de un navegador de internet. Esto permitiría entrar al sitio con alguna cuenta de windows con los permisos requeridos.




6. Si no tienes el usuario, créalo en: Aministrative Tools > Computer management



7. Seleccionar el sitio web, click derecho Edit permissions. Seleccionar el tab Security y la opción de Editar para agregar al usuario deseado. Los permisos dependen de qué es lo que necesitas. Lo ideal es sólo lectura pero en mi caso voy a requerir que se realizan algunas tareas de ejecución así que dejaré valores por defecto.


8. Una vez hecho esto dar click en Aceptar y probar que podamos entrar con el usuario.

Dependiendo de la clase de contenido que estén mostrando dependerán los permisos que requieren otorgar.

Siempre es recomendado otorgar únicamente los permisos que el usuario requiere y no más. Así que definir estos es tarea del administrador.

Espero les sirva.



jueves, 28 de septiembre de 2017

Cómo pasar campo hexadecimal a string en Oracle

Cómo pasar campo hexadecimal a string en Oracle

Resulta que el día de ayer me pidieron buscar unas transacciones perdidas en una tabla de errores.

Acepte sin saber que el campo de la tabla que contiene la información del error está codificado en formato hexadecimal.

El campo está guardado como Raw bytes de acuerdo a la documentación de la tabla.

Además de esto el campo es tipo CLOB lo cual como saben puede tener cadenas muy grandes.

Y pues ahi me tienen buscando cómo pasar de hexadecimal a string en Oracle con algún query.

Al final di con una función de Oracle para pasar el campo que estaba como Raw bytes

SELECT UTL_RAW.CAST_TO_VARCHAR2('686f6c6121') 
FROM dual;

La misma cadena en mayúsculas producirá lo mismo

SELECT UTL_RAW.CAST_TO_VARCHAR2('686F6C6121') 
FROM dual;

Resultado:

hola!

Espero les sirva.


viernes, 21 de abril de 2017

IIS en windows 10

IIS administrator en windows 10

Estuve migrando unas aplicaciones web de mi máquina de desarrollo que tenía windows 7 hacia una nueva máquina con windows 10.
La pc con windows 10 no tiene IIS configurado por default por lo que tuve que habilitarlo para poder usarlo.

Les dejo aquí los pasos para instalarlo y poder utilizarlo en sus máquinas con windows 10.

Siempre es molesto hacer estas configuraciones cuando ya tienes que empezar a programar.

Solución.

1.- Click on Menu Inicio.
2.- Busca Activar características de windows (Turn windows features on or off)
3.- Selecciona Internet Information Services como en la imagen.


4.- Click en Aceptar.

A continuación tendrán IIS disponible en Windows 10. Fácil no?

Espero les sirva.






martes, 31 de enero de 2017

Primera carga lenta en aplicación web asp.net sobre IIS

Cómo arreglar problema con primer carga lenta en aplicación web asp.net sobre IIS

Para quienes hayan trabajado con versiones de IIS 7 en adelante, si han tenido la mala fortuna de tener que probar ustedes mismos su aplicación a fondo, se habrán topado con el problema de la primera carga lenta de su aplicación web.

Imaginen que su aplicación está lista para ser presentada al cliente final con un primer login con el usuario del cliente y Kaboom! falla el primer request de login. Así que este problema no es para menospreciarse.

Encontré varias soluciones en internet pero debido a mi falta de tiempo apliqué el que me pareció mejor. Aquí abajo les dejo los pasos.

Basicamente consiste en desactivar el "idle timeout"

Deben tener cuidado si tienen problemas con la memoria del servidor ya que esta opción es utilizada precisamente para liberar memoria cuando la aplicación no ha sido utilizada en cierto tiempo. Si no tienen problemas de memoria pueden aplicarla sin problemas.

Solución.

  1. Ir a IIS Manager
  2. Seleccionar Application Pools del lado izquierdo
  3. Seleccionar la Application pool que tienes ligada a tu aplicación web.
  4. En el panel derecho Actions selecciona Advanced Settings...
  5. En la ventana Advanced Settings, pon el Idle Time-out (minutes) en cero (0)
  6. Reinicia tu Application pool en IIS
  7. Reinicia tu aplicación web en IIS


Les dejo abajo imagen.



Espero les sirva.





domingo, 29 de enero de 2017

Probar stored procedure de Oracle con cursor de salida en SQL Developer

Cómo probar stored procedure de Oracle con cursor de salida en SQL Developer.

Estuve buscando encontrar un problema de performance relacionado con el tiempo de respuesta de una aplicación en el momento de hacer login.

Dado que la aplicación es externa sólo puedo verificar del lado de la base de datos.

Para esto decidí verificar el tiempo de respuesta del stored procedure que realiza el login a la aplicación y para esto me vi en la necesidad de llamar al stored procedure directo desde SQL Developer y ver el tiempo de respuesta.

El stored procedure tiene un parámetro de salida de tipo cursor en el que devuelve los datos del usuario registrado que está intentando acceder.

Un punto importante es que el cursor el stored procedure es dinámico por lo que devuelve el resultado de un query variable. Por lo tanto no puedo usar el tipo de registro de una tabla existente (Tabla%ROWTYPE)

La clave aquí es definir el tipo de registro que devuelve el cursor dinámico. Campo por campo deben definir el nombre y tipo tal cual el cursor devuelve. Si les falta o sobra alguno, no va a jalar.

Aquí abajo en negritas la variable registro es definida como IS RECORD y cada campo definido uno por uno para poder hacer el FETCH con el cursor sin que haya problemas.

Les dejo la firma del stored:

PROCEDURE MI_STORED (p_status OUT NUMBER,pocResultado OUT PKG_MI_PAQUETE.defcursor, p_email IN VARCHAR2,p_password IN VARCHAR2)

SQL para probarlo:

SET serveroutput ON;
DECLARE
v_status NUMBER;
v_resultado sys_refcursor;
TYPE registro IS RECORD (ID NUMBER,NOMBRE VARCHAR(60));
v_registro registro;

v_email VARCHAR2(60);
v_password VARCHAR2(30);
BEGIN
v_email:='correo@correo.com';
v_password:='micontrasena';
PKG_MI_PAQUETE.MI_STORED(v_status, v_resultado, v_email, v_password);
LOOP
FETCH v_resultado INTO v_registro;
EXIT WHEN v_resultado%notfound;
dbms_output.put_line('ID   –>' || v_registro.ID);
dbms_output.put_line('Nombre –>' || v_registro.NOMBRE);
END LOOP;
END;


Espero les sirva.

jueves, 26 de enero de 2017

Ver fecha con horas y minutos en SQL Developer

Cómo ver la fecha con horas y minutos en SQL Developer

Por default, las fechas en SQL Developer vienen únicamente en formato MM/DD/YYYY o algo similar sólo mostrando mes, día y año.

Esto es un problema si estás consultando algún campo de tipo fecha con horas y minutos y necesitas visualizar esa información.

Los campos DATE generalmente guardan horas, minutos, segundos y milisegundos por lo menos.

Solución.

Para poder ver la fecha con horas y minutos al ejecutar tus consultas, realiza los siguientes pasos en SQL Developer.

Menu: Tools > Preferences > Database > NLS

Una vez ahí, edita el parámetro Date Format:

DD-MON-RR HH:MI:SS

O algún otro formato que necesites. Por ejemplo:

YYYY-MM-DD HH24:MI:SS

Con esto ya podrás ejecutar consultas y ver las fechas con horas y minutos en SQL Developer.

Espero les sirva.

miércoles, 25 de mayo de 2016

Conectar SQL Developer a una base de datos remota

Cómo conectar Oracle SQL Developer a una base de datos remota.

En ocasiones es necesario consultar una base de datos Oracle en un servidor desde tu máquina local para no tener que conectarte al servidor directamente.

Al ingresar los datos de conexión en mi Oracle SQL Developer local y hacer clic en Test, tengo el siquiente mensaje de error:

Test failed: The Network Adapter could not establish the connection

Después de verificar que mi listener está prendido y mis datos de conexión son correctos, la otra opción que me faltaba es abrir el puerto 1521 desde el firewall del servidor.

El puerto 1521 es el puerto default de Oracle para permitir conexiones a la base de datos pero como este se puede cambiar, tal vez necesiten abrir otro dependiendo de su configuración.

Para abrir el puerto 1521 en el firewall de windows en su servidor, hagan lo siguiente.

1. Ir a Start - Administrative Tools - Windows Firewall with Advanced Security

2. Seleccionar Inbound Rules - New Rule. Llenar las siguientes opciones y hacer clic en OK.

Rule Type: Port
Protocolo and Ports: TCP
Specific local ports: 1521
Action: Allow the connection
Profile: Domain, Private, Public
Name: Oracle TCP 1521 (El nombre que prefieran aquí)

3. Así deben ver la nueva Inbound Rule al seleccionarla

Propiedades de Inbound Rule

Después de esto ya podrán conectarse con SQL developer a la base de datos remota y ver Status: Success al hacer clic en el botón de Test.

Conexión SQL developer

Espero les sirva.