Tutorial: preparar su aplicación iOS (Swift) para la autenticación
Este es el segundo tutorial de la serie de tutoriales que muestra cómo agregar Microsoft Authentication Library (MSAL) para iOS y macOS a su aplicación iOS Swift.
En este tutorial, hará lo siguiente:
- Agregue el marco MSAL a una aplicación iOS (Swift).
- Cree una instancia del SDK.
Requisitos previos
- Xcode.
- Si aún no lo ha hecho, siga las instrucciones de Tutorial: registrar y configurar aplicaciones móviles de iOS (Swift) y registrar una aplicación en el inquilino externo. Asegúrese de completar los pasos siguientes:
- Registrar una aplicación
- Adición de una URL de redireccionamiento de la plataforma.
- Habilite el flujo de cliente público.
- Permiso delegado para Microsoft Graph.
- Proyecto de iOS (Swift).
Agregue el marco MSAL a una aplicación de iOS (Swift)
El SDK de autenticación de MSAL se utiliza para integrar la autenticación en sus aplicaciones utilizando 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:
- Abra el proyecto de iOS en Xcode.
- Seleccione Agregar dependencias de paquete... en el menú Archivo.
- Escriba
https://github.com/AzureAD/microsoft-authentication-library-for-objc
como dirección URL del paquete y elija Agregar paquete
Actualizar el identificador de conjunto
En el ecosistema Apple, un identificador de conjunto de productos es un identificador único para una aplicación. Para actualizar el identificador de agrupación en el proyecto, siga estos pasos:
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>
Creación de una instancia del SDK
Para crear una instancia de MSAL en el proyecto, siga estos pasos:
Importe la biblioteca MSAL en el controlador de vista agregando
import MSAL
en la parte superior de la claseViewController
.Agregue una variable miembro
applicationContext
a su clase ViewController agregando el siguiente código justo antes de la funciónviewDidLoad()
:var applicationContext : MSALPublicClientApplication? var webViewParamaters : MSALWebviewParameters?
El código declara dos variables:
applicationContext
, que almacena una instancia deMSALPublicClientApplication
, ywebViewParameters
, que almacena una instancia deMSALWebviewParameters
.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.Agregue el siguiente código a la función de la vista
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.
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 el
MSALPublicClientApplication
con el Id. de cliente, el URI de redirección y la autoridad dados. Si todas las configuraciones se configuran correctamente, inicializa el contexto de la aplicación con el configuradoMSALPublicClientApplication
. Si se producen errores durante el proceso, se produce un error.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 del inquilino, el Id. 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 del directorio (inquilino). Por ejemplo, si el dominio principal del inquilino escontoso.onmicrosoft.com
, usecontoso
. 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 el punto de vista del usuario, este permanece en el dominio durante el proceso de autenticación, en lugar de que se le redirija al nombre de dominio ciamlogin.com.
Siga estos pasos para usar un dominio personalizado:
Siga los pasos descritos en Habilitación de dominios de dirección URL personalizados para aplicaciones en inquilinos externos a fin de habilitar la dirección URL de dominio personalizada para el inquilino externo.
Abra el archivo Configuration.swift:
- Actualice el valor de la propiedad
kAuthority
a https://Enter_the_Custom_Domain_Here/Enter_the_Tenant_ID_Here. ReemplaceEnter_the_Custom_Domain_Here
por la dirección URL de dominio personalizado yEnter_the_Tenant_ID_Here
por el id. del inquilino. Si no tiene el identificador del inquilino, obtenga información sobre cómo leer los detalles del inquilino.
- Actualice el valor de la propiedad
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 id. de inquilino es aaaabbbb-0000-cccc-1111-dddd2222eeee, el archivo debe tener un aspecto 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
Tutorial: inicio de sesión de usuarios en la aplicación móvil de iOS (Swift)