Professional Documents
Culture Documents
16-2-2013
Actividades realizadas para implementacin de seguridad en los servicios de Licensing y Check Cashing se describen a continuacin:
Los certificados de confianza de base 64 o tambin conocidos como certificados x509 son utilizados en nuestro caso para establecer un canal de comunicacin entre el servicio WCF y el cliente que consumir el servicio. Para la creacin de estos archivos en entornos de desarrollo se hizo uso del comando makecert proporcionado por Visual Studio.
En el parmetro -n indicaremos el nombre del certificado. El comando nos pedir las contraseas para las claves privada y pblica del certificado, y generar dos ficheros, uno con la clave privada (extensin .pvk) y otro con el certificado (extensin .cer).
A continuacin tendremos que instalar el certificado generado. Abrimos una consola de administracin (Inicio - Ejecutar - MMC) y realizamos los siguientes pasos:
1. Men File -> Add/Remove Snap-in. Click en Add 2. Seleccionar Certificates y hacer click en Add 3. Seleccionar la opcin de "Computer account", para que el certificado est disponible para todos los usuarios, y pulsar Next 4. Dejar seleccionado "Local computer: (the computer this console is running on)" y pulsar Finish. Cerrar los dilogos que queden abiertos 5. En el panel de la izquierda, expandir el nodo Certificates (Local Computer) y dentro de l la carpeta "Trusted Root Certification Authorities" 6. Click derecho sobre la subcarpeta Certificates -> All Tasks -> Import 7. En la pantalla de "File to Import", click en Browse y abrir el fichero .cer que habamos generado 8. En la pantalla "Certificate Store" dejar seleccionado el valor predeterminado
Antes de continuar cabe destacar que es necesario habilitar los permisos de lectura, escritura al certificado desde la consola MMC en el directorio Personal.
Una vez hecho lo anterior procedemos a instalar el certificado usando otra vez la consola de Visual Studio y ejecutando la siguiente instruccin:
makecert -sk <<Nombre nico del certificado>> -iv MiEntidadCertificadora.pvk -n "CN=<<Nombre de la mquina>>" -ic MiEntidadCertificadora.cer -sr localmachine -ss my -sky exchange pe
Se nos pedir la contrasea de la clave privada que habamos introducido previamente al generar el certificado de la entidad certificadora raz. Con este comando aadiremos al almacn de certificados de la mquina un certificado que nos servir para cifrar la comunicacin de nuestro servicio. En este caso no necesitamos instalar este certificado en los clientes ya que obtendremos una copia codificada en base64 durante la generacin del proxy.
Los certificados se estn guardando en el directorio App_Data del directorio del proyecto WCF Service Application.
Creacin de clase para verificar que los usuarios existan en la base de datos correspondiente.
Se implementa un mtodo que recibe el usuario y contrasea del usuario e invoca a un mtodo en la lgica de negocios que verifica que existan en la base de datos el usuario y contrasea correspondiente.
Configuracin del archivo web.config del WCF Service Application para habilitar el uso de certificados de confianza y la autenticacin personalizada usando la clase creada anteriormente.
Adems de lo que dice el encabezado de esta actividad, se tiene que definir el servicio que consumir.
<service name="LicensingSL.LicensingService" behaviorConfiguration="WSSecurityBehavior"> <endpoint address="LicensingSL" binding="wsHttpBinding" contract="LicensingSL.ILicensingService" bindingConfiguration="WSSecurityBinding"/> <endpoint binding="wsHttpBinding" name="mex" contract="IMetadataExchange" /> <host> <baseAddresses> <add baseAddress="http://localhost:8080"/> <add baseAddress="net.tcp://localhost:8080"/> </baseAddresses> </host> </service>
A continuacin definimos dentro del serviceBehaviors las credenciales del servicio, aqu se indica que vamos a utilizar un certificado y el tipo de autenticacin.
<serviceCredentials> <serviceCertificate findValue="iQuelo" storeLocation="LocalMachine" storeName="My" <userNameAuthentication userNamePasswordValidationMode="Custom" customUserNamePasswordValidatorType="LicensingSL.LicUsernamePasswordVa lidator, LicensingSL"/> </serviceCredentials> </behavior> </serviceBehaviors> x509FindType="FindBySubjectName"/>
Por ultimo indicamos que el tipo de binding es wsHttpBinding, el cual es ideal para entornos Internet y especificamos que el modo de la seguridad es por mensaje y que las credenciales de dicho mensaje son por usuario.
bindings> <wsHttpBinding> <binding name="WSSecurityBinding"> <reliableSession enabled="true" ordered="true" /> <security mode="Message"> <message clientCredentialType="UserName"/> </security> </binding> </wsHttpBinding> </bindings>
Cuando el servicio ha determinado que las credenciales proporcionadas son vlidas entonces se registra automticamente la nueva sesin activa de determinado usuario en la tabla sessions de la base de datos.
************************************************************************************* *************************************************************************************
A continuacin se describen las operaciones y configuracin realizadas en el lado del cliente para los proyectos Licensing y Check Cashing (consumidor del servicio)
Una vez realizada la configuracin de seguridad del lado del cliente procedemos a actualizar la referencia del servicio para que el proyecto cliente detecte los cambios del WSDL generado.
Client > ViewModel > Service Reference > ACT3LicensingService Click derecho > Actualizar referencia del servicio
Se cre una interfaz llamada ISecurityService en la cual se exponen los siguientes mtodos y eventos:
- ValidateUser: funcin para validar las credenciales de usuario y contrasea proporcionada por el cliente, recibe como parmetro el usuario y contrasea como campos de cadena de texto.
- ValidationSuccessful: evento que sirve para avisar a la vista que la llamada a la funcin ValidateUser se concluy con xito y los datos proporcionados son correctos.
- ValidationFailed: evento que sirve para avisar a la vista que la llamada a la funcin ValidateUser tuvo un error o una excepcin en el peor de los casos, recibe como parmetro un mensaje que proporciona un descripcin breve del error producido. Implementacin de la interfaz ISecurityService.
Se cre una clase llamada SecurityService la cual implementa la interfaz ISecurityService la cual extiende su comportamiento para poder establecer y validar la autenticacin del servicio ACTLicensingService.
Al hacer la llamada al mtodo ValidateUser primero se establecen las credenciales proporcionadas a las siguientes variables de la instancia del servicio:
Respectivamente, hecho esto se llama al mtodo de servicio CreateSession con los parmetros de usuario y contrasea proporcionada, para poder crear una sesin dentro del servidor.
Nota: El cliente del servicio debe de llamar al mtodo de servicio CreateSession antes de cualquier otro mtodo, esto por motivo de seguridad el cual asegura que si llama otro mtodo antes lanza una excepcin SOAP, al finalizar la sesin se debe de llamar al mtodo de servicio CloseSession para cerrar la sesin actual en el servidor.
Dentro del proyecto de interfaz grfica se encuentra un formulario de inicio de sesin este aparece antes que cualquier otra presentacin, contiene dos textbox para proporcionar usuario y contrasea y un botn para validar dichas credenciales.
Al presionar el botn Login se llama al mtodo ValidateUser de la interfaz ISecurityService para validar las credenciales proporcionadas, mediante a la suscripcin de los eventos de dicha interfaz se informa al cliente del proceso de validacin.
Workflow.