Inicio rápido: Inicio de sesión de los usuarios y llamada a Microsoft Graph API desde una aplicación de iOS o macOS

En este inicio rápido descargará y ejecutará un código de ejemplo que muestra cómo una aplicación nativa de iOS o macOS puede realizar el inicio de sesión de usuarios y obtener un token de acceso para llamar a Microsoft Graph API.

Este inicio rápido va dirigido a las aplicaciones de iOS y macOS. Algunos pasos solo son necesarios para las aplicaciones de iOS y así se indicará.

Requisitos previos

Funcionamiento del ejemplo

Muestra cómo funciona la aplicación de ejemplo generada por este inicio rápido.

Registro y descarga de la aplicación de inicio rápido

Tiene dos opciones para comenzar con la aplicación de inicio rápido:

Opción 1: Registrar y configurar de modo automático la aplicación y, luego, descargar el código de ejemplo

Paso 1: Registrar su aplicación

Registro de aplicaciones

  1. Vaya a la experiencia de inicio rápido Azure Portal: Registros de aplicaciones.
  2. Escriba un nombre para la aplicación y seleccione Registrar.
  3. Siga las instrucciones para descargar y configurar automáticamente la nueva aplicación con un solo clic.

Opción 2: registrar y configurar manualmente la aplicación y el código de ejemplo

Paso 1: Registrar su aplicación

Para registrar la aplicación y agregar la información de registro de la aplicación a la solución de forma manual, siga estos pasos:

  1. Inicie sesión en Azure Portal.
  2. Si tiene acceso a varios inquilinos, use el filtro Directorios y suscripciones del menú superior para ir al inquilino en el que quiere registrar la aplicación.
  3. Busque y seleccione Azure Active Directory.
  4. En Administrar, seleccione Registros de aplicaciones > y, luego, Nuevo registro.
  5. Escriba el nombre de la aplicación. Los usuarios de la aplicación pueden ver este nombre, el cual se puede cambiar más tarde.
  6. Seleccione Registrar.
  7. En Administrar, seleccione Autenticación > Agregar una plataforma > iOS.
  8. Escriba el identificador de agrupación de la aplicación. El identificador de agrupación es una cadena única que identifica de forma exclusiva la aplicación, por ejemplo com.<yourname>.identitysample.MSALMacOS. Anote el valor que usa. Tenga en cuenta que la configuración de iOS también va dirigida a las aplicaciones de macOS.
  9. Seleccione Configurar y guarde los detalles de Configuración de MSAL para un momento posterior de este inicio rápido.
  10. Seleccione Listo.

Paso 1: Configuración de la aplicación

Para que el código de ejemplo de este inicio rápido funcione, agregue un identificador URI de redirección compatible con el agente de autenticación.

Ya configurada La aplicación está configurada con estos atributos

Paso 2: Descarga del proyecto de ejemplo

Paso 3: Instalar dependencias

  1. Extraiga el archivo ZIP.
  2. En una ventana de terminal, vaya a la carpeta con el ejemplo de código descargado y ejecute pod install para instalar la biblioteca de MSAL más reciente.

Paso 4: La aplicación está configurada y lista para ejecutarse

Hemos configurado el proyecto con los valores de las propiedades de su aplicación y está preparado para ejecutarse.

Nota

Enter_the_Supported_Account_Info_Here

Paso 4: Configuración del proyecto

Si ha seleccionado la opción 1 anterior, puede omitir estos pasos.

  1. En Xcode, abra el proyecto.

  2. Edite ViewController.swift y reemplace la línea que empieza con "let kClientID" por el siguiente fragmento de código: No olvide actualizar el valor de kClientID con el identificador de cliente que guardó al registrar la aplicación en el portal anteriormente en este inicio rápido:

    let kClientID = "Enter_the_Application_Id_Here"
    
  1. Si va a crear una aplicación para nubes nacionales de Azure AD, reemplace la línea que empieza por "Let kGraphEndpoint" y "Let kAuthority" por los puntos de conexión correctos. Para el acceso global, use los valores predeterminados:

    let kGraphEndpoint = "https://graph.microsoft.com/"
    let kAuthority = "https://login.microsoftonline.com/common"
    
  1. Los demás puntos de conexión se documentan aquí. Por ejemplo, para ejecutar el inicio rápido con Azure AD Alemania, use lo siguiente:

    let kGraphEndpoint = "https://graph.microsoft.de/"
    let kAuthority = "https://login.microsoftonline.de/common"
    
  1. Abra la configuración del proyecto. En la sección Identidad, escriba el identificador de agrupación que especificó en el portal.

  2. Haga clic con el botón derecho en Info.plist y seleccione Abrir como > Código fuente.

  3. En el nodo raíz dict, reemplace Enter_the_bundle_Id_Here por el identificador de agrupación que usó en el portal. Observe el prefijo msauth. de la cadena.

    <key>CFBundleURLTypes</key>
    <array>
       <dict>
          <key>CFBundleURLSchemes</key>
          <array>
             <string>msauth.Enter_the_Bundle_Id_Here</string>
          </array>
       </dict>
    </array>
    
  1. Compile y ejecute la aplicación.

Más información

Lea estas secciones para obtener más información sobre esta guía de inicio rápido.

Obtención de MSAL

