Compartir a través de


Configuración de una aplicación móvil que llama a las API web

Se aplica a: Círculo verde con un símbolo de marca de verificación blanca. Inquilinos de personal Círculo blanco con un símbolo X gris. Inquilinos externos (obtener más información)

Una vez creada la aplicación, aprenderá a configurar el código con los parámetros de registro de la aplicación. Las aplicaciones móviles presentan algunas complejidades relacionadas con la adaptación a su marco de creación.

Bibliotecas de Microsoft que admiten aplicaciones móviles

Las siguientes bibliotecas de Microsoft admiten aplicaciones móviles:

Plataforma Proyecto en
GitHub (en inglés)
Paquete Introducción
iniciado
Inicio de sesión de usuarios Acceder a las API web Disponibilidad general (GA) o
Versión preliminar pública1
Android (Java) MSAL para Android MSAL Inicio rápido La biblioteca puede solicitar tokens de id. para el inicio de sesión de usuario. La biblioteca puede solicitar tokens de acceso para las API web protegidas. Disponibilidad general
Android (Kotlin) MSAL para Android MSAL La biblioteca puede solicitar tokens de id. para el inicio de sesión de usuario. La biblioteca puede solicitar tokens de acceso para las API web protegidas. Disponibilidad general
iOS (Swift/Obj-C) MSAL para iOS y macOS MSAL Tutorial La biblioteca puede solicitar tokens de id. para el inicio de sesión de usuario. La biblioteca puede solicitar tokens de acceso para las API web protegidas. Disponibilidad general

1Los términos de licencia universal de Online Services se aplican a las bibliotecas en la versión preliminar pública.

Creación de instancias de la aplicación

Androide

Las aplicaciones móviles usan la clase PublicClientApplication. Aquí se muestra cómo crear una instancia:

PublicClientApplication sampleApp = new PublicClientApplication(
                    this.getApplicationContext(),
                    R.raw.auth_config);

Ios

Las aplicaciones móviles de iOS necesitan crear una instancia de la clase MSALPublicClientApplication. Para crear una instancia de la clase, use el código siguiente.

NSError *msalError = nil;

MSALPublicClientApplicationConfig *config = [[MSALPublicClientApplicationConfig alloc] initWithClientId:@"<your-client-id-here>"];
MSALPublicClientApplication *application = [[MSALPublicClientApplication alloc] initWithConfiguration:config error:&msalError];
let config = MSALPublicClientApplicationConfig(clientId: "<your-client-id-here>")
if let application = try? MSALPublicClientApplication(configuration: config){ /* Use application */}

Las propiedades MSALPublicClientApplicationConfig adicionales pueden invalidar la autoridad predeterminada, especificar un URI de redirección o cambiar el comportamiento del almacenamiento en caché del token de MSAL.

Plataforma Universal de Windows (UWP)

En esta sección se explica cómo crear instancias de la aplicación para aplicaciones para UWP.

Creación de instancias de la aplicación

En UWP, la manera más sencilla de crear instancias de la aplicación es mediante el código siguiente. En este código, ClientId es el GUID de la aplicación registrada.

var app = PublicClientApplicationBuilder.Create(clientId)
                                        .Build();

Otros métodos With<Parameter> establecen el elemento primario de la interfaz de usuario, invalidan la autoridad predeterminada, especifican un nombre de cliente y una versión para la telemetría, especifican un URI de redirección y especifican el generador HTTP que se va a usar. El generador HTTP podría usarse, por ejemplo, para controlar los servidores proxy y para especificar la telemetría y el registro.

En las secciones siguientes se proporciona más información sobre la creación de instancias de la aplicación.

Especificación de la ventana, la actividad o la interfaz de usuario primaria

En Android, pase la actividad primaria antes de realizar la autenticación interactiva. En iOS, cuando se use un agente, pase ViewController. Del mismo modo en UWP, puede que quiera pasar la ventana primaria. Se pasa al adquirir el token. Pero al crear la aplicación, también puede especificar una devolución de llamada como delegado que devuelva UIParent.

IPublicClientApplication application = PublicClientApplicationBuilder.Create(clientId)
  .ParentActivityOrWindowFunc(() => parentUi)
  .Build();

En Android, se recomienda que use CurrentActivityPlugin. El código del generador PublicClientApplication resultante es similar al de este ejemplo:

// Requires MSAL.NET 4.2 or above
var pca = PublicClientApplicationBuilder
  .Create("<your-client-id-here>")
  .WithParentActivityOrWindow(() => CrossCurrentActivity.Current)
  .Build();
Búsqueda de más parámetros de compilación de aplicaciones

Para obtener una lista de todos los métodos que están disponibles en PublicClientApplicationBuilder, consulte la lista de métodos.

