Inicio rápido: Inicio de sesión de los usuarios y llamada a Microsoft Graph API desde una aplicación de iOS o macOS
¡Bienvenido! Probablemente esta no sea la página que esperaba. Mientras trabajamos en una corrección, este vínculo debería llevarle al artículo correcto:
Lamentamos las molestias y agradecemos su paciencia mientras trabajamos para resolverlo.
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
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.
La aplicación está configurada con estos atributos.
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: 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
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 que especificó en el portal.
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 personalizadasapi://<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 elaccountIdentifier
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.