{"id":3768,"date":"2018-09-05T08:47:00","date_gmt":"2018-09-05T11:47:00","guid":{"rendered":"http:\/\/www.radians.com.ar\/blog\/?p=3768"},"modified":"2018-09-13T08:47:49","modified_gmt":"2018-09-13T11:47:49","slug":"habilitacion-de-sso-entre-aplicaciones-en-android-mediante-adal-en-azure-ad-azure","status":"publish","type":"post","link":"https:\/\/www.radians.com.ar\/blog\/?p=3768","title":{"rendered":"Habilitacion de SSO entre aplicaciones en Android mediante ADAL en Azure AD {Azure}"},"content":{"rendered":"<p align=\"justify\"><a href=\"http:\/\/www.radians.com.ar\/Articulos\/Images2017\/Azure-AD-Habilitacion-de-SSO-entre-aplic_F805\/AzureAD.png\"><img loading=\"lazy\" decoding=\"async\" title=\"www.radians.com.ar\" style=\"margin: 5px; float: left; display: inline; background-image: none;\" border=\"0\" alt=\"www.radians.com.ar\" src=\"http:\/\/www.radians.com.ar\/Articulos\/Images2017\/Azure-AD-Habilitacion-de-SSO-entre-aplic_F805\/AzureAD_thumb.png\" width=\"240\" align=\"left\" height=\"218\" \/><\/a>Los clientes esperan que se proporcione un inicio de sesi\u00f3n \u00fanico (SSO) para que los usuarios solo tengan que escribir sus credenciales una sola vez y esas credenciales autom\u00e1ticamente funcionen en otras aplicaciones. La dificultad de escribir el nombre de usuario y contrase\u00f1a en una pantalla peque\u00f1a, a menudo combinado con un factor adicional (2FA) como una llamada de tel\u00e9fono o un c\u00f3digo de mensaje de texto, provoca una r\u00e1pida insatisfacci\u00f3n si el usuario tiene que hacer esto m\u00e1s de una vez para su producto.<\/p>\n<p align=\"justify\">Adem\u00e1s, si aplica una plataforma de identidad que puedan usar otras aplicaciones, como cuentas Microsoft o una cuenta de trabajo de Office 365, los clientes esperan que las credenciales est\u00e9n disponibles para todas sus aplicaciones, independientemente del proveedor.<\/p>\n<p align=\"justify\">La plataforma de Microsoft Identity, junto con los SDK correspondientes, se ocupa de este trabajo ingrato y le ofrece la posibilidad de satisfacer a sus clientes con el inicio de sesi\u00f3n \u00fanico, ya sea dentro de su propio conjunto de aplicaciones o, como sucede con nuestra funcionalidad de agente y las aplicaciones de Authenticator, en todo el dispositivo.<\/p>\n<p align=\"justify\">Este tutorial le indicar\u00e1 c\u00f3mo configurar nuestro SDK dentro de la aplicaci\u00f3n para proporcionar esta ventaja a sus clientes.<\/p>\n<p align=\"justify\">Este tutorial se aplica a:<\/p>\n<ul>\n<li>\n<div align=\"justify\">Azure Active Directory <\/div>\n<\/li>\n<li>\n<div align=\"justify\">Azure Active Directory B2C <\/div>\n<\/li>\n<li>\n<div align=\"justify\">Azure Active Directory B2B <\/div>\n<\/li>\n<li>\n<div align=\"justify\">Acceso condicional de Azure Active Directory<\/div>\n<\/li>\n<\/ul>\n<p align=\"justify\">En el documento anterior se considera que tiene conocimientos acerca de c\u00f3mo <a href=\"https:\/\/docs.microsoft.com\/es-es\/azure\/active-directory\/develop\/active-directory-how-to-integrate\">aprovisionar aplicaciones en el portal heredado para Azure Active Directory<\/a> y que ha integrado su aplicaci\u00f3n con el <a href=\"https:\/\/github.com\/AzureAD\/azure-activedirectory-library-for-android\">SDK de Android de Microsoft Identity<\/a>.<\/p>\n<h4 align=\"justify\">Conceptos de inicio de sesi\u00f3n \u00fanico en la plataforma de Microsoft Identity<\/h4>\n<h5 align=\"justify\">Agentes de Microsoft Identity<\/h5>\n<p align=\"justify\">Microsoft proporciona aplicaciones para todas las plataformas m\u00f3viles que permiten el traspaso de credenciales entre aplicaciones de distintos proveedores, y habilita caracter\u00edsticas mejoradas especiales que requieren un \u00fanico lugar seguro desde el que validar las credenciales. A estas aplicaciones las llamamos <strong>agentes<\/strong>. En iOS y Android, estos agentes se consiguen a trav\u00e9s de aplicaciones descargables que los clientes instalan de forma independiente o bien se insertan en el dispositivo gracias a una empresa que administra el dispositivo de manera total o parcial para sus empleados. Gracias a estos agentes, es posible administrar la seguridad de solo unas aplicaciones o bien del dispositivo en su totalidad, en funci\u00f3n de lo que decidan los administradores de TI. En Windows, esta funcionalidad se proporciona mediante un selector de cuentas integrado en el sistema operativo, que se conoce t\u00e9cnicamente como agente de autenticaci\u00f3n web.<\/p>\n<p align=\"justify\">Para m\u00e1s informaci\u00f3n sobre el uso que hacemos de estos agentes y la percepci\u00f3n que tendr\u00e1n de ellos sus clientes durante el proceso de inicio de sesi\u00f3n para la plataforma Microsoft Identity, siga leyendo.<\/p>\n<h5 align=\"justify\">Patrones para iniciar sesi\u00f3n en dispositivos m\u00f3viles<\/h5>\n<p align=\"justify\">El acceso a credenciales en los dispositivos sigue dos patrones b\u00e1sicos para la plataforma Microsoft Identity:<\/p>\n<ul>\n<li>\n<div align=\"justify\">Inicios de sesi\u00f3n no asistidos por agente <\/div>\n<\/li>\n<li>\n<div align=\"justify\">Inicios de sesi\u00f3n asistidos por agente<\/div>\n<\/li>\n<\/ul>\n<h6 align=\"justify\">Inicios de sesi\u00f3n no asistidos por agente<\/h6>\n<p align=\"justify\">Los inicios de sesi\u00f3n no asistidos por agente son experiencias de inicio de sesi\u00f3n que ocurren en l\u00ednea con la aplicaci\u00f3n y usan el almacenamiento local en el dispositivo para esa aplicaci\u00f3n. Este almacenamiento puede compartirse entre las aplicaciones, pero las credenciales est\u00e1n estrechamente vinculadas a la aplicaci\u00f3n o al conjunto de aplicaciones que usan esa credencial. Probablemente haya experimentado esto en muchas aplicaciones m\u00f3viles en las que escribe un nombre de usuario y una contrase\u00f1a en la propia aplicaci\u00f3n.<\/p>\n<p align=\"justify\">Estos inicios de sesi\u00f3n tienen las siguientes ventajas:<\/p>\n<ul>\n<li>\n<div align=\"justify\">La experiencia de usuario se desarrolla por completo dentro de la aplicaci\u00f3n. <\/div>\n<\/li>\n<li>\n<div align=\"justify\">Las credenciales se pueden compartir entre aplicaciones que est\u00e9n firmadas por el mismo certificado, proporcionando una experiencia de inicio de sesi\u00f3n \u00fanico para el conjunto de aplicaciones. <\/div>\n<\/li>\n<li>\n<div align=\"justify\">Se proporciona el control de la experiencia de inicio de sesi\u00f3n a la aplicaci\u00f3n antes y despu\u00e9s del inicio de sesi\u00f3n.<\/div>\n<\/li>\n<\/ul>\n<p align=\"justify\">Estos inicios de sesi\u00f3n tienen las siguientes desventajas:<\/p>\n<ul>\n<li>\n<div align=\"justify\">El usuario no puede experimentar el inicio de sesi\u00f3n \u00fanico entre todas las aplicaciones que usan una identidad de Microsoft Identity, solo en aquellas identidades de Microsoft Identity que su aplicaci\u00f3n ha configurado. <\/div>\n<\/li>\n<li>\n<div align=\"justify\">La aplicaci\u00f3n no se puede usar con las caracter\u00edsticas empresariales m\u00e1s avanzadas, como el acceso condicional, ni utilizar el conjunto de aplicaciones de InTune. <\/div>\n<\/li>\n<li>\n<div align=\"justify\">La aplicaci\u00f3n no admite la autenticaci\u00f3n basada en certificados para usuarios empresariales.<\/div>\n<\/li>\n<\/ul>\n<p align=\"justify\">A continuaci\u00f3n se representa el funcionamiento de los SDK de Microsoft Identity con el almacenamiento compartido de sus aplicaciones para habilitar el inicio de sesi\u00f3n \u00fanico:<\/p>\n<p align=\"justify\"><a href=\"http:\/\/www.radians.com.ar\/Articulos\/Images2017\/Azure-AD-Habilitacion-de-SSO-entre-aplic_F805\/aa.png\"><img loading=\"lazy\" decoding=\"async\" title=\"www.radians.com.ar\" style=\"margin: 5px; display: inline; background-image: none;\" border=\"0\" alt=\"www.radians.com.ar\" src=\"http:\/\/www.radians.com.ar\/Articulos\/Images2017\/Azure-AD-Habilitacion-de-SSO-entre-aplic_F805\/aa_thumb.png\" width=\"544\" height=\"314\" \/><\/a><\/p>\n<h6 align=\"justify\">Inicios de sesi\u00f3n asistidos por agente<\/h6>\n<p align=\"justify\">Los inicios de sesi\u00f3n asistidos por agente son experiencias de inicio de sesi\u00f3n que se producen dentro de la aplicaci\u00f3n del agente y usan el almacenamiento y la seguridad del agente para compartir las credenciales entre todas las aplicaciones del dispositivo que se aplican a la plataforma Microsoft Identity. Esto significa que las aplicaciones dependen del agente para que los usuarios inicien sesi\u00f3n. En iOS y Android, estos agentes se consiguen a trav\u00e9s de aplicaciones descargables que los clientes instalan de forma independiente o bien se insertan en el dispositivo gracias a una empresa que administra el dispositivo para sus usuarios. Un ejemplo de este tipo de aplicaci\u00f3n es la aplicaci\u00f3n Microsoft Authenticator en iOS. En Windows, esta funcionalidad se proporciona mediante un selector de cuentas integrado en el sistema operativo, que se conoce t\u00e9cnicamente como agente de autenticaci\u00f3n web. La experiencia var\u00eda seg\u00fan la plataforma y a veces puede ser problem\u00e1tica para los usuarios si no se administra correctamente. Quiz\u00e1 este modelo le resulte m\u00e1s familiar si tiene instalada la aplicaci\u00f3n Facebook y usa Facebook Connect desde otra aplicaci\u00f3n. La plataforma Microsoft Identity utiliza este mismo modelo.<\/p>\n<p align=\"justify\">En el caso de iOS, esto da lugar a una animaci\u00f3n de &quot;transici\u00f3n&quot; en la que la aplicaci\u00f3n se env\u00eda a un segundo plano y las aplicaciones de Microsoft Authenticator vienen al primer plano para que el usuario seleccione la cuenta en la que quiere iniciar sesi\u00f3n. <\/p>\n<p align=\"justify\">En el caso de Android y Windows, el selector de cuentas se muestra sobre la aplicaci\u00f3n, lo cual interrumpe menos la experiencia del usuario.<\/p>\n<h6 align=\"justify\">\u00bfC\u00f3mo se invoca el agente?<\/h6>\n<p align=\"justify\">Si se instala un agente compatible en el dispositivo, como la aplicaci\u00f3n Microsoft Authenticator, los SDK de Microsoft Identity se ocupar\u00e1n autom\u00e1ticamente de la tarea de invocar al agente cuando un usuario indique que quiere iniciar sesi\u00f3n con alguna de las cuentas de la plataforma Microsoft Identity. Esta cuenta podr\u00eda tratarse de una cuenta personal de Microsoft, una cuenta profesional o educativa o una cuenta que especifique y hospede en Azure mediante nuestros productos B2C y B2B. <\/p>\n<h6 align=\"justify\">C\u00f3mo se garantiza que la aplicaci\u00f3n es v\u00e1lida<\/h6>\n<p align=\"justify\">La necesidad de asegurar la identidad de una llamada de la aplicaci\u00f3n al agente es fundamental para la seguridad que proporcionamos en los inicios de sesi\u00f3n asistidos por agente. Ni IOS ni Android exigen identificadores \u00fanicos que solo son v\u00e1lidos para una aplicaci\u00f3n determinada, por lo que aplicaciones malintencionadas pueden &quot;suplantar&quot; un identificador de la aplicaci\u00f3n leg\u00edtima y recibir los tokens destinados a la aplicaci\u00f3n leg\u00edtima. Para asegurarse de que siempre se comunica con la aplicaci\u00f3n correcta en tiempo de ejecuci\u00f3n, le pedimos al desarrollador que proporcione un redirectURI personalizado al registrar su aplicaci\u00f3n con Microsoft. <strong>A continuaci\u00f3n se describe c\u00f3mo deben dise\u00f1ar los desarrolladores este URI de redirecci\u00f3n.<\/strong> Este URI de redirecci\u00f3n personalizado contiene la huella digital del certificado de la aplicaci\u00f3n y se asegura de que es \u00fanico para la aplicaci\u00f3n por Google Play Store. Cuando una aplicaci\u00f3n llama el agente, este solicita al sistema de operativo Android que le proporcione la huella digital del certificado que llama el agente. El agente proporciona esta huella digital del certificado a Microsoft en la llamada a nuestro sistema de identidad. Si la huella digital del certificado de la aplicaci\u00f3n no coincide con la huella digital del certificado proporcionada por el desarrollador durante el registro, se denegar\u00e1 el acceso a los tokens para el recurso que est\u00e1 solicitando la aplicaci\u00f3n. Esta comprobaci\u00f3n asegura que solo la aplicaci\u00f3n registrada por el desarrollador recibe los tokens.<\/p>\n<p align=\"justify\"><strong>El desarrollador tiene la opci\u00f3n de elegir si el SDK de Microsoft Identity llama al agente o usa el flujo sin asistencia del agente.<\/strong> Sin embargo, si el desarrollador decide no usar el flujo asistido por agente, no podr\u00e1 beneficiarse del uso de las credenciales de SSO que el usuario puede ya haber agregado en el dispositivo; adem\u00e1s, impide que la aplicaci\u00f3n se use con las caracter\u00edsticas empresariales que Microsoft proporciona a sus clientes, como el acceso condicional, las funcionalidades de administraci\u00f3n de Intune y la autenticaci\u00f3n basada en certificados.<\/p>\n<p align=\"justify\">Estos inicios de sesi\u00f3n tienen las siguientes ventajas:<\/p>\n<ul>\n<li>\n<div align=\"justify\">El usuario experimenta el inicio de sesi\u00f3n \u00fanico en todas sus aplicaciones, con independencia del proveedor. <\/div>\n<\/li>\n<li>\n<div align=\"justify\">La aplicaci\u00f3n puede usar las caracter\u00edsticas empresariales m\u00e1s avanzadas, como el acceso condicional, o usar el conjunto de productos de InTune. <\/div>\n<\/li>\n<li>\n<div align=\"justify\">La aplicaci\u00f3n puede admitir la autenticaci\u00f3n basada en certificados para los usuarios empresariales. <\/div>\n<\/li>\n<li>\n<div align=\"justify\">La experiencia de inicio de sesi\u00f3n es mucho m\u00e1s segura, ya que tanto la identidad de la aplicaci\u00f3n como el usuario se verifican por parte de la aplicaci\u00f3n de agente con algoritmos de seguridad y sistemas de cifrado adicionales.<\/div>\n<\/li>\n<\/ul>\n<p align=\"justify\">Estos inicios de sesi\u00f3n tienen las siguientes desventajas:<\/p>\n<ul>\n<li>\n<div align=\"justify\">En iOS, el usuario pasa por un proceso externo a la experiencia de la aplicaci\u00f3n mientras se eligen las credenciales. <\/div>\n<\/li>\n<li>\n<div align=\"justify\">Se pierde la capacidad de administrar la experiencia de inicio de sesi\u00f3n para los clientes dentro de la aplicaci\u00f3n.<\/div>\n<\/li>\n<\/ul>\n<p align=\"justify\">A continuaci\u00f3n se representa el funcionamiento de los SDK de Microsoft Identity con las aplicaciones de agente para habilitar el inicio de sesi\u00f3n \u00fanico:<\/p>\n<p align=\"justify\"><a href=\"http:\/\/www.radians.com.ar\/Articulos\/Images2017\/Azure-AD-Habilitacion-de-SSO-entre-aplic_F805\/aaa.png\"><img loading=\"lazy\" decoding=\"async\" title=\"www.radians.com.ar\" style=\"margin: 5px; display: inline; background-image: none;\" border=\"0\" alt=\"www.radians.com.ar\" src=\"http:\/\/www.radians.com.ar\/Articulos\/Images2017\/Azure-AD-Habilitacion-de-SSO-entre-aplic_F805\/aaa_thumb.png\" width=\"544\" height=\"590\" \/><\/a><\/p>\n<p align=\"justify\">Una vez que disponga de toda esta informaci\u00f3n, probablemente pueda entender e implementar mejor el inicio de sesi\u00f3n \u00fanico en la aplicaci\u00f3n mediante los SDK y la plataforma Microsoft Identity.<\/p>\n<h4 align=\"justify\">Habilitaci\u00f3n del SSO entre aplicaciones mediante ADAL<\/h4>\n<p align=\"justify\">Ahora vamos a usar el SDK de Android de ADAL para:<\/p>\n<ul>\n<li>\n<div align=\"justify\">Activar el SSO no asistido por agente para su conjunto de aplicaciones <\/div>\n<\/li>\n<li>\n<div align=\"justify\">Activar la compatibilidad para el SSO asistido por agente<\/div>\n<\/li>\n<\/ul>\n<h5 align=\"justify\">Activaci\u00f3n del SSO para el SSO no asistido por agente<\/h5>\n<p align=\"justify\">En el caso del SSO entre aplicaciones no asistido por agente, los SDK de Microsoft Identity administran autom\u00e1ticamente gran parte de la complejidad que entra\u00f1a este proceso. Esto incluye la b\u00fasqueda del usuario adecuado en la memoria cach\u00e9 y el mantenimiento de una lista de usuarios que han iniciado sesi\u00f3n en la que se pueden realizar consultas.<\/p>\n<p align=\"justify\">Para habilitar el SSO entre aplicaciones de las que es el propietario debe hacer lo siguiente:<\/p>\n<ol>\n<li>\n<div align=\"justify\">Garantizar que todas las aplicaciones utilizan el mismo identificador de cliente o aplicaci\u00f3n <\/div>\n<\/li>\n<li>\n<div align=\"justify\">Garantizar que todas las aplicaciones tienen el mismo conjunto de SharedUserID. <\/div>\n<\/li>\n<li>\n<div align=\"justify\">Garantizar que todas las aplicaciones comparten el mismo certificado de firma de Google Play Store para que puedan compartir el almacenamiento.<\/div>\n<\/li>\n<\/ol>\n<h6 align=\"justify\">Paso 1: Uso del mismo identificador de cliente o aplicaci\u00f3n para todas las aplicaciones de su conjunto<\/h6>\n<p align=\"justify\">A fin de que la plataforma Microsoft Identity sepa que puede compartir tokens entre las aplicaciones, es necesario que todas ellas compartan el mismo identificador de cliente o aplicaci\u00f3n. Se trata del identificador \u00fanico que se le suministr\u00f3 al registrar su primera aplicaci\u00f3n en el portal.<\/p>\n<p align=\"justify\">Quiz\u00e1s se pregunte c\u00f3mo se puede identificar a las diferentes aplicaciones en el servicio Microsoft Identity si todas utilizan el mismo identificador. Pues bien, esto es posible gracias a los <strong>URI de redirecci\u00f3n<\/strong>. Cada aplicaci\u00f3n puede tener varios URI de redirecci\u00f3n registrados en el portal de incorporaci\u00f3n. Cada una de las aplicaciones de su conjunto tendr\u00e1 diferentes URI de redirecci\u00f3n. A continuaci\u00f3n se muestra un ejemplo t\u00edpico de su aspecto:<\/p>\n<p align=\"justify\">URI de redirecci\u00f3n de la aplicaci\u00f3n 1: <code>msauth:\/\/com.example.userapp\/IcB5PxIyvbLkbFVtBI%2FitkW%2Fejk%3D      <br \/><\/code>URI de redirecci\u00f3n de la aplicaci\u00f3n 2: <code>msauth:\/\/com.example.userapp1\/KmB7PxIytyLkbGHuI%2UitkW%2Fejk%4E      <br \/><\/code>URI de redirecci\u00f3n de la aplicaci\u00f3n 3: <code>msauth:\/\/com.example.userapp2\/Pt85PxIyvbLkbKUtBI%2SitkW%2Fejk%9F      <br \/><\/code>\u2026.<\/p>\n<p align=\"justify\">Estos est\u00e1n anidados en el mismo identificador de cliente o aplicaci\u00f3n y se consultan en funci\u00f3n del URI de redirecci\u00f3n que nos devuelve en su configuraci\u00f3n del SDK.<\/p>\n<p align=\"justify\"><a href=\"http:\/\/www.radians.com.ar\/Articulos\/Images2017\/Azure-AD-Habilitacion-de-SSO-entre-aplic_F805\/aaaa.png\"><img loading=\"lazy\" decoding=\"async\" title=\"www.radians.com.ar\" style=\"margin: 5px; display: inline; background-image: none;\" border=\"0\" alt=\"www.radians.com.ar\" src=\"http:\/\/www.radians.com.ar\/Articulos\/Images2017\/Azure-AD-Habilitacion-de-SSO-entre-aplic_F805\/aaaa_thumb.png\" width=\"544\" height=\"422\" \/><\/a><\/p>\n<p align=\"justify\"><em>Tenga en cuenta que el formato de estos URI de redirecci\u00f3n se explica a continuaci\u00f3n. Puede usar cualquier URI de redirecci\u00f3n, a menos que desee utilizar el agente, en cuyo caso debe tener un aspecto como el anterior<\/em><\/p>\n<h6 align=\"justify\">Paso 2: Configuraci\u00f3n del almacenamiento compartido en Android<\/h6>\n<p align=\"justify\">La definici\u00f3n de <code>SharedUserID<\/code> est\u00e1 fuera del \u00e1mbito de este documento, pero se puede aprender en la documentaci\u00f3n de Google Android, en el <a href=\"http:\/\/developer.android.com\/guide\/topics\/manifest\/manifest-element.html\">Manifiesto<\/a>. Lo importante es que decida c\u00f3mo desea llamar a su sharedUserID y usar ese nombre en todas sus aplicaciones.<\/p>\n<p align=\"justify\">Una vez que tiene <code>SharedUserID<\/code> en todas las aplicaciones, estar\u00e1 listo para utilizar SSO.<\/p>\n<p align=\"justify\"><a href=\"http:\/\/www.radians.com.ar\/Articulos\/Images2017\/Azure-AD-Habilitacion-de-SSO-entre-aplic_F805\/bb.png\"><img loading=\"lazy\" decoding=\"async\" title=\"www.radians.com.ar\" style=\"margin: 5px; border: 0px currentcolor; border-image: none; display: inline; background-image: none;\" border=\"0\" alt=\"www.radians.com.ar\" src=\"http:\/\/www.radians.com.ar\/Articulos\/Images2017\/Azure-AD-Habilitacion-de-SSO-entre-aplic_F805\/bb_thumb.png\" width=\"540\" height=\"162\" \/><\/a><\/p>\n<p>Eso es todo. El SDK de Microsoft Identity ahora compartir\u00e1 las credenciales entre todas sus aplicaciones. La lista de usuarios tambi\u00e9n se compartir\u00e1 entre las instancias de la aplicaci\u00f3n.<\/p>\n<h5>Activaci\u00f3n del SSO para el SSO asistido por agente<\/h5>\n<p>La capacidad de una aplicaci\u00f3n de usar cualquier agente que est\u00e9 instalado en el dispositivo est\u00e1 <strong>desactivada de forma predeterminada<\/strong>. Para poder utilizar la aplicaci\u00f3n con el agente debe realizar algunos pasos de configuraci\u00f3n adicionales y agregar c\u00f3digo a la aplicaci\u00f3n.<\/p>\n<p>Los pasos que debe seguir son los siguientes:<\/p>\n<ol>\n<li>Habilitar el modo de agente en la llamada al c\u00f3digo de la aplicaci\u00f3n para el SDK de Microsoft <\/li>\n<li>Establecer un nuevo URI de redirecci\u00f3n e indicarlo tanto en la aplicaci\u00f3n como en el registro de la aplicaci\u00f3n <\/li>\n<li>Configurar los permisos correctos en el manifiesto de Android<\/li>\n<\/ol>\n<h6>Paso 1: Habilitar el modo de agente en la aplicaci\u00f3n<\/h6>\n<p>La capacidad de la aplicaci\u00f3n de utilizar el agente se activa al crear la configuraci\u00f3n inicial de la instancia de autenticaci\u00f3n. Para ello, configure el tipo de ApplicationSettings en el c\u00f3digo:<\/p>\n<pre><code>AuthenticationSettings.Instance.setUseBroker(true);\n<\/code><\/pre>\n<h6>Paso 2: Establecer un nuevo URI de redirecci\u00f3n con el esquema de direcci\u00f3n URL<\/h6>\n<p>Para garantizar que siempre se devuelvan los tokens de credencial a la aplicaci\u00f3n correcta, es necesario asegurarse de que se llama a la aplicaci\u00f3n de tal manera que el sistema operativo Android pueda verificarla. El sistema operativo Android utiliza el hash del certificado en Google Play Store. Este sistema no se puede suplantar por ninguna aplicaci\u00f3n malintencionada. Por lo tanto, se aprovecha este elemento junto con el URI de la aplicaci\u00f3n de agente para garantizar que los tokens se devuelven a la aplicaci\u00f3n correcta. Es necesario establecer este URI de redirecci\u00f3n \u00fanico en la aplicaci\u00f3n y configurarlo como URI de redirecci\u00f3n en nuestro portal para desarrolladores.<\/p>\n<p>Para ser correcto, el URI de redirecci\u00f3n debe presentar el formato siguiente: <code>msauth:\/\/packagename\/Base64UrlencodedSignature <\/code><\/p>\n<p>Por ejemplo: <em>msauth:\/\/com.example.userapp\/IcB5PxIyvbLkbFVtBI%2FitkW%2Fejk%3D<\/em><\/p>\n<p>Este URI de redirecci\u00f3n debe especificarse en el registro de la aplicaci\u00f3n mediante <a href=\"https:\/\/portal.azure.com\/\">Azure Portal<\/a>. Para m\u00e1s informaci\u00f3n sobre el registro de aplicaciones de Azure AD, consulte <a href=\"https:\/\/docs.microsoft.com\/es-es\/azure\/active-directory\/develop\/active-directory-how-to-integrate\">Integraci\u00f3n con Azure Active Directory<\/a>.<\/p>\n<h6>Paso 3: Configurar los permisos correctos en la aplicaci\u00f3n<\/h6>\n<p>Nuestra aplicaci\u00f3n de agente en Android utiliza la caracter\u00edstica de administrador de cuentas del SO Android para administrar las credenciales entre aplicaciones. Para utilizar el agente en Android el manifiesto de la aplicaci\u00f3n debe tener permisos para usar cuentas del administrador de cuentas. Esto se explica en detalle en la <a href=\"http:\/\/developer.android.com\/reference\/android\/accounts\/AccountManager.html\">documentaci\u00f3n de Google para el administrador de cuentas que puede encontrar aqu\u00ed<\/a><\/p>\n<p>En concreto, estos permisos son:<\/p>\n<ul>\n<li><code>GET_ACCOUNTS<\/code><\/li>\n<li><code>USE_CREDENTIALS<\/code><\/li>\n<li><code>MANAGE_ACCOUNTS<\/code><\/li>\n<p><!--EndFragment--><\/p>\n<\/ul>\n<h5>Ya ha configurado el SSO.<\/h5>\n<p>Ahora, el SDK de Microsoft Identity compartir\u00e1 autom\u00e1ticamente las credenciales entre las aplicaciones e invocar\u00e1 al agente si est\u00e1 presente en su dispositivo.<\/p>\n<p>Mas Info: <a title=\"https:\/\/docs.microsoft.com\/es-es\/azure\/active-directory\/develop\/active-directory-sso-android#sso-concepts-in-the-microsoft-identity-platform\" href=\"https:\/\/docs.microsoft.com\/es-es\/azure\/active-directory\/develop\/active-directory-sso-android#sso-concepts-in-the-microsoft-identity-platform\">Microsoft Docs \u2013 Azure Active Directory<\/a><\/p>\n<p>Saludos. Roberto Di Lello<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Los clientes esperan que se proporcione un inicio de sesi\u00f3n \u00fanico (SSO) para que los&#8230;<\/p>\n","protected":false},"author":1,"featured_media":4291,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[303,325],"tags":[217,312],"class_list":["post-3768","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-azure","category-directory-services","tag-ad-domain-services","tag-azure"],"_links":{"self":[{"href":"https:\/\/www.radians.com.ar\/blog\/index.php?rest_route=\/wp\/v2\/posts\/3768","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.radians.com.ar\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.radians.com.ar\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.radians.com.ar\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.radians.com.ar\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3768"}],"version-history":[{"count":1,"href":"https:\/\/www.radians.com.ar\/blog\/index.php?rest_route=\/wp\/v2\/posts\/3768\/revisions"}],"predecessor-version":[{"id":3769,"href":"https:\/\/www.radians.com.ar\/blog\/index.php?rest_route=\/wp\/v2\/posts\/3768\/revisions\/3769"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.radians.com.ar\/blog\/index.php?rest_route=\/wp\/v2\/media\/4291"}],"wp:attachment":[{"href":"https:\/\/www.radians.com.ar\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3768"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.radians.com.ar\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3768"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.radians.com.ar\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3768"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}