Para obtener una descripción de todas las opciones que se exponen en PublicClientApplicationOptions, consulte la documentación de referencia.

Tareas de MSAL para iOS y macOS

Estas tareas son necesarias cuando se usa MSAL para iOS y macOS:

Tareas para UWP

En UWP, puede usar redes corporativas. En las siguientes secciones se explican las tareas que debe completar en el escenario corporativo.

Para obtener más información, consulte Consideraciones específicas de UWP con MSAL.NET.

Configuración de la aplicación para usar el agente

En Android e iOS, los agentes permiten:

  • Inicio de sesión único (SSO): puede usar el SSO para los dispositivos registrados con Microsoft Entra ID. Al usar SSO, los usuarios no tienen que iniciar sesión en cada aplicación.
  • Identificación de dispositivos: esta opción habilita las directivas de acceso condicional relacionadas con los dispositivos de Microsoft Entra. El proceso de autenticación usa el certificado de dispositivo que se creó al unir el dispositivo al área de trabajo.
  • Comprobación de identificación de la aplicación: cuando una aplicación llama al agente, pasa su URL de redireccionamiento. A continuación, el agente lo comprueba.

Habilitación del agente para MSAL para Android

Consulte Autenticación asincrónica en Android para obtener información sobre cómo habilitar un agente en Android.

Habilitación del agente para MSAL para iOS y macOS

La autenticación con agente está habilitada de forma predeterminada para los escenarios de Microsoft Entra en MSAL para iOS y macOS.

En las secciones siguientes se proporcionan instrucciones para configurar tu aplicación para la compatibilidad con la autenticación intermediada para iOS y macOS. En los dos conjuntos de instrucciones, algunos de los pasos difieren.

Autenticación asincrónica de MSAL para iOS y macOS

La autenticación con agente está habilitada de forma predeterminada para los escenarios de Microsoft Entra.

Paso 1: Actualizar AppDelegate para controlar la devolución de llamada

Cuando MSAL para iOS y macOS llama al agente, este a su vez vuelve a llamar a la aplicación con el método openURL. Dado que MSAL espera la respuesta del agente, la aplicación debe cooperar para volver a llamar a MSAL. Para configurar este comportamiento, actualice el archivo AppDelegate.m para invalidar el método, como se muestra en los ejemplos de código siguientes.

- (BOOL)application:(UIApplication *)app
            openURL:(NSURL *)url
            options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
{
    return [MSALPublicClientApplication handleMSALResponse:url
                                         sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]];
}
    func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {

        guard let sourceApplication = options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String else {
            return false
        }

        return MSALPublicClientApplication.handleMSALResponse(url, sourceApplication: sourceApplication)
    }

Si adoptó UISceneDelegate en iOS 13 o posterior, coloque la devolución de llamada de MSAL en scene:openURLContexts: de UISceneDelegate en su lugar. MSAL handleMSALResponse:sourceApplication: solo debe llamarse una vez para cada dirección URL.

Para más información, consulte la documentación de Apple.

Paso 2: Registrar un esquema de dirección URL

MSAL para iOS y macOS usa direcciones URL para invocar al agente y devolver su respuesta a la aplicación. Para finalizar el recorrido de ida y vuelta, registre un esquema de dirección URL para la aplicación en el archivo Info.plist.

Para registrar un esquema para la aplicación:

  1. Prefije el esquema de la dirección URL personalizada con msauth.

  2. Agregue el identificador del paquete al final del esquema. Siga este patrón:

    $"msauth.(BundleId)"

    Aquí, BundleId identifica su dispositivo de manera exclusiva. Por ejemplo, si BundleId es yourcompany.xforms, el esquema de dirección URL es msauth.com.yourcompany.xforms.

    Este esquema de dirección URL se convertirá en parte del URI de redirección que se usa para identificar de forma única la aplicación cuando recibe la respuesta del agente. Asegúrese de que el URI de redirección en el formato msauth.(BundleId)://auth esté registrado para su aplicación.

    <key>CFBundleURLTypes</key>
    <array>
        <dict>
            <key>CFBundleURLSchemes</key>
            <array>
                <string>msauth.[BUNDLE_ID]</string>
            </array>
        </dict>
    </array>
    

Paso 3: Agregar LSApplicationQueriesSchemes

Agregue LSApplicationQueriesSchemes para permitir llamadas a la aplicación Microsoft Authenticator, si está instalada.

Nota

El esquema msauthv3 es necesario si la aplicación se ha compilado con Xcode 11 y versiones posteriores.

Este es un ejemplo sobre cómo agregar LSApplicationQueriesSchemes:

<key>LSApplicationQueriesSchemes</key>
<array>
  <string>msauthv2</string>
  <string>msauthv3</string>
</array>

Pasos siguientes

Avance al siguiente artículo de este escenario, Obtención de un token.