Compartir a través de


Tutorial: Preparación de la aplicación iOS (Swift) para la autenticación

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

Este es el segundo tutorial de la serie de tutoriales que muestra cómo agregar la biblioteca de autenticación de Microsoft (MSAL) para iOS y macOS a la aplicación Swift de iOS.

Antes de empezar, use el selector Elegir un tipo de inquilino en la parte superior de esta página para seleccionar el tipo de inquilino. Microsoft Entra ID proporciona dos configuraciones de inquilino, recursos y externa. Una configuración de entorno de trabajo está destinada a los empleados, las aplicaciones internas y otros recursos de la organización. Un inquilino externo es para las aplicaciones orientadas al cliente.

En este tutorial, harás lo siguiente:

  • Agregue el marco MSAL a una aplicación de iOS (Swift).
  • Cree una instancia del SDK.
  • Configure las opciones del proyecto de Xcode.

Prerrequisitos

  • Registre una nueva aplicación web cliente en el Centro de administración de Microsoft Entra, configurada para Cuentas en cualquier directorio organizativo y cuentas personales de Microsoft. Consulte Registro de una aplicación para obtener más detalles. Registre los valores siguientes en la página Información general de la aplicación para su uso posterior:
    • Id. de aplicación (cliente)
    • Id. de directorio (inquilino)
  • Xcode.
  • Proyecto de iOS (Swift).

Añadir una URL de redireccionamiento de la plataforma

Para especificar el tipo de aplicación en el registro de la aplicación, siga estos pasos:

  1. En Administrar, seleccione Autenticación>Agregar una plataforma>iOS/macOS.
  2. Escriba el Bundle ID de su proyecto. Si descargó el ejemplo de código, el ID del paquete es com.microsoft.identitysample.MSALiOS. Si va a crear su propio proyecto, seleccione el proyecto en Xcode y abra la pestaña General. El identificador de la agrupación aparece en la sección Identidad.
  3. Seleccione Configurar y guarde la configuración de MSAL que aparece en la página Configuración de MSAL para que pueda especificarla cuando configure la aplicación más tarde.
  4. Seleccione Listo.

Adición del marco MSAL a una aplicación de iOS (Swift)

Elija una de las siguientes formas de instalar la biblioteca de MSAL en su aplicación:

Vainas de cacao

  1. Si usa CocoaPods, instale MSAL, para lo que primero debe crear un archivo vacío llamado podfile en la misma carpeta que el archivo .xcodeproj del proyecto. Agregue lo siguiente a podfile:

    use_frameworks!
    
    target '<your-target-here>' do
       pod 'MSAL'
    end
    
  2. Reemplace <your-target-here> por el nombre del proyecto.

  3. En una ventana de terminal, vaya a la carpeta que contiene el archivo podfile que ha creado y ejecute pod install para instalar la biblioteca MSAL.

  4. Cierre Xcode y abra <your project name>.xcworkspace para volver a cargar el proyecto en Xcode.

Cartago

Si estás utilizando Carthage, instala MSAL agregándolo a tu Cartfile:

github "AzureAD/microsoft-authentication-library-for-objc" "master"

En una ventana de terminal, en el mismo directorio que el archivo Cartfile actualizado, ejecute el siguiente comando para que Carthage actualice las dependencias del proyecto.

Ios:

carthage update --platform iOS

macOS:

carthage update --platform macOS

Manualmente

También puede usar un submódulo de Git o consultar la versión más reciente y usarla como marco en su aplicación.

Agregue el registro de la aplicación.

A continuación, agregamos el registro de tu aplicación al código.

En primer lugar, agregue la siguiente instrucción import en la parte superior del archivo ViewController.swift y AppDelegate.swift o SceneDelegate.swift:

import MSAL

A continuación, agregue el código siguiente a ViewController.swift antes de viewDidLoad():

// Update the below to your client ID. The below is for running the demo only
let kClientID = "Your_Application_Id_Here"
let kGraphEndpoint = "https://graph.microsoft.com/" // the Microsoft Graph endpoint
let kAuthority = "https://login.microsoftonline.com/common" // this authority allows a personal Microsoft account and a work or school account in any organization's Azure AD tenant to sign in

