Instalando nuestro propio token service (IdentityServer3)

Antes de comenzar con la instalación y configuración de nuestro servidor de token, es necesario repasar algunos conceptos que seran sumamente necesarios para comprender el flujo de trabajo. 

Cliente: 

No debemos confundir este termino con nuestros clientes finales. Cuando hablemos de clientes, vamos  a estar haciendo referencia a todas las aplicaciones que se conectan a nuestro servicio y que consumen nuestros tokens. 
A la hora de definir nuestros distintos clientes (nativo, web, user-agentetc), definiremos diferentes flujos (por lo general tendremos diferentes flujos de trabajo según nuestro tipo de clientes) 

Scope: 

Cuando hablamos de scope, estamos hablando del alcance de los recursos (como puede ser la dirección de email, el nombre). 
Una forma de mirar el scope, es considerarlo como la intención del cliente, por ejemplo el cliente quiere acceder a un recurso especifico o solicita información sobre una api. 

Usuarios: 

Estos son los usuarios finales, como tu y yo, estos usuarios pueden encontrarse en una DB propia o pueden ser credenciales de Facebook, Office365, Microsoft, etc. 

Dicho esto podemos comenzar con la configuración de nuestro servidor de tokens. 

Comenzamos creando un proyecto web vacío. 
Como paso siguiente debemos  especificarle a nuestro aplicación que vamos a estar utilizando ssl (esto se debe a que de ahora en mas trabajaremos con credenciales). 

En las propiedades de nuestra aplicación establecemos que utilice ssl. 

Imagen 

También cambiamos la url de nuestro proyecto para que sea consumido con https: 

Imagen 

Además es necesario especificar en nuestro web.config el siguiente atributo para que todos los módulos administrados se ejecuten para todas las solicitudes : 

Imagen 

Ahora instalamos los paquetes necesarios. 

  1. Install-Package Microsoft.Owin.Host.SystemWeb 

  1. Install-Package Thinktecture.IdentityServer3 

Ahora vamos a comenzar a configurar nuestra aplicación, esta configuración es base, dado que depende los flujos de trabajo implementados, esta será un poco diferente.

Creamos una clase clientes, la cual especificara los clientes que se conecten a nuestro servidor y definira los flujos de trabjao de cada uno de ellos.


Ahora vamos a configurar nuestra clase clientes, en nuestro ejemplo utilizaremos usuarios en memoria para no generar complejidad extra sobre nuestro ejemplo, pero cabe aclarar que IdentityServer3, soporta diferentes almacenes de datos como puede ser sql.


Lo tercero que vamos a hacer es agregar el scope, podemos pensar en el scope como la intencion del cliente, por ejemplo: Yo cliente pido que el usuario propietario, me conceda accesso a una api determinada o me retorne el nombre de un recurso.


Al momento todas las configuraciones están relacionadas con la identidad. No tenes nada sobre el accesso a nuestra api.

 

Ahora vamos a dirijirnos a nuestra clase “Startup.cs”, clase de inicio de Owin:Bueno ya tenemos configurado nuestro servidor de tokens, para probarlo podemos correr nuestra aplicación y navegar a : https://localhost:44344//identity//.well-known/openid-configuration

En próximas publicaciones agregaremos capacidades a nuestro servidor e implementaremos un cliente.

Leave a Comment