Inicio rápido: Inicio de sesión de usuarios y llamada a Microsoft Graph 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
- Una cuenta de Azure con una suscripción activa. Cree una cuenta gratuita.
- XCode 10+
- iOS 10+
- macOS 10.12+
Funcionamiento del ejemplo
Registre su aplicación de inicio rápido
Sugerencia
Los pasos de este artículo pueden variar ligeramente en función del portal desde donde comienza.
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:
- Inicie sesión en el Centro de administración de Microsoft Entra al menos como Desarrollador de aplicaciones.
- Si tiene acceso a varios inquilinos, use el icono Configuración del menú superior para cambiar al inquilino en el que desea registrar la aplicación desde el menú Directorios y suscripciones.
- Vaya aIdentidad>Aplicaciones>Registros de aplicaciones.
- Seleccione Nuevo registro.
- 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.
- Seleccione Registrar.
- En Administrar, seleccione Autenticación>Agregar una plataforma>iOS.
- 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. - Seleccione Configurar y guarde los detalles de Configuración de MSAL para un momento posterior de este inicio rápido.
- Seleccione Listo.
Paso 2: Descarga del proyecto de ejemplo
Paso 3: Instalar dependencias
- Extraiga el archivo ZIP.
- 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: Configuración del proyecto
Si ha seleccionado la opción 1 anterior, puede omitir estos pasos.
En Xcode, abra el proyecto.
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 anteriormente en este inicio rápido:let kClientID = "Enter_the_Application_Id_Here"
Si va a crear una aplicación para nubes nacionales de Microsoft Entra, 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"
Los demás puntos de conexión se documentan aquí. Por ejemplo, para ejecutar el inicio rápido con Microsoft Entra Alemania, use lo siguiente:
let kGraphEndpoint = "https://graph.microsoft.de/" let kAuthority = "https://login.microsoftonline.de/common"
Abra la configuración del proyecto. En la sección Identidad, escriba el Identificador de agrupación.
Haga clic con el botón derecho en Info.plist y seleccione Abrir como>Código fuente.
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 prefijomsauth.
de la cadena.<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLSchemes</key> <array> <string>msauth.Enter_the_Bundle_Id_Here</string> </array> </dict> </array>
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.