let kScopes: [String] = ["user.read"] // request permission to read the profile of the signed-in user

var accessToken = String()
var applicationContext : MSALPublicClientApplication?
var webViewParameters : MSALWebviewParameters?
var currentAccount: MSALAccount?

El único valor que debe modificar es el asignado a kClientID como Identificador de aplicación. Este valor forma parte de los datos de Configuración de MSAL que guardó en el paso del principio de este tutorial para registrar la aplicación.

Creación de una instancia del SDK

Para crear una instancia de MSAL en el proyecto, siga estos pasos:

Agregue el método ViewController a la clase initMSAL:

    func initMSAL() throws {

        guard let authorityURL = URL(string: kAuthority) else {
            self.updateLogging(text: "Unable to create authority URL")
            return
        }

        let authority = try MSALAADAuthority(url: authorityURL)

        let msalConfiguration = MSALPublicClientApplicationConfig(clientId: kClientID, redirectUri: nil, authority: authority)
        self.applicationContext = try MSALPublicClientApplication(configuration: msalConfiguration)
        self.initWebViewParams()
    }

Aún en la clase ViewController y después del método initMSAL, agregue el método initWebViewParams:

Código para iOS:

func initWebViewParams() {
        self.webViewParameters = MSALWebviewParameters(authPresentationViewController: self)
    }

Código para macOS:

func initWebViewParams() {
        self.webViewParameters = MSALWebviewParameters()
    }

Configuración de los valores del proyecto de Xcode

Agregue un nuevo grupo de cadenas de claves a tu proyecto Signing & Capabilities. El grupo de cadena de claves debe ser com.microsoft.adalcache en iOS y com.microsoft.identity.universalstorage en macOS.

Interfaz de usuario de Xcode que muestra cómo se debe configurar el grupo de cadena de claves.

Solo para iOS, configure los esquemas de dirección URL

En este paso, registrará CFBundleURLSchemes para que se pueda redirigir al usuario a la aplicación después de iniciar sesión. Por cierto, LSApplicationQueriesSchemes también permite a la aplicación hacer uso de Microsoft Authenticator.

En Xcode, abra Info.plist como un archivo de código fuente y agregue lo siguiente en la sección <dict>. Sustituya [BUNDLE_ID] por el valor que ha usado anteriormente. Si descargó el código, el identificador del paquete es com.microsoft.identitysample.MSALiOS. Si va a crear su propio proyecto, seleccione el proyecto en Xcode y abra la pestaña General. El identificador de la agrupación aparece en la sección Identidad.

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

Solo para macOS, configure App Sandbox.

  1. Vaya a la configuración del proyecto de Xcode >pestaña Funcionalidades>App Sandbox
  2. Seleccione la casilla Conexiones salientes (cliente).

Pasos siguientes

Este es el segundo tutorial de la serie de tutoriales que muestra cómo agregar la biblioteca de autenticación de Microsoft (MSAL) para iOS y macOS a la aplicación Swift de iOS.

Antes de empezar, use el selector Elegir un tipo de inquilino en la parte superior de esta página para seleccionar el tipo de inquilino. Microsoft Entra ID proporciona dos configuraciones de inquilino, recursos y externa. Una configuración de entorno de trabajo está destinada a los empleados, las aplicaciones internas y otros recursos de la organización. Un inquilino externo es para las aplicaciones orientadas al cliente.

En este tutorial, hará lo siguiente;

  • Agregue el marco MSAL a una aplicación de iOS (Swift).
  • Cree una instancia del SDK.

Prerrequisitos

  • Registre una nueva aplicación web cliente en el Centro de administración de Microsoft Entra, configurada para Cuentas en cualquier directorio organizativo y cuentas personales de Microsoft. Consulte Registro de una aplicación para obtener más detalles. Registre los valores siguientes en la página Información general de la aplicación para su uso posterior:
    • Id. de aplicación (cliente)
    • Id. de directorio (inquilino)
  • Xcode.
  • Proyecto de iOS (Swift).

Añadir una URL de redireccionamiento de la plataforma

