Seguridad Web Api Tokens
Vamos a explicar como como crear seguridad en nuestra Web Api a través de Tokens. Para ello nuestra API expondrá un endpoints (URLs de un API que responde a una petición) el cual se le pasará unas credenciales de user y password para obtener un Token. Evitando tener que meter las credenciales ya que usaremos el Token asignado
Lo primero será crear un nuevo proyecto MVC vacío marcando la casilla de web api
Sobre nuestros proyectos agregamos el Entity Framework además de los siguientes paquetes Nuget
Se utilizan los componentes OWIN para la creación de los Tokens OAuth como para su validación
Para nuestro ejemplo, crearemos sobre la carpeta Models la clase Usuarios mapeada
Nos crearemos en una carpeta que llamaremos data, nuestra clase context
La clase hereda de DBcontext y agregamos la cadena de conexión junto con el mapeo de la tabla usuarios
Crearemos una carpeta con la clase Repositorios
Aqui estarán los métodos que utilizaremos del api .
Utilizaremos tres métodos, que serán mostrar los usuarios, buscar por id e insertar uno nuevo
Además de otro que utilizaremos para la autorización del usuario
El siguiente paso será borrar el Global.asax ya que nos crearemos clase de inicialización Owin.
Para ello, agregamos un nuevo ítem y en el buscador ponemos OWIN dejando el nombre Startup
Dentro de la clase Startup copiamos la línea
la pegamos en AsemblyInfo.cs
En el web config agregamos este código en appSettings
Indicando que clase es la encargada de arrancar, en nuestro caso WebApiTokens
Nos creamos una carpeta Credentials y una clase Autorización, que será la capa Middleware encargada de validar el acceso y generar el token
La clase hereda de OAuthAuthorizationServerProvider
y tendremos que sobrescribir dos métodos. Uno que indicará si está el contexto validado
y otro que nos dirá, si le da credenciales al usuario
En el Startup de owin agregaremos un método para comprobar el acceso al token
Y otro método para configurar la clase owin
Sobre la carpeta Controllers agregamos un nuevo controlador
Dentro del controlador, pondremos que se necesite autorización cuando se quiera insertar y buscar por id, pero no para mostrar los usuarios
Si ejecutamos la aplicación y ponemos en la url nuestro localhost /api/controlador nos mostrara los usuarios
Comprobaremos nuestro api sin tener que crear un cliente que la consuma. Lo que si utilizaremos es una herramienta que haga la función del cliente y pueda realizar peticiones además de consultas de acción
Existen varias como Insomnio Rest, Postman o Fiddler. Para nuestro ejemplo utilizaremos Postman el cual nos lo descargaremos de su pagina
https://www.getpostman.com/downloads/
Una vez dentro, si ponemos el método Get y la url de nuestra aplicación con el del método libre, podremos sacar los datos de los usuarios
Para acceder al método de buscar e insertar con autorización, primero tendremos que logearnos para recuperar el token, pondremos en la herramienta
Donde api/login era la ruta que pusimos para recuperar el token en startup owin
En la parte del body pondremos los siguientes valores con
las credenciales correctas de nuestro usuario
Si pusiéramos el password incorrecto nos saltaría el mensaje que pusimos en la clase autorización credentials
Cuando el acceso es correcto se nos proporcionar la clave token
Si quisiéramos acceder a nuestro método con autorización sin el token, nos saldría esto
Para utilizar el método buscar por id pondremos en Headers, Autorization con el value de bearer (espacio) clave token, permitiendo el acceso al método
Lo mismo para insertar poniendo la ruta con el método post
Y en el body los parámetros a meter
Como resultado ya tendríamos la seguridad api a través de tokens en los métodos que queramos
¡Un Saludo!
Autor/a: Sergio González Bargueño
Curso: Microsoft MCSA Web Applications + Microsoft MCSD App Builder + Xamarin
Centro: Tajamar
Año académico: 2018-2019
Código / recursos utilizados / https://github.com/sergiogonbar/Seguridad-Web-Api-Tokens
Linkedin :http://www.linkedin.com/in/sergio-gonzález-bargueño-3a7baa119