MSAL (MSAL.framework) es la biblioteca que se usa para iniciar la sesión de los usuarios y solicitar los tokens que se usan para acceder a una API protegida por la Plataforma de identidad de Microsoft. Puede agregar MSAL a la aplicación mediante el proceso siguiente:

$ vi Podfile

Agregue lo siguiente a este podfile (con el destino de su proyecto):

use_frameworks!

target 'MSALiOS' do
   pod 'MSAL'
end

Ejecute el comando de instalación de CocoaPods:

pod install

Inicializar MSAL

Puede agregar la referencia de MSAL con el código siguiente:

import MSAL

A continuación, realice la inicialización de MSAL con el siguiente código:

let authority = try MSALAADAuthority(url: URL(string: kAuthority)!)

let msalConfiguration = MSALPublicClientApplicationConfig(clientId: kClientID, redirectUri: nil, authority: authority)
self.applicationContext = try MSALPublicClientApplication(configuration: msalConfiguration)
Donde: Descripción
clientId El identificador de aplicación de la aplicación registrada en portal.azure.com
authority La plataforma de identidad de Microsoft. En la mayoría de los casos, será https://login.microsoftonline.com/common.
redirectUri URI de redireccionamiento de la aplicación. Puede pasar "nil" para usar el valor predeterminado o su URI de redireccionamiento personalizado.

Solo en iOS, requisitos adicionales de la aplicación

La aplicación también debe tener lo siguiente en AppDelegate. Esto permite que el SDK de MSAL controle la respuesta del token desde la aplicación de agente de autenticación cuando realice la autenticación.

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {

    return MSALPublicClientApplication.handleMSALResponse(url, sourceApplication: options[UIApplication.OpenURLOptionsKey.sourceApplication] as? String)
}

Nota

En iOS 13+, si adopta UISceneDelegate en lugar de UIApplicationDelegate, coloque este código en la devolución de llamada scene:openURLContexts: (consulte la documentación de Apple). Si admite UISceneDelegate y UIApplicationDelegate para la compatibilidad con sistemas operativos iOS anteriores, la devolución de llamada de MSAL debe colocarse en ambos lugares.

func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {

   guard let urlContext = URLContexts.first else {
      return
   }

   let url = urlContext.url
   let sourceApp = urlContext.options.sourceApplication

   MSALPublicClientApplication.handleMSALResponse(url, sourceApplication: sourceApp)
}

Por último, la aplicación debe tener una entrada LSApplicationQueriesSchemes en Info.plist junto con CFBundleURLTypes. El ejemplo incluye esto.

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

Inicio de sesión de usuarios y solicitud de tokens

MSAL tiene dos métodos para adquirir tokens: acquireToken y acquireTokenSilent.

acquireToken: Obtención de un token interactivamente

Algunas situaciones requieren que los usuarios interactúen con la plataforma de identidad de Microsoft. En estos casos, puede que sea necesario que el usuario final seleccione su cuenta, escriba sus credenciales o dé su consentimiento a los permisos de la aplicación. Por ejemplo,

  • La primera vez que los usuarios inician sesión en la aplicación
  • Si un usuario restablece su contraseña, deberá escribir sus credenciales.
  • Cuando la aplicación solicita acceso a un recurso por primera vez.
  • Cuando se requieren MFA u otras directivas de acceso condicional.
let parameters = MSALInteractiveTokenParameters(scopes: kScopes, webviewParameters: self.webViewParamaters!)
self.applicationContext!.acquireToken(with: parameters) { (result, error) in /* Add your handling logic */}
Donde: Descripción
scopes Contiene los ámbitos que se solicitan (es decir, [ "user.read" ] para Microsoft Graph o [ "<Application ID URL>/scope" ] para las API web personalizadas api://<Application ID>/access_as_user)

acquireTokenSilent: Obtención de un token de acceso de forma automática

Las aplicaciones no requieren que sus usuarios inicien sesión cada vez que soliciten un token. Si el usuario ya ha iniciado sesión, este método permite que las aplicaciones soliciten tokens de forma silenciosa.

self.applicationContext!.getCurrentAccount(with: nil) { (currentAccount, previousAccount, error) in

   guard let account = currentAccount else {
      return
   }

   let silentParams = MSALSilentTokenParameters(scopes: self.kScopes, account: account)
   self.applicationContext!.acquireTokenSilent(with: silentParams) { (result, error) in /* Add your handling logic */}
}
Donde: Descripción
scopes Contiene los ámbitos que se solicitan (es decir, [ "user.read" ] para Microsoft Graph o [ "<Application ID URL>/scope" ] para las API web personalizadas api://<Application ID>/access_as_user)
account La cuenta para la que se solicita un token. Este inicio rápido trata de una aplicación de una sola cuenta. Si quiere compilar una aplicación de varias cuentas, deberá definir una lógica para identificar qué cuenta usar para las solicitudes de token que usen accountsFromDeviceForParameters:completionBlock: y pasen el accountIdentifier correcto.

Ayuda y soporte técnico

Si necesita ayuda, desea informar de un problema o desea obtener información sobre las opciones de soporte técnico, consulte Opciones de ayuda y soporte técnico para desarrolladores.

Pasos siguientes

Pase al tutorial paso a paso en el que se crea una aplicación de iOS o macOS que obtiene un token de acceso de la plataforma de identidad de Microsoft y se usa para llamar a Microsoft Graph API.