Skip to main content
Ce guide de référence vous montrera comment mettre en œuvre l’interface utilisateur de Lock et vous donnera les détails sur la façon de configurer et de personnaliser Lock afin de l’utiliser comme interface pour vos besoins d’authentification. Toutefois, si vous souhaitez en savoir plus sur ce que vous pouvez faire avec Auth0 et Swift, notamment comment stocker, utiliser et actualiser des , obtenir des renseignements sur le profil utilisateur, et plus encore, consultez le SDK Auth0.swift. Vous pouvez aussi consulter le guide de démarrage rapide Swift pour parcourir des exemples complets et voir les options offertes, autant pour utiliser Lock comme interface que pour utiliser une interface personnalisée. Consultez le dépôt Lock.swift sur GitHub.

Exigences

  • iOS 9+
  • Xcode 11.4+ / 12.x
  • Swift 4.x / 5.x

Installation

CocoaPods

Si vous utilisez CocoaPods, ajoutez cette ligne à votre Podfile : pod 'Lock', '~> 2.0' Exécutez ensuite pod install. Pour en savoir plus sur CocoaPods, consultez la documentation officielle.

Carthage

Si vous utilisez Carthage, ajoutez la ligne suivante à votre Cartfile : github "auth0/Lock.swift" ~> 2.0 Exécutez ensuite carthage bootstrap. Pour en savoir plus sur l’utilisation de Carthage, consultez la documentation officielle.

SPM

Si vous utilisez Swift Package Manager, ouvrez l’élément de menu suivant dans Xcode : File > Swift Packages > Add Package Dependency… Dans l’invite Choose Package Repository, saisissez cette URL : https://github.com/auth0/Lock.swift.git Cliquez ensuite sur Next, puis suivez les étapes restantes.
Pour en savoir plus sur SPM, consultez la documentation officielle.

Configuration

Intégrer Lock à votre application

Lock doit être informé lorsqu’on demande à l’application d’ouvrir une URL. Vous pouvez le faire dans le fichier AppDelegate.
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
  return Lock.resumeAuth(url, options: options)
}

Importer Lock

Importez Lock là où vous en avez besoin import lock

Identifiants Auth0

Pour utiliser Lock, vous devez fournir votre et votre domaine Auth0, que vous trouverez dans les paramètres de votre application dans Auth0 Dashboard. Dans le bundle de votre application, vous pouvez ajouter un fichier plist nommé Auth0.plist qui contiendra vos identifiants au format suivant.

Implémentation de Lock Classic

Lock Classic gère l’authentification à l’aide de connexions de base de données, sociales et d’entreprise.

Mode conforme à OIDC

Il est fortement recommandé d’utiliser ce SDK en mode conforme à OIDC. Lorsque ce mode est activé, il oblige le SDK à utiliser le pipeline d’authentification actuel d’Auth0 et l’empêche d’accéder aux anciens points de terminaison. Par défaut, cette valeur est false
.withOptions {
    $0.oidcConformant = true
}
Pour afficher Lock, ajoutez l’extrait suivant à votre UIViewController.
Lock
    .classic()
    // withConnections, withOptions, withStyle, et ainsi de suite
    .withOptions {
      $0.oidcConformant = true
      $0.scope = "openid profile"
    }
    .onAuth { credentials in
      // Sauvegardons la valeur de credentials.accessToken
    }
    .present(from: self)

Utiliser la bibliothèque Auth0.Swift pour accéder au profil de l’utilisateur

Pour accéder aux renseignements du profil de l’utilisateur, vous devrez utiliser la bibliothèque Auth0.Swift :
Auth0
   .authentication()
   .userInfo(withAccessToken: accessToken)
   .start { result in
       switch result {
       case .success(let profile):
           print("User Profile: \(profile)")
       case .failure(let error):
           print("Failed with \(error)")
       }
   }
Consultez la documentation de la bibliothèque Auth0.Swift pour en savoir plus sur son utilisation.

Spécifier les connexions

Lock chargera automatiquement les connexions configurées pour votre application. Si vous souhaitez remplacer le comportement par défaut, vous pouvez indiquer manuellement les connexions qu’il doit présenter aux utilisateurs comme options d’authentification. Pour ce faire, appelez la méthode et passez-lui une closure qui permet de préciser la ou les connexions. Ajout d’une connexion de base de données :
.withConnections {
    connections.database(name: "Username-Password-Authentication", requiresUsername: true)
}
Ajout de plusieurs connexions sociales :
.withConnections {
    connections.social(name: "facebook", style: .Facebook)
    connections.social(name: "google-oauth2", style: .Google)
}

Style et personnalisation

Lock offre de nombreuses options de style pour vous aider à appliquer votre identité de marque à Lock à l’aide de withStyle. Par exemple, pour modifier la couleur principale et le texte de l’en-tête de votre widget Lock :

Personnalisez le titre, le logo et la couleur principale

.withStyle {
  $0.title = "Company LLC"
  $0.logo = LazyImage(named: "company_logo")
  $0.primaryColor = UIColor(red: 0.6784, green: 0.5412, blue: 0.7333, alpha: 1.0)
}
Vous pouvez consulter la liste complète des options de style permettant de modifier l’apparence de Lock pour votre application dans le guide de personnalisation.

Options de configuration

Lock offre de nombreuses options de configuration. Voici un exemple de configuration de Lock qui permet de le fermer, de le limiter aux seuls noms d’utilisateur (et non aux courriels) et d’afficher uniquement les écrans de connexion et de réinitialisation du mot de passe.
Lock
  .classic()
  .withOptions {
    $0.closable = true
    $0.usernameStyle = [.Username]
    $0.allow = [.Login, .ResetPassword]
  }
Vous trouverez l’ensemble des options de configuration du comportement permettant de modifier le fonctionnement de Lock pour votre application dans le Guide de configuration.

Prise en charge des gestionnaires de mots de passe

Par défaut, la prise en charge des gestionnaires de mots de passe via 1Password est activée pour les connexions de base de données. La prise en charge de 1Password exige tout de même que l’utilisateur ait l’application 1Password installée pour que l’option soit visible dans les écrans de connexion et d’inscription. Vous pouvez désactiver la prise en charge de 1Password en utilisant la propriété enabled de passwordManager.
.withOptions {
    $0.passwordManager.enabled = false
}
Par défaut, appIdentifier correspondra à l’identifiant du bundle de l’app, et displayName au nom d’affichage de l’app. Vous pouvez les personnaliser comme suit :
.withOptions {
    $0.passwordManager.appIdentifier = "www.myapp.com"
    $0.passwordManager.displayName = "My App"
}
Vous devrez ajouter ce qui suit dans le fichier info.plist de votre application :
<key>LSApplicationQueriesSchemes</key>
<array>
    <string>org-appextension-feature-password-management</string>
</array>

En savoir plus