{"id":842,"date":"2018-05-04T08:55:57","date_gmt":"2018-05-04T08:55:57","guid":{"rendered":"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/?p=842"},"modified":"2018-05-04T10:36:01","modified_gmt":"2018-05-04T10:36:01","slug":"securizar-tus-apps-identity-server-net-core-parte-i","status":"publish","type":"post","link":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/securizar-tus-apps-identity-server-net-core-parte-i\/","title":{"rendered":"C\u00f3mo securizar tus apps con Identity Server y .NET Core (Parte I)"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-872\" src=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2018\/05\/C\u00f3mo-securizar-tus-apps-con-Indentity-Server-1.jpg\" alt=\"\" width=\"1080\" height=\"873\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2018\/05\/C\u00f3mo-securizar-tus-apps-con-Indentity-Server-1.jpg 1080w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2018\/05\/C\u00f3mo-securizar-tus-apps-con-Indentity-Server-1-300x243.jpg 300w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2018\/05\/C\u00f3mo-securizar-tus-apps-con-Indentity-Server-1-768x621.jpg 768w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2018\/05\/C\u00f3mo-securizar-tus-apps-con-Indentity-Server-1-1024x828.jpg 1024w\" sizes=\"auto, (max-width: 1080px) 100vw, 1080px\" \/><\/p>\n<p>Muchas veces recurrimos a servicios en el Cloud para <strong>mejorar nuestros desarrollos<\/strong>, uno de los que m\u00e1s se utiliza es es el\u00a0 <strong>Azure Active Directory<\/strong>. No obstante, hay situaciones en las \u00e9ste servicio no se adapta a los requerimientos del cliente, bien porque todav\u00eda <strong>no ha migrado a la Nube,<\/strong> o bien porque tiene el software en sus infraestructuras.<\/p>\n<p>Hoy veremos un sistema que se encarga de autenticar, autorizar y securizar tanto las aplicaciones como los usuarios en nuestros desarrollo. La soluci\u00f3n se llama <strong>Identity Server.<\/strong><\/p>\n<p><!--more--><\/p>\n<p>Son pocos los casos en los que no encaja (desde el punto de vista t\u00e9cnico), pero tambi\u00e9n tenemos que considerar a esa empresa que\u00a0 quiere que el dominio de su p\u00e1gina de Login sea <em>www.suempresa.com<\/em> y no\u00a0 <em>www.suempresa.microsoft.com<\/em>\u00a0con redirecci\u00f3n a un sitio fuera de sus infraestructuras&#8230;<\/p>\n<p>Para estos casos, solemos recurrir a un sistema de autenticaci\u00f3n propio para dicha aplicaci\u00f3n.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-847\" style=\"font-size: 16px;\" src=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2018\/05\/protocols.png\" alt=\"\" width=\"685\" height=\"411\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2018\/05\/protocols.png 685w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2018\/05\/protocols-300x180.png 300w\" sizes=\"auto, (max-width: 685px) 100vw, 685px\" \/><\/p>\n<p>No obstante, esta soluci\u00f3n tiene un problema. Conforme se van desarrollando m\u00e1s aplicaciones, cada una de ellas tiene un sistema de usuarios propio (o en el mejor de los casos est\u00e1 centralizado la tabla de usuarios). Otro de los problemas es que para dar permisos a aplicaciones de terceros, se suele dar de alta esta aplicaci\u00f3n como un usuario m\u00e1s de la misma,\u00a0 y cualquiera con pocas nociones de hacking podr\u00eda acceder sin mucha dificultad.<\/p>\n<p>Entonces \u00bfc\u00f3mo<em> podemos estandarizar este proceso y tener un \u00fanico sistema que se encargue de autenticar, autorizar y securizar tanto las aplicaciones como los usuarios en nuestros desarrollo?<\/em>. La soluci\u00f3n se llama <strong>Identity Server.<\/strong><\/p>\n<p>Identity Server podemos definirlo como la parte que se encarga de gestionar las identidades en nuestros desarrollos. De la misma forma se encarga de implementar los protocolos comunes, tener nuestras aplicaciones seguras y seguir los est\u00e1ndares m\u00e1s comunes: OpenId y OAuth2.0.<\/p>\n<h3><strong>\u00bfC\u00f3mo empezamos a utilizar Identity Server?<\/strong><\/h3>\n<p>Vamos a crearnos una soluci\u00f3n .NET Core-&gt; Con el proyecto Vac\u00edo. Tal y como se muestra en la siguiente pantalla:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-848\" src=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2018\/05\/crearproyecto-1024x676.jpg\" alt=\"Proyecto Asp NET\" width=\"1024\" height=\"676\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2018\/05\/crearproyecto-1024x676.jpg 1024w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2018\/05\/crearproyecto-300x198.jpg 300w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2018\/05\/crearproyecto-768x507.jpg 768w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2018\/05\/crearproyecto.jpg 1586w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p><strong>Nota:<\/strong> el seleccionar el proyecto vac\u00edo es debido a que como ASP NET Core es muy modular, podemos seleccionar qu\u00e9 cosas vamos a utilizar. De esta forma evitamos tener en nuestra soluci\u00f3n elementos que no se van a utilizar, mejorando el tama\u00f1o de nuestra soluci\u00f3n y evitando errores ajenos a nuestra aplicaci\u00f3n.<\/p>\n<p>Un vez tenemos el proyecto creado, a\u00f1adiremos el Nuget de Identity Server.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-849\" src=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2018\/05\/nuget-1024x265.jpg\" alt=\"nuget identity server\" width=\"1024\" height=\"265\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2018\/05\/nuget-1024x265.jpg 1024w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2018\/05\/nuget-300x78.jpg 300w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2018\/05\/nuget-768x198.jpg 768w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2018\/05\/nuget.jpg 1695w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p>Los creadores de esta proyecto tambi\u00e9n han publicado otros paquetes de Nuget, para utilizar EntityFramewok, AspNET Identiy y un validador de Token entre otros. M\u00e1s adelante veremos en qu\u00e9 casos los podemos utilizar.<\/p>\n<p>El primer paso es identificar qu\u00e9 Resources vamos a securizar. Podemos definir\u00a0 dichos \u00abRecursos\u00bb como por ejemplo \u00abAPI Empleados\u00bb, \u00abAPI Customers\u00bb etc..\u00a0 Para ello, en nuestro Identity Server deberemos hacer uso del objeto APIResources. Creamos\u00a0 una clase Config.cs con el siguiente c\u00f3digo:<\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\n  public class Config\r\n  {\r\n    public static IEnumerable&amp;lt;ApiResource&amp;gt; GetApiResources()\r\n    {\r\n      return new List&amp;lt;ApiResource&amp;gt;\r\n    {\r\n        new ApiResource(&quot;APICustomer&quot;, &quot;API de los customers de ENCAMINA&quot;),\r\n        new ApiResource(&quot;APIEmployee&quot;, &quot;API de los empleados de ENCAMINA&quot;)\r\n    };\r\n    }\r\n  }\r\n<\/pre>\n<p>A continuaci\u00f3n crearemos los \u00abclientes\u00bb que van a consumir dicha API. Pensad, por ejemplo, en la Aplicaci\u00f3n <a href=\"https:\/\/www.encamina.com\/myencamina\/\">MyEncamina . D<\/a>entro de esta aplicaci\u00f3n hay una parte donde se muestra la informaci\u00f3n de los empleados de ENCAMINA. Por este motivo crearemos el siguiente m\u00e9todo:<\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\npublic static IEnumerable&amp;lt;Client&amp;gt; GetClients()\r\n    {\r\n      return new List&amp;lt;Client&amp;gt;\r\n    {\r\n        new Client\r\n        {\r\n            ClientId = &quot;MyEncamina&quot;,\r\n            \/\/ no interactive user, use the clientid\/secret for authentication\r\n            AllowedGrantTypes = GrantTypes.ClientCredentials,\r\n            \/\/ secret for authentication\r\n            ClientSecrets =\r\n            {\r\n                new Secret(&quot;++++++&quot;.Sha256())\r\n            },\r\n            \/\/ scopes that client has access to\r\n            AllowedScopes = { &quot;APIEmployee&quot; }\r\n        }\r\n    };\r\n    }\r\n<\/pre>\n<p>Dependiendo del tipo de acceso hay que pasar credenciales, o bien un client secret, esto ser\u00eda similar a lo que en Azure Active Directory hacemos (ya sea montar una autenticaci\u00f3n por usuario o autenticar una aplicaci\u00f3n). Ya veremos ambos casos, en este caso lo que vamos a autenticar es una aplicaci\u00f3n, a pesar de que sea una aplicaci\u00f3n en la que no hace falta el login, tampoco es de recibo tener una API abierta a todo el mundo y que la pueda consumir \ud83d\ude42<\/p>\n<p>Una vez ya hemos implementado los Resources, vamos a securizar y definir qu\u00e9 clientes vamos a tener. El siguiente paso es configurar en el arranque de nuestra aplicaci\u00f3n el middleware correspondiente de Identity Server. Para ello en el Startup.cs tenemos que poner lo siguiente:<\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\n public void ConfigureServices(IServiceCollection services)\r\n        {\r\n       services.AddIdentityServer()\r\n        .AddDeveloperSigningCredential()\r\n        .AddInMemoryApiResources(Config.GetApiResources())\r\n        .AddInMemoryClients(Config.GetClients());\r\n        }\r\n        \/\/ This method gets called by the runtime. Use this method to configure the HTTP request pipeline.\r\n        public void Configure(IApplicationBuilder app, IHostingEnvironment env)\r\n        {\r\n            if (env.IsDevelopment())\r\n            {\r\n                app.UseDeveloperExceptionPage();\r\n            }\r\n      app.UseIdentityServer();\r\n            app.Run(async (context) =&amp;gt;\r\n            {\r\n                await context.Response.WriteAsync(&quot;Hello World!&quot;);\r\n            });\r\n        }\r\n<\/pre>\n<p>Si ahora arrancamos nuestra aplicaci\u00f3n y nos posicionamos en la siguiente URL\/: .well-known\/openid-configuration, nos mostrar\u00e1 si tenemos correctamente configurado nuestro Identity Server, as\u00ed como los endPoints disponibles y los Resources que va a tener. Como pod\u00e9is ver, ya tenemos nuestros \u00abresources\u00bb:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-852\" src=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2018\/05\/OpenID-1007x1024.jpg\" alt=\"OpenID\" width=\"1007\" height=\"1024\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2018\/05\/OpenID-1007x1024.jpg 1007w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2018\/05\/OpenID-295x300.jpg 295w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2018\/05\/OpenID-768x781.jpg 768w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2018\/05\/OpenID.jpg 1398w\" sizes=\"auto, (max-width: 1007px) 100vw, 1007px\" \/><\/p>\n<h2>A\u00f1adiendo a nuestra API el uso de Identity Server<\/h2>\n<p>Una vez ya tenemos nuestro servidor de Identity Server funcionando y listo, vamos a indicarle a nuestra API que se autentifique contra \u00e9l. Para ello lo que vamos a hacer en primer lugar, es crear una WebAPI de .NET Core. Dentro de \u00e9sta a\u00f1adiremos el paquete de Nuget IdentityServer4.AccessTokenValidation y dentro de nuestro proyecto a\u00f1adiremos el siguiente c\u00f3digo en el Startup:<\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\n  public void ConfigureServices(IServiceCollection services)\r\n        {\r\n            services.AddMvcCore()\r\n               .AddAuthorization()\r\n            .AddJsonFormatters();\r\n\r\n      services.AddAuthentication(&quot;Bearer&quot;)\r\n          .AddIdentityServerAuthentication(options =&amp;gt;\r\n          {\r\n            options.Authority = &quot;http:\/\/localhost:1907&quot;;\r\n            options.RequireHttpsMetadata = false;\r\n\r\n            options.ApiName = &quot;APIEmployee&quot;;\r\n          });\r\n    }\r\n\r\n        \/\/ This method gets called by the runtime. Use this method to configure the HTTP request pipeline.\r\n        public void Configure(IApplicationBuilder app, IHostingEnvironment env)\r\n        {\r\n            if (env.IsDevelopment())\r\n            {\r\n                app.UseDeveloperExceptionPage();\r\n            }\r\n      app.UseAuthentication();\r\n      app.UseMvc();\r\n        }\r\n<\/pre>\n<p>Una vez hemos indicado que nuestra API va a tener autenticaci\u00f3n y que estar\u00e1 delegada en nuestro servidor de autenticaci\u00f3n, tenemos que poner en nuestro controlador al atributo Autorize. En nuestro caso puede quedar un c\u00f3digo como el siguiente:<\/p>\n<pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\r\n &#x5B;Route(&quot;api\/&#x5B;controller]&quot;)]\r\n  &#x5B;Authorize]\r\n  public class EmployeeController : Controller\r\n  {\r\n    private IEnumerable&amp;lt;Employee&amp;gt; Employee;\r\n    public EmployeeController()\r\n    {\r\n      var fakeEmployee = new Faker&amp;lt;Employee&amp;gt;()\r\n        .RuleFor(x =&amp;gt; x.LastName, x =&amp;gt; x.Person.LastName)\r\n        .RuleFor(x =&amp;gt; x.Name, x =&amp;gt; x.Person.FullName)\r\n        .RuleFor(x =&amp;gt; x.Country, x =&amp;gt; x.Person.Address.City)\r\n        .RuleFor(x =&amp;gt; x.Email, x =&amp;gt; x.Person.Email);\r\n      this.Employee= fakeEmployee.Generate(10);\r\n\r\n    }\r\n    &#x5B;HttpGet]\r\n    public IEnumerable&amp;lt;Employee&amp;gt; Get()\r\n    {\r\n      return this.Employee;\r\n    }\r\n\r\n    &#x5B;HttpGet(&quot;{id}&quot;)]\r\n    public Employee Get(int id)\r\n    {\r\n      return this.Employee.ToList().Where(x =&amp;gt; x.Id == id).FirstOrDefault();\r\n    }\r\n  }\r\n<\/pre>\n<h2><strong>\u00bfC\u00f3mo consumimos nuestra API?<\/strong><\/h2>\n<p>Para consumir nuestra API lo que tendremos es obtener un token seg\u00fan el estandar OAuth2.0. Para ello tenemos dos opciones:<\/p>\n<p>1.- Una aplicaci\u00f3n en .NET a\u00f1adiendo un paquete Nuget que nos abstrae de esta comunicaci\u00f3n.<br \/>\n2.- Mediante una aplicaci\u00f3n tipo Postman, Fiddler en la que le enviamos las peticiones y bajamos a un nivel inferior.<\/p>\n<p>En mi caso prefiero la segunda opci\u00f3n (y as\u00ed tener el conocimiento de lo que est\u00e1 ocurriendo y ver el flujo de autenticaci\u00f3n). Para obtener el Token hay que hacer una petici\u00f3n POST a nuestro servidor de Identity Server en la endpoint \/connect\/token y pasarle en el cuerpo de la petici\u00f3n el ClientID, el Client Secret y el Scope.<br \/>\nEsto por ejemplo, haciendo uso de un herramienta como Postman lo tiene implementado de una forma simple para evitar pedirnos el token cada vez. Para ello cuando seleccionamos dentro de <a href=\"https:\/\/www.getpostman.com\/\" target=\"_blank\" rel=\"noopener\">Postman<\/a> el Typo de Authorizaci\u00f3n OAuth2.0,\u00a0 nos sale un bot\u00f3n para solicitar el token. Al pulsar dicho bot\u00f3n, nos muestra una pantalla donde tenemos que rellenar los datos indicados.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-medium wp-image-864\" src=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2018\/05\/token-246x300.jpg\" alt=\"\" width=\"246\" height=\"300\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2018\/05\/token-246x300.jpg 246w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2018\/05\/token.jpg 482w\" sizes=\"auto, (max-width: 246px) 100vw, 246px\" \/><br \/>\nIndicaremos utilizar dicho Token y con el mismo, ya podremos hacer peticiones a la API sin ning\u00fan tipo de problemas.<\/p>\n<h2><strong>Resumiendo y siguientes pasos<\/strong><\/h2>\n<p>Hemos visto c\u00f3mo poder utilizar una autenticaci\u00f3n simple en nuestros desarrollos sin necesidad de implementar nada.<\/p>\n<p>Ahora que ya hemos empezado a utilizar Identity Server, vamos a empezar a sacarle todo su jugo, es decir, vamos a a\u00f1adir c\u00f3mo autenticar usuarios mediante usuario y contrase\u00f1a, y c\u00f3mo podemos construir nuestras API&#8217;s empresariales y\u00a0 separarlas de una forma similar a la API Graph.<\/p>\n<p>\u00c9ste ejemplo lo pod\u00e9is descargar desde nuestro <a href=\"https:\/\/github.com\/Encamina\/Blogs\/tree\/master\/Desarrolla%20en%20colores\/Identiy%20Server\">repositorio de GitHub<\/a><br \/>\n<a href=\"https:\/\/github.com\/Encamina\/Blogs\/tree\/master\/Desarrolla%20en%20colores\/Identiy%20Server\" target=\"_blank\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft\" src=\"https:\/\/image.flaticon.com\/icons\/svg\/25\/25231.svg\" alt=\"Git Hub\" width=\"143\" height=\"143\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content --><span class=\"et_bloom_bottom_trigger\"><\/span>","protected":false},"excerpt":{"rendered":"<p>Muchas veces recurrimos a servicios en el Cloud para mejorar nuestros desarrollos, uno de los que m\u00e1s se utiliza es es el\u00a0 Azure Active Directory. No obstante, hay situaciones en las \u00e9ste servicio no se adapta a los requerimientos del &hellip; <a href=\"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/securizar-tus-apps-identity-server-net-core-parte-i\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":8,"featured_media":872,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[70,77],"tags":[],"class_list":["post-842","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-net","category-seguridad"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v18.2.1 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>C\u00f3mo securizar tus apps con Identity Server y .NET Core (Parte I) - Piensa en software, desarrolla en colores<\/title>\n<meta name=\"description\" content=\"Adri\u00e1n D\u00edaz analiza Identity Server para autenticar, autorizar y securizar tanto las aplicaciones como los usuarios en nuestros desarrollo.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/securizar-tus-apps-identity-server-net-core-parte-i\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"C\u00f3mo securizar tus apps con Identity Server y .NET Core (Parte I)\" \/>\n<meta property=\"og:description\" content=\"Adri\u00e1n D\u00edaz analiza Identity Server para autenticar, autorizar y securizar tanto las aplicaciones como los usuarios en nuestros desarrollo.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/securizar-tus-apps-identity-server-net-core-parte-i\/\" \/>\n<meta property=\"og:site_name\" content=\"Piensa en software, desarrolla en colores\" \/>\n<meta property=\"article:published_time\" content=\"2018-05-04T08:55:57+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-05-04T10:36:01+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2018\/05\/C\u00f3mo-securizar-tus-apps-con-Indentity-Server-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1080\" \/>\n\t<meta property=\"og:image:height\" content=\"873\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Adri\u00e1n D\u00edaz\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Adri\u00e1n D\u00edaz\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/securizar-tus-apps-identity-server-net-core-parte-i\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/securizar-tus-apps-identity-server-net-core-parte-i\\\/\"},\"author\":{\"name\":\"Adri\u00e1n D\u00edaz\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/#\\\/schema\\\/person\\\/c9bfaede1bfba9564bb7f500788782bb\"},\"headline\":\"C\u00f3mo securizar tus apps con Identity Server y .NET Core (Parte I)\",\"datePublished\":\"2018-05-04T08:55:57+00:00\",\"dateModified\":\"2018-05-04T10:36:01+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/securizar-tus-apps-identity-server-net-core-parte-i\\\/\"},\"wordCount\":1507,\"commentCount\":1,\"image\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/securizar-tus-apps-identity-server-net-core-parte-i\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/wp-content\\\/uploads\\\/sites\\\/21\\\/2018\\\/05\\\/C\u00f3mo-securizar-tus-apps-con-Indentity-Server-1.jpg\",\"articleSection\":[\".NET\",\"seguridad\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/securizar-tus-apps-identity-server-net-core-parte-i\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/securizar-tus-apps-identity-server-net-core-parte-i\\\/\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/securizar-tus-apps-identity-server-net-core-parte-i\\\/\",\"name\":\"C\u00f3mo securizar tus apps con Identity Server y .NET Core (Parte I) - Piensa en software, desarrolla en colores\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/securizar-tus-apps-identity-server-net-core-parte-i\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/securizar-tus-apps-identity-server-net-core-parte-i\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/wp-content\\\/uploads\\\/sites\\\/21\\\/2018\\\/05\\\/C\u00f3mo-securizar-tus-apps-con-Indentity-Server-1.jpg\",\"datePublished\":\"2018-05-04T08:55:57+00:00\",\"dateModified\":\"2018-05-04T10:36:01+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/#\\\/schema\\\/person\\\/c9bfaede1bfba9564bb7f500788782bb\"},\"description\":\"Adri\u00e1n D\u00edaz analiza Identity Server para autenticar, autorizar y securizar tanto las aplicaciones como los usuarios en nuestros desarrollo.\",\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/securizar-tus-apps-identity-server-net-core-parte-i\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/securizar-tus-apps-identity-server-net-core-parte-i\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/wp-content\\\/uploads\\\/sites\\\/21\\\/2018\\\/05\\\/C\u00f3mo-securizar-tus-apps-con-Indentity-Server-1.jpg\",\"contentUrl\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/wp-content\\\/uploads\\\/sites\\\/21\\\/2018\\\/05\\\/C\u00f3mo-securizar-tus-apps-con-Indentity-Server-1.jpg\",\"width\":1080,\"height\":873},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/#website\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/\",\"name\":\"Piensa en software, desarrolla en colores\",\"description\":\"Las ventajas que te ofrece Microsoft Azure y el mundo.NET\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/#\\\/schema\\\/person\\\/c9bfaede1bfba9564bb7f500788782bb\",\"name\":\"Adri\u00e1n D\u00edaz\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g\",\"caption\":\"Adri\u00e1n D\u00edaz\"},\"description\":\"Adri\u00e1n D\u00edaz es Ingeniero Inform\u00e1tico por la Universidad Polit\u00e9cnica de Valencia. Es MVP de Microsoft en la categor\u00eda Office Development desde 2014, MCPD de SharePoint 2010, Microsoft Active Profesional y Microsoft Comunity Contribuitor 2012. Cofundador del grupo de usuarios de SharePoint de Levante LevaPoint. Lleva desarrollando con tecnolog\u00edas Microsoft m\u00e1s de 10 a\u00f1os y desde hace 3 a\u00f1os est\u00e1 centrado en el desarrollo sobre SharePoint. Actualmente es Software &amp; Cloud Architect Lead en ENCAMINA.\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/author\\\/desarrollandosobresharepoint\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"C\u00f3mo securizar tus apps con Identity Server y .NET Core (Parte I) - Piensa en software, desarrolla en colores","description":"Adri\u00e1n D\u00edaz analiza Identity Server para autenticar, autorizar y securizar tanto las aplicaciones como los usuarios en nuestros desarrollo.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/securizar-tus-apps-identity-server-net-core-parte-i\/","og_locale":"es_ES","og_type":"article","og_title":"C\u00f3mo securizar tus apps con Identity Server y .NET Core (Parte I)","og_description":"Adri\u00e1n D\u00edaz analiza Identity Server para autenticar, autorizar y securizar tanto las aplicaciones como los usuarios en nuestros desarrollo.","og_url":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/securizar-tus-apps-identity-server-net-core-parte-i\/","og_site_name":"Piensa en software, desarrolla en colores","article_published_time":"2018-05-04T08:55:57+00:00","article_modified_time":"2018-05-04T10:36:01+00:00","og_image":[{"width":1080,"height":873,"url":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2018\/05\/C\u00f3mo-securizar-tus-apps-con-Indentity-Server-1.jpg","type":"image\/jpeg"}],"author":"Adri\u00e1n D\u00edaz","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Adri\u00e1n D\u00edaz","Tiempo de lectura":"7 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/securizar-tus-apps-identity-server-net-core-parte-i\/#article","isPartOf":{"@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/securizar-tus-apps-identity-server-net-core-parte-i\/"},"author":{"name":"Adri\u00e1n D\u00edaz","@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/#\/schema\/person\/c9bfaede1bfba9564bb7f500788782bb"},"headline":"C\u00f3mo securizar tus apps con Identity Server y .NET Core (Parte I)","datePublished":"2018-05-04T08:55:57+00:00","dateModified":"2018-05-04T10:36:01+00:00","mainEntityOfPage":{"@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/securizar-tus-apps-identity-server-net-core-parte-i\/"},"wordCount":1507,"commentCount":1,"image":{"@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/securizar-tus-apps-identity-server-net-core-parte-i\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2018\/05\/C\u00f3mo-securizar-tus-apps-con-Indentity-Server-1.jpg","articleSection":[".NET","seguridad"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/securizar-tus-apps-identity-server-net-core-parte-i\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/securizar-tus-apps-identity-server-net-core-parte-i\/","url":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/securizar-tus-apps-identity-server-net-core-parte-i\/","name":"C\u00f3mo securizar tus apps con Identity Server y .NET Core (Parte I) - Piensa en software, desarrolla en colores","isPartOf":{"@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/securizar-tus-apps-identity-server-net-core-parte-i\/#primaryimage"},"image":{"@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/securizar-tus-apps-identity-server-net-core-parte-i\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2018\/05\/C\u00f3mo-securizar-tus-apps-con-Indentity-Server-1.jpg","datePublished":"2018-05-04T08:55:57+00:00","dateModified":"2018-05-04T10:36:01+00:00","author":{"@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/#\/schema\/person\/c9bfaede1bfba9564bb7f500788782bb"},"description":"Adri\u00e1n D\u00edaz analiza Identity Server para autenticar, autorizar y securizar tanto las aplicaciones como los usuarios en nuestros desarrollo.","inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/securizar-tus-apps-identity-server-net-core-parte-i\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/securizar-tus-apps-identity-server-net-core-parte-i\/#primaryimage","url":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2018\/05\/C\u00f3mo-securizar-tus-apps-con-Indentity-Server-1.jpg","contentUrl":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2018\/05\/C\u00f3mo-securizar-tus-apps-con-Indentity-Server-1.jpg","width":1080,"height":873},{"@type":"WebSite","@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/#website","url":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/","name":"Piensa en software, desarrolla en colores","description":"Las ventajas que te ofrece Microsoft Azure y el mundo.NET","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/#\/schema\/person\/c9bfaede1bfba9564bb7f500788782bb","name":"Adri\u00e1n D\u00edaz","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g","caption":"Adri\u00e1n D\u00edaz"},"description":"Adri\u00e1n D\u00edaz es Ingeniero Inform\u00e1tico por la Universidad Polit\u00e9cnica de Valencia. Es MVP de Microsoft en la categor\u00eda Office Development desde 2014, MCPD de SharePoint 2010, Microsoft Active Profesional y Microsoft Comunity Contribuitor 2012. Cofundador del grupo de usuarios de SharePoint de Levante LevaPoint. Lleva desarrollando con tecnolog\u00edas Microsoft m\u00e1s de 10 a\u00f1os y desde hace 3 a\u00f1os est\u00e1 centrado en el desarrollo sobre SharePoint. Actualmente es Software &amp; Cloud Architect Lead en ENCAMINA.","url":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/author\/desarrollandosobresharepoint\/"}]}},"_links":{"self":[{"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/posts\/842","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/comments?post=842"}],"version-history":[{"count":0,"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/posts\/842\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/media\/872"}],"wp:attachment":[{"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/media?parent=842"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/categories?post=842"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/tags?post=842"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}