Para especificar el tipo de aplicación en el registro de la aplicación, siga estos pasos:

  1. En Administrar, seleccione Autenticación>Agregar una plataforma>iOS/macOS.
  2. Escriba el Bundle ID de su proyecto. Si descargó el ejemplo de código, el ID del paquete es com.microsoft.identitysample.MSALiOS. Si va a crear su propio proyecto, seleccione el proyecto en Xcode y abra la pestaña General. El identificador de la agrupación aparece en la sección Identidad.
  3. Seleccione Configurar y guarde la configuración de MSAL que aparece en la página Configuración de MSAL para que pueda especificarla cuando configure la aplicación más tarde.
  4. Seleccione Listo.

Habilitación del flujo de cliente público

Para identificar la aplicación como cliente público, siga estos pasos:

  1. En Administrar, seleccione Autenticación.

  2. En Configuración avanzada, para Permitir flujos de cliente públicos, seleccione .

  3. Haga clic en Guardar para guardar los cambios.

Adición del marco MSAL a una aplicación de iOS (Swift)

El SDK de autenticación de MSAL se usa para integrar la autenticación en las aplicaciones mediante OAuth2 estándar y OpenID Connect. Permite iniciar sesión de usuarios o aplicaciones con identidades de Microsoft. Para agregar MSAL al proyecto de iOS (Swift), siga estos pasos:

  1. Abra el proyecto de iOS en Xcode.
  2. Seleccione Agregar dependencias de paquete... en el menú Archivo .
  3. Escriba https://github.com/AzureAD/microsoft-authentication-library-for-objc como dirección URL del paquete y elija Agregar paquete.

Actualización del identificador de lote

En el ecosistema de Apple, un identificador de agrupación es un identificador único para una aplicación. Para actualizar el identificador de agrupación en el proyecto, siga estos pasos:

  1. Abra la configuración del proyecto. En la sección Identidad, escriba el Identificador de agrupación.

  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 Id. 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>
    

Creación de una instancia del SDK

Para crear una instancia de MSAL en el proyecto, siga estos pasos:

  1. Importe la biblioteca MSAL en el controlador de vista agregando import MSAL en la parte superior de la ViewController clase.

  2. Agregue una applicationContext variable miembro a la clase ViewController agregando el código siguiente justo antes de la viewDidLoad() función:

    var applicationContext : MSALPublicClientApplication?
    var webViewParameters : MSALWebviewParameters?
    

    El código declara dos variables: applicationContext, que almacena una instancia de MSALPublicClientApplicationy webViewParameters, que almacena una instancia de MSALWebviewParameters. MSALPublicClientApplication es una clase proporcionada por MSAL para controlar las aplicaciones cliente públicas. MSALWebviewParameters es una clase proporcionada por MSAL que define parámetros para configurar la vista web utilizada durante el proceso de autenticación.

  3. Agregue el código siguiente a la función view viewDidLoad() :

     do {
            try self.initMSAL()
        } catch let error {
            self.updateLogging(text: "Unable to create Application Context \(error)")
        }
    

    El código intenta inicializar MSAL, controlando los errores que se producen durante el proceso. Si se produce un error, actualiza el registro con los detalles del error.

  4. Agregue el siguiente código que crea la función initMSAL(), que inicializa MSAL:

        func initMSAL() throws {
    
        guard let authorityURL = URL(string: Configuration.kAuthority) else {
            self.updateLogging(text: "Unable to create authority URL")
            return
        }
    
        let authority = try MSALCIAMAuthority(url: authorityURL)
    
        let msalConfiguration = MSALPublicClientApplicationConfig(clientId: Configuration.kClientID,
                                                                  redirectUri: Configuration.kRedirectUri,
                                                                  authority: authority)
        self.applicationContext = try MSALPublicClientApplication(configuration: msalConfiguration)
    }
    

    Este código inicializa MSAL para iOS. Primero intenta crear una dirección URL para la autoridad mediante la cadena Configuration.kAuthority proporcionada. Si se ejecuta correctamente, crea un objeto de autoridad de MSAL basado en esa dirección URL. A continuación, configura MSALPublicClientApplication con el identificador de cliente, el URI de redirección y la autoridad especificados. Si todas las configuraciones están establecidas correctamente, se inicializa el contexto de la aplicación con el parámetro configurado MSALPublicClientApplication. Si se producen errores durante el proceso, genera un error.

  5. Cree el archivo Configuration.swift y agregue las siguientes configuraciones:

    import Foundation
    
    @objcMembers
    class Configuration {
        static let kTenantSubdomain = "Enter_the_Tenant_Subdomain_Here"
    
        // Update the below to your client ID you received in the portal.
        static let kClientID = "Enter_the_Application_Id_Here"
        static let kRedirectUri = "Enter_the_Redirect_URI_Here"
        static let kProtectedAPIEndpoint = "Enter_the_Protected_API_Full_URL_Here"
        static let kScopes = ["Enter_the_Protected_API_Scopes_Here"]
    
        static let kAuthority = "https://\(kTenantSubdomain).ciamlogin.com"
    
    }
    

    Este código de configuración de Swift define una clase denominada Configuration y está marcada con @objcMembers. Incluye constantes estáticas para varios parámetros de configuración relacionados con una configuración de autenticación. Estos parámetros incluyen el subdominio de inquilino, el identificador de cliente, el URI de redirección, el punto de conexión de API protegido y los ámbitos. Estas constantes de configuración deben actualizarse con los valores adecuados específicos de la configuración de la aplicación.

    Busque el marcador de posición:

    • Enter_the_Application_Id_Here y reemplácelo por el identificador de aplicación (cliente) de la aplicación que registró anteriormente.
    • Enter_the_Redirect_URI_Here y reemplácelo por el valor de kRedirectUri en el archivo de configuración de MSAL que descargó anteriormente al agregar la dirección URL de redirección de la plataforma.
    • Enter_the_Protected_API_Scopes_Here y reemplácelo por los ámbitos registrados anteriormente. Si no ha registrado ningún ámbito, puede dejar esta lista de ámbitos vacía.
    • Enter_the_Tenant_Subdomain_Here y reemplácelo por el subdominio Directorio (inquilino). Por ejemplo, si el dominio principal del cliente es contoso.onmicrosoft.com, utilice contoso. Si no conoce el subdominio del inquilino, aprenda a leer los detalles del inquilino.

Uso del dominio de dirección URL personalizado (opcional)

Use un dominio personalizado para personalizar completamente la dirección URL de autenticación. Desde la perspectiva del usuario, los usuarios permanecen en el dominio durante el proceso de autenticación, en lugar de redirigirse a ciamlogin.com nombre de dominio.

Siga estos pasos para usar un dominio personalizado:

  1. Siga los pasos descritos en Habilitación de dominios url personalizados para aplicaciones en inquilinos externos para habilitar el dominio de dirección URL personalizado para el inquilino externo.

  2. Abra el archivo Configuration.swift :

    1. Actualice el valor de la kAuthority propiedad a https://Enter_the_Custom_Domain_Here/Enter_the_Tenant_ID_Here. Reemplace por Enter_the_Custom_Domain_Here el dominio de dirección URL personalizado y Enter_the_Tenant_ID_Here por el identificador de inquilino. Si no tiene el identificador del inquilino, obtenga información sobre cómo leer los detalles del inquilino.

Después de realizar los cambios en el archivo Configuration.swift , si el dominio de dirección URL personalizado es login.contoso.com y el identificador de inquilino es aaaabbbb-0000-cccc-1111-dddd2222eeee, el archivo debe ser similar al siguiente fragmento de código:

    import Foundation

    @objcMembers
    class Configuration {
        static let kTenantSubdomain = "login.contoso.com"
        
        // Update the below to your client ID you received in the portal.
        static let kClientID = "Enter_the_Application_Id_Here"
        static let kRedirectUri = "Enter_the_Redirect_URI_Here"
        static let kProtectedAPIEndpoint = "Enter_the_Protected_API_Full_URL_Here"
        static let kScopes = ["Enter_the_Protected_API_Scopes_Here"]
        
        static let kAuthority = "https://\(kTenantSubdomain)/aaaabbbb-0000-cccc-1111-dddd2222eeee"
    
    }

Pasos siguientes