{"id":1103,"date":"2019-07-09T09:39:59","date_gmt":"2019-07-09T09:39:59","guid":{"rendered":"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/?p=1103"},"modified":"2019-07-09T09:44:04","modified_gmt":"2019-07-09T09:44:04","slug":"msal-la-nueva-libreria-de-autenticacion-de-azure-ad","status":"publish","type":"post","link":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/msal-la-nueva-libreria-de-autenticacion-de-azure-ad\/","title":{"rendered":"MSAL la nueva librer\u00eda de autenticaci\u00f3n de Azure AD"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1148\" src=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2019\/07\/MSAL-la-nueva-librer\u00eda-de-autenticaci\u00f3n-de-Azure-AD.jpg\" alt=\"\" width=\"994\" height=\"788\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2019\/07\/MSAL-la-nueva-librer\u00eda-de-autenticaci\u00f3n-de-Azure-AD.jpg 994w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2019\/07\/MSAL-la-nueva-librer\u00eda-de-autenticaci\u00f3n-de-Azure-AD-300x238.jpg 300w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2019\/07\/MSAL-la-nueva-librer\u00eda-de-autenticaci\u00f3n-de-Azure-AD-768x609.jpg 768w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2019\/07\/MSAL-la-nueva-librer\u00eda-de-autenticaci\u00f3n-de-Azure-AD-610x484.jpg 610w\" sizes=\"auto, (max-width: 994px) 100vw, 994px\" \/><\/p>\n<p>Desde hace mucho tiempo, para los desarrollos que requer\u00edan de<strong> autenticaci\u00f3n contra el Azure Active Directory<\/strong> se hac\u00eda uso de la librer\u00eda ADAL (<a href=\"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/?s=autenticacion\" target=\"_blank\" rel=\"noopener noreferrer\">de la que hemos hablado en multitud de ocasiones<\/a>).\u00a0\u00a0 Sin embargo, Microsoft anunci\u00f3 un nuevo endpoint de autenticaci\u00f3n con una finalidad en la que a\u00f1ade novedades importantes que trataremos de desgranar en este art\u00edculo.<\/p>\n<p><!--more--><br \/>\nEn primer lugar, <strong>se a\u00f1adi\u00f3 soporte para m\u00e1s plataformas de identidad compatibles<\/strong>. El punto de <em>conexi\u00f3n v1.0 solo permite iniciar sesi\u00f3n en la aplicaci\u00f3n con cuentas profesionales y educativas (Azure AD)<\/em>. El punto de conexi\u00f3n de plataforma de identidad de Microsoft <em>permite trabajo y cuentas educativas de Azure AD y cuentas personales de Microsoft (MSA)<\/em>, como hotmail.com, outlook.com y msn.com, para iniciar sesi\u00f3n.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1104 size-large\" src=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2019\/07\/msalv1-1024x228.png\" alt=\"Diferencias entre la versi\u00f3n v1 y v2\" width=\"1024\" height=\"228\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2019\/07\/msalv1-1024x228.png 1024w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2019\/07\/msalv1-300x67.png 300w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2019\/07\/msalv1-768x171.png 768w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2019\/07\/msalv1-610x136.png 610w, https:\/\/encaminablogs.wpenginepowered.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2019\/07\/msalv1.png 1605w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><br \/>\nOtra de las mejoras que se incorpor\u00f3 fueron\u00a0<strong> los permisos sobre las API. <\/strong>En la primera versi\u00f3n se ped\u00edan permisos sobre el \u00abresource\u00bb y en la versi\u00f3n v2 es sobre el \u00abscope\u00bb.<\/p>\n<p>Es decir, identificador de recursos o AppID URI: https:\/\/graph.windows.net\/<\/p>\n<p>Los \u00e1mbitos, o oAuth2Permissions: Directory.Read, Directory.Write, etc.<br \/>\nEstos son cambios internos que se hacen tanto para pedir los permisos impl\u00edcitos, como en la generaci\u00f3n del token para poder acceder, pero que hacen que la aplicaci\u00f3n sea m\u00e1s segura y cumpla con los est\u00e1ndares de OpenID y Oauth2.0.<\/p>\n<p>Todos estos cambios provocaron que la librer\u00eda ADAL se quedara obsoleta. Desde el equipo de identidad de Microsoft optaron por la reescritura total de la librer\u00eda para adaptarse a los nuevos requerimientos. Esta librer\u00eda se llama <strong>MSAL<\/strong> y desde el anuncio en el <a href=\"https:\/\/redmondmag.com\/articles\/2019\/05\/07\/microsoft-identity-platform-for-app-developers.aspx\" target=\"_blank\" rel=\"noopener noreferrer\">Build el pasado mayo<\/a> ya se puede utilizar en nuestros desarrollos sin ning\u00fan problema.<\/p>\n<h2><strong>C\u00f3mo empezar a utilizarla en nuestros desarrollos<\/strong><\/h2>\n<p>En este art\u00edculo desgranaremos c\u00f3mo empezar a utilizarla en los\u00a0 desarrollos en ReactJS y veremos todo lo que debemos\u00a0 realizar desde el FrontEnd. En el caso de que necesit\u00e9is hacer uso en C# dispon\u00e9is de <a href=\"http:\/\/www.compartimoss.com\/revistas\/numero-39\/msal-introduccion-y-ejemplo-de-uso-para-llamar-a-graph-api\" target=\"_blank\" rel=\"noopener noreferrer\">este art\u00edculo que se p\u00fablic\u00f3 en la revista Compartimoss<\/a> a cargo de <a href=\"https:\/\/twitter.com\/luismanez\" target=\"_blank\" rel=\"noopener noreferrer\">Luis Ma\u00f1ez.<\/a><\/p>\n<p><strong>Requerimientos previos\u00a0<\/strong><\/p>\n<ul>\n<li>Se debe dar de alta una aplicaci\u00f3n en el directorio activo de Azure. Si no sab\u00e9is c\u00f3mo, deb\u00e9is seguir estos <a href=\"https:\/\/docs.microsoft.com\/es-es\/azure\/active-directory\/develop\/quickstart-register-app\" target=\"_blank\" rel=\"noopener noreferrer\">pasos.<\/a><\/li>\n<li>Tener la aplicaci\u00f3n React creada. Para ello utilizaremos la herramienta proporcionada por Facebook tal y como se indica <a href=\"https:\/\/facebook.github.io\/create-react-app\/docs\/adding-typescript\" target=\"_blank\" rel=\"noopener noreferrer\">aqu\u00ed.<\/a><\/li>\n<\/ul>\n<h3><strong>Manos a la obra\u00a0<\/strong><\/h3>\n<p>En\u00a0 toda aplicaci\u00f3n en JS\/TS\u00a0 bastar\u00eda con a\u00f1adir la dependencia de MSAL en el fichero package.json :<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n &quot;msal&quot;: &quot;1.0.2&quot;\r\n<\/pre>\n<p>Para el tema de autenticar nuestra aplicaci\u00f3n vamos a crear un Higher Order Component(HOC) en React. Un HOC es una funci\u00f3n que como entrada tiene un componente, y como salida de la misma, un nuevo componente. Este comportamiento es relativamente com\u00fan dentro de los desarrollos en React.<\/p>\n<p>En este ejemplo \u00bfqu\u00e9 sentido tiene tener un HOC para la autenticaci\u00f3n? Al encapsular la autenticaci\u00f3n en un componente podemos ceder la responsabilidad de la autenticaci\u00f3n a este componte. Es decir, este HOC\u00a0 se encargar\u00e1 de ver si el usuario est\u00e1 autenticado o no en la aplicaci\u00f3n. En caso de que est\u00e9 autenticado, le mostrar\u00e1 el componente que quiere visualizar, y en caso de que no est\u00e9 autenticado, se le pedir\u00e1 al usuario que introduzca sus credenciales. De esta forma se evitar\u00e1 que el usuario contin\u00fae con la aplicaci\u00f3n hasta que finalmente le de un error porque no tiene permisos para realizar determinada acci\u00f3n.<\/p>\n<p>Antes de meternos en faena, vamos a ver qu\u00e9 caracter\u00edsticas tiene MSAL, qu\u00e9 opciones nos proporciona y c\u00f3mo empezar a utilizarla. Al igual que hac\u00edamos con ADAL, tenemos que tener un fichero de configuraci\u00f3n en el que le indicaremos qu\u00e9 opciones necesitamos. Aqu\u00ed est\u00e1n todas las opciones que se soportan hasta ahora.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\ntype storage = &quot;localStorage&quot; | &quot;sessionStorage&quot;;\r\n\/\/ Protocol Support\r\nexport type AuthOptions = {\r\n    clientId: string;\r\n    authority?: string;\r\n    validateAuthority?: boolean;\r\n    redirectUri?: string | (() =&gt; string);\r\n    postLogoutRedirectUri?: string | (() =&gt; string);\r\n    navigateToLoginRequestUrl?: boolean;\r\n};\r\n\/\/ Cache Support\r\nexport type CacheOptions = {\r\n    cacheLocation?: CacheLocation;\r\n    storeAuthStateInCookie?: boolean;\r\n};\r\n\/\/ Library support\r\nexport type SystemOptions = {\r\n    logger?: Logger;\r\n    loadFrameTimeout?: number;\r\n    tokenRenewalOffsetSeconds?: number;\r\n};\r\n\/\/ Developer App Environment Support\r\nexport type FrameworkOptions = {\r\n    isAngular?: boolean;\r\n    unprotectedResources?: Array&lt;string&gt;;\r\n    protectedResourceMap?: Map&lt;string, Array&lt;string&gt;&gt;;\r\n};\r\n\/\/ Configuration Object\r\nexport type Configuration = {\r\n    auth: AuthOptions,\r\n    cache?: CacheOptions,\r\n    system?: SystemOptions,\r\n    framework?: FrameworkOptions\r\n};\r\n<\/pre>\n<p>No es necesario que incluyamos todas estas opciones. Realmente, las \u00fanicas indispensables son las opciones de AuthOptions. Para una primera toma de contacto se podr\u00eda hacer uso de un fichero de configuraci\u00f3n similar al siguiente.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nexport const msalConfig = {\r\n    authority: process.env.REACT_APP_MSALAUTHORITY,\r\n    clientId: process.env.REACT_APP_MSALCLIENTID\r\n  };\r\n\r\nexport const msalInstance = new UserAgentApplication({\r\n  auth: msalConfig\r\n});\r\n<\/pre>\n<p>Una vez tenemos el objeto msalInstance creado, tendremos que ver en qu\u00e9 estado est\u00e1. Para ello disponemos de una serie de m\u00e9todos en los que podemos saber en cada momento el estado en que se encuentra la autenticaci\u00f3n. Por un lado, podemos ver el usuario que est\u00e1 autenticado con el m\u00e9todo msalInstance.getAccount(). Tambi\u00e9n podemos redirigir a la p\u00e1gina de login invocando al m\u00e9todo msalInstance.loginRedirect({}) o bien mostrarlo en un Popup. En definitiva, tenemos multitud de m\u00e9todos que nos aportan mucho m\u00e1s control sobre la misma.<\/p>\n<h2><strong>Creando el HOC<\/strong><\/h2>\n<p>Junto con estos m\u00e9todos m\u00e1s simples, tambi\u00e9n se incluyen la interacci\u00f3n de la librer\u00eda cuando pierde el contexto, debido a que est\u00e1 en la propia p\u00e1gina de Microsoft autenticando. Disponemos de m\u00e9todos para saber el estado de la autenticaci\u00f3n y el resultado de la misma. Partiendo de este supuesto mostramos el siguiente componente de ejemplo :<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nimport * as React from 'react';\r\nimport { msalConfig } from '..\/msal\/msalConfig';\r\nimport { LoginError,LoginInProgress } from '..\/login';\r\nimport { UserAgentApplication, AuthError } from 'msal';\r\n\r\nexport const msalInstance = new UserAgentApplication({\r\n  auth: msalConfig\r\n});\r\n\r\ninterface IState {\r\n  authenticated: boolean;\r\n  renewIframe: boolean;\r\n  errorMessage: string;\r\n  hasError: boolean;\r\n}\r\n\r\nexport function withAuth&lt;TOriginalProps&gt;(\r\n  WrappedComponent: React.ComponentClass&lt;TOriginalProps&gt; | React.StatelessComponent&lt;TOriginalProps&gt;\r\n): React.ComponentClass&lt;TOriginalProps&gt; {\r\n  return class Auth extends React.Component&lt;TOriginalProps, IState&gt; {\r\n    constructor(props: TOriginalProps) {\r\n      super(props);\r\n      this.state = {\r\n        authenticated: false,\r\n        renewIframe: false,\r\n        hasError: false,\r\n        errorMessage: null\r\n      };\r\n    }\r\n\r\n    public componentWillMount(): void {      \r\n      msalInstance.handleRedirectCallback(() =&gt; { \/\/ on success\r\n        this.setState({\r\n          authenticated: true\r\n        });       \r\n      }, (authErr: AuthError, accountState: string) =&gt; {  \/\/ on fail\r\n        console.log(authErr);\r\n        this.setState({\r\n          hasError: true,\r\n          errorMessage: authErr.errorMessage\r\n        });\r\n      });\r\n\r\n      if (msalInstance.isCallback(window.location.hash)) {\r\n        this.setState({\r\n          renewIframe: true\r\n        });\r\n        return;\r\n      }      \r\n\r\n      if (!msalInstance.getAccount()) {\r\n        msalInstance.loginRedirect({});\r\n        return;\r\n      } else {\r\n        this.setState({\r\n          authenticated: true\r\n        });        \r\n      }\r\n    }\r\n\r\n    public render(): JSX.Element {\r\n      if (this.state.renewIframe) {\r\n        return &lt;div&gt;hidden renew iframe - not visible&lt;\/div&gt;;\r\n      }\r\n      if (this.state.authenticated) {\r\n        return &lt;WrappedComponent {...this.props} \/&gt;;\r\n      }\r\n      if (this.state.hasError) {\r\n        return &lt;LoginError message={this.state.errorMessage} \/&gt;;\r\n      }\r\n      return &lt;LoginInProgress \/&gt;;\r\n    }    \r\n  };\r\n}\r\n<\/pre>\n<p>Ahora bien como podemos usar esta autenticaci\u00f3n, pues antes de cargar un componente si invocamos a la funci\u00f3n withAuth tendremos la funcionalidad del login. Quedar\u00eda de la siguiente forma:<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nexport const routes =\r\n    &lt;Layout&gt;\r\n            &lt;Route exact path='\/' strict={false} component={withAuth(HomeContainer)} \/&gt;\r\n    &lt;\/Layout&gt;\r\n<\/pre>\n<p>El funcionamiento ser\u00eda el siguiente:<\/p>\n<ul>\n<li>Cuando el usuario vaya a la ruta ra\u00edz, se comprueba si el usuario est\u00e1 autenticado.<\/li>\n<li>Si lo est\u00e1, mostrar\u00eda el componente HomeContainer.<\/li>\n<li>En caso de que no lo est\u00e9, se redirigir\u00e1 a la p\u00e1gina de login del Azure Active Directory y cuando vuelva a la aplicaci\u00f3n se controlar\u00e1 el resultado del login a trav\u00e9s de los m\u00e9todos handleRedirectCallback y\/o isCallback.<\/li>\n<\/ul>\n<h3><strong>Siguientes pasos\u00a0<\/strong><\/h3>\n<p>Una vez ya vemos c\u00f3mo podemos empezar a utilizar MSAL, la siguiente pregunta que nos surge es si <strong>debemos migrar nuestros desarrollos de ADAL a MSAL<\/strong>&#8230; La respuesta es que es MUY recomendable hacerlo, principalmente porque MSAL cumple mejor con los est\u00e1ndares de OpenIdConnect y oAuth2.<\/p>\n<p>Desde la propia documentaci\u00f3n oficial de Microsoft indica los pasos que hay que realizar para migrar tanto de .NET como desde JS en los siguientes enlaces:<br \/>\n&#8211; https:\/\/docs.microsoft.com\/en-us\/azure\/active-directory\/develop\/msal-compare-msal-js-and-adal-js<br \/>\n-https:\/\/docs.microsoft.com\/en-us\/azure\/active-directory\/develop\/msal-net-migration<\/p>\n<p>Happy codding \ud83d\ude42<\/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>Desde hace mucho tiempo, para los desarrollos que requer\u00edan de autenticaci\u00f3n contra el Azure Active Directory se hac\u00eda uso de la librer\u00eda ADAL (de la que hemos hablado en multitud de ocasiones).\u00a0\u00a0 Sin embargo, Microsoft anunci\u00f3 un nuevo endpoint de &hellip; <a href=\"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/msal-la-nueva-libreria-de-autenticacion-de-azure-ad\/\">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":1148,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,98,77],"tags":[113,112,100],"class_list":["post-1103","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-microsoft-azure","category-reactjs","category-seguridad","tag-azure-active-directory","tag-msal","tag-reactjs"],"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>MSAL la nueva librer\u00eda de autenticaci\u00f3n de Azure AD | ENCAMINA<\/title>\n<meta name=\"description\" content=\"En este art\u00edculo desgranamos c\u00f3mo empezar a utilizar la librer\u00eda MSAL en los\u00a0 desarrollos en ReactJS, y todo lo que debemos realizar desde el FrontEnd.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/msal-la-nueva-libreria-de-autenticacion-de-azure-ad\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"MSAL la nueva librer\u00eda de autenticaci\u00f3n de Azure AD\" \/>\n<meta property=\"og:description\" content=\"En este art\u00edculo desgranamos c\u00f3mo empezar a utilizar la librer\u00eda MSAL en los\u00a0 desarrollos en ReactJS, y todo lo que debemos realizar desde el FrontEnd.\" \/>\n<meta property=\"og:url\" content=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/msal-la-nueva-libreria-de-autenticacion-de-azure-ad\/\" \/>\n<meta property=\"og:site_name\" content=\"Piensa en software, desarrolla en colores\" \/>\n<meta property=\"article:published_time\" content=\"2019-07-09T09:39:59+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-07-09T09:44:04+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2019\/07\/MSAL-la-nueva-librer\u00eda-de-autenticaci\u00f3n-de-Azure-AD.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"994\" \/>\n\t<meta property=\"og:image:height\" content=\"788\" \/>\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\":\"http:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/msal-la-nueva-libreria-de-autenticacion-de-azure-ad\\\/#article\",\"isPartOf\":{\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/msal-la-nueva-libreria-de-autenticacion-de-azure-ad\\\/\"},\"author\":{\"name\":\"Adri\u00e1n D\u00edaz\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/#\\\/schema\\\/person\\\/c9bfaede1bfba9564bb7f500788782bb\"},\"headline\":\"MSAL la nueva librer\u00eda de autenticaci\u00f3n de Azure AD\",\"datePublished\":\"2019-07-09T09:39:59+00:00\",\"dateModified\":\"2019-07-09T09:44:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/msal-la-nueva-libreria-de-autenticacion-de-azure-ad\\\/\"},\"wordCount\":1404,\"commentCount\":0,\"image\":{\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/msal-la-nueva-libreria-de-autenticacion-de-azure-ad\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/wp-content\\\/uploads\\\/sites\\\/21\\\/2019\\\/07\\\/MSAL-la-nueva-librer\u00eda-de-autenticaci\u00f3n-de-Azure-AD.jpg\",\"keywords\":[\"azure active directory\",\"msal\",\"reactjs\"],\"articleSection\":[\"Microsoft Azure\",\"ReactJS\",\"seguridad\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"http:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/msal-la-nueva-libreria-de-autenticacion-de-azure-ad\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/msal-la-nueva-libreria-de-autenticacion-de-azure-ad\\\/\",\"url\":\"http:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/msal-la-nueva-libreria-de-autenticacion-de-azure-ad\\\/\",\"name\":\"MSAL la nueva librer\u00eda de autenticaci\u00f3n de Azure AD | ENCAMINA\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/msal-la-nueva-libreria-de-autenticacion-de-azure-ad\\\/#primaryimage\"},\"image\":{\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/msal-la-nueva-libreria-de-autenticacion-de-azure-ad\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/wp-content\\\/uploads\\\/sites\\\/21\\\/2019\\\/07\\\/MSAL-la-nueva-librer\u00eda-de-autenticaci\u00f3n-de-Azure-AD.jpg\",\"datePublished\":\"2019-07-09T09:39:59+00:00\",\"dateModified\":\"2019-07-09T09:44:04+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/#\\\/schema\\\/person\\\/c9bfaede1bfba9564bb7f500788782bb\"},\"description\":\"En este art\u00edculo desgranamos c\u00f3mo empezar a utilizar la librer\u00eda MSAL en los\u00a0 desarrollos en ReactJS, y todo lo que debemos realizar desde el FrontEnd.\",\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/msal-la-nueva-libreria-de-autenticacion-de-azure-ad\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/msal-la-nueva-libreria-de-autenticacion-de-azure-ad\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/wp-content\\\/uploads\\\/sites\\\/21\\\/2019\\\/07\\\/MSAL-la-nueva-librer\u00eda-de-autenticaci\u00f3n-de-Azure-AD.jpg\",\"contentUrl\":\"https:\\\/\\\/blogs.encamina.com\\\/piensa-en-software-desarrolla-en-colores\\\/wp-content\\\/uploads\\\/sites\\\/21\\\/2019\\\/07\\\/MSAL-la-nueva-librer\u00eda-de-autenticaci\u00f3n-de-Azure-AD.jpg\",\"width\":994,\"height\":788},{\"@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":"MSAL la nueva librer\u00eda de autenticaci\u00f3n de Azure AD | ENCAMINA","description":"En este art\u00edculo desgranamos c\u00f3mo empezar a utilizar la librer\u00eda MSAL en los\u00a0 desarrollos en ReactJS, y todo lo que debemos realizar desde el FrontEnd.","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":"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/msal-la-nueva-libreria-de-autenticacion-de-azure-ad\/","og_locale":"es_ES","og_type":"article","og_title":"MSAL la nueva librer\u00eda de autenticaci\u00f3n de Azure AD","og_description":"En este art\u00edculo desgranamos c\u00f3mo empezar a utilizar la librer\u00eda MSAL en los\u00a0 desarrollos en ReactJS, y todo lo que debemos realizar desde el FrontEnd.","og_url":"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/msal-la-nueva-libreria-de-autenticacion-de-azure-ad\/","og_site_name":"Piensa en software, desarrolla en colores","article_published_time":"2019-07-09T09:39:59+00:00","article_modified_time":"2019-07-09T09:44:04+00:00","og_image":[{"width":994,"height":788,"url":"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2019\/07\/MSAL-la-nueva-librer\u00eda-de-autenticaci\u00f3n-de-Azure-AD.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":"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/msal-la-nueva-libreria-de-autenticacion-de-azure-ad\/#article","isPartOf":{"@id":"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/msal-la-nueva-libreria-de-autenticacion-de-azure-ad\/"},"author":{"name":"Adri\u00e1n D\u00edaz","@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/#\/schema\/person\/c9bfaede1bfba9564bb7f500788782bb"},"headline":"MSAL la nueva librer\u00eda de autenticaci\u00f3n de Azure AD","datePublished":"2019-07-09T09:39:59+00:00","dateModified":"2019-07-09T09:44:04+00:00","mainEntityOfPage":{"@id":"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/msal-la-nueva-libreria-de-autenticacion-de-azure-ad\/"},"wordCount":1404,"commentCount":0,"image":{"@id":"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/msal-la-nueva-libreria-de-autenticacion-de-azure-ad\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2019\/07\/MSAL-la-nueva-librer\u00eda-de-autenticaci\u00f3n-de-Azure-AD.jpg","keywords":["azure active directory","msal","reactjs"],"articleSection":["Microsoft Azure","ReactJS","seguridad"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/msal-la-nueva-libreria-de-autenticacion-de-azure-ad\/#respond"]}]},{"@type":"WebPage","@id":"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/msal-la-nueva-libreria-de-autenticacion-de-azure-ad\/","url":"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/msal-la-nueva-libreria-de-autenticacion-de-azure-ad\/","name":"MSAL la nueva librer\u00eda de autenticaci\u00f3n de Azure AD | ENCAMINA","isPartOf":{"@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/#website"},"primaryImageOfPage":{"@id":"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/msal-la-nueva-libreria-de-autenticacion-de-azure-ad\/#primaryimage"},"image":{"@id":"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/msal-la-nueva-libreria-de-autenticacion-de-azure-ad\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2019\/07\/MSAL-la-nueva-librer\u00eda-de-autenticaci\u00f3n-de-Azure-AD.jpg","datePublished":"2019-07-09T09:39:59+00:00","dateModified":"2019-07-09T09:44:04+00:00","author":{"@id":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/#\/schema\/person\/c9bfaede1bfba9564bb7f500788782bb"},"description":"En este art\u00edculo desgranamos c\u00f3mo empezar a utilizar la librer\u00eda MSAL en los\u00a0 desarrollos en ReactJS, y todo lo que debemos realizar desde el FrontEnd.","inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/msal-la-nueva-libreria-de-autenticacion-de-azure-ad\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"http:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/msal-la-nueva-libreria-de-autenticacion-de-azure-ad\/#primaryimage","url":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2019\/07\/MSAL-la-nueva-librer\u00eda-de-autenticaci\u00f3n-de-Azure-AD.jpg","contentUrl":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-content\/uploads\/sites\/21\/2019\/07\/MSAL-la-nueva-librer\u00eda-de-autenticaci\u00f3n-de-Azure-AD.jpg","width":994,"height":788},{"@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\/1103","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=1103"}],"version-history":[{"count":0,"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/posts\/1103\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/media\/1148"}],"wp:attachment":[{"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/media?parent=1103"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/categories?post=1103"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.encamina.com\/piensa-en-software-desarrolla-en-colores\/wp-json\/wp\/v2\/tags?post=1103"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}