Lock.swift

Ce guide de référence explique comment implémenter l’interface utilisateur de Lock et fournit des détails sur la configuration et la personnalisation de Lock de manière à l’utiliser comme interface utilisateur pour vos besoins d’authentification. Toutefois, si vous souhaitez en faire plus avec Auth0 et Swift, par exemple enregistrer, appeler et actualiser des jetons d’accès, obtenir des informations sur le profil utilisateur, etc., consultez Trousse SDK pour Auth0.swift. Vous pouvez aussi consulter le Guide rapide Swift, qui donne des exemples complets et des options pour utiliser Lock comme interface ou utiliser une interface personnalisée.

Consultez le référentiel Lock.swift sur GitHub.

Exigences

  • iOS 9+

  • Xcode 11.4+ / 12.x

  • Swift 4.x / 5.x

Installer

Cocoapods

Si vous utilisez Cocoapods, ajoutez cette ligne à votre Podfile :

pod ’Lock’, ’~> 2.0’

Exécutez ensuite pod install. Pour plus d’informations sur CocoaPods, consultez leur documentation officielle.

Carthage

Si vous utilisez Carthage, ajoutez cette ligne à votre Cartfile :

github "auth0/Lock.swift" ~> 2.0 Exécutez ensuite carthage bootstrap. Pour en savoir plus sur l’utilisation de Carthage, consultez leur documentation officielle.

SPM

Si vous utilisez le Swift Package Manager, ouvrez le menu suivant dans Xcode :

Fichier > Packages Swift > Ajouter une dépendance à un package...

À l’invite Sélectionner le référentiel de packages, ajoutez cette URL :

https://github.com/auth0/Lock.swift.git

Appuyez ensuite sur Suivant et effectuez les étapes suivantes.

Configuration

Intégrer avec votre application

Lock doit être informé lorsque l’application doit 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)
}

Was this helpful?

/

Importer Lock

Importez Lock là où vous en avez besoin

import lock

Identifiants Auth0

Pour pouvoir utiliser Lock, vous devez fournir votre ID client et domaine Auth0, qui se trouvent dans votre Auth0 Dashboard, sous les paramètres d’application.

Dans votre bundle d’applications, vous pouvez ajouter un fichier plist nommé Auth0.plist, qui comprendra vos identifiants au format suivant.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>ClientId</key>
  <string>{yourClientId}</string>
  <key>Domain</key>
  <string>{yourDomain}</string>
</dict>
</plist>

Was this helpful?

/

Implémentation de Lock Classic

Lock Classic traite les authentifications utilisant les connexions de base de données, sociales et d’entreprise.

Mode conforme à l’OIDC

Nous recommandons fortement d’utiliser cette trousse SDK en mode conforme à l’OIDC. Lorsque ce mode est activé, il force la trousse SDK à utiliser le pipeline d’authentification d’Auth0 actuel et l’empêche d’atteindre des points de terminaison obsolètes. Par défaut, cette valeur est false.

.withOptions {
    $0.oidcConformant = true
}

Was this helpful?

/

Pour afficher Lock, ajoutez l’extrait de code suivant à votre UIViewController.

Lock
    .classic()
    // withConnections, withOptions, withStyle, and so on
    .withOptions {
      $0.oidcConformant = true
      $0.scope = "openid profile"
    }
    .onAuth { credentials in
      // Let's save our credentials.accessToken value
    }
    .present(from: self)

Was this helpful?

/

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

Pour accéder aux informations du profil utilisateur, vous aurez besoin de 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)")
       }
   }

Was this helpful?

/

Consultez la documentation Auth0.Swift Library pour en savoir plus sur son utilisation.

Spécifier des connexions

Lock chargera automatiquement les connexions configurées pour votre application. Si vous souhaitez remplacer le comportement par défaut, vous pouvez manuellement spécifier les connexions à présenter aux utilisateurs en tant qu’options d’authentification. Vous allez pour cela appeler la méthode et fournir une fermeture qui puisse spécifier la ou les connexions.

Ajout d’une connexion de base de données :

.withConnections {
    connections.database(name: "Username-Password-Authentication", requiresUsername: true)
}

Was this helpful?

/

Ajout de plusieurs connexions sociales :

.withConnections {
    connections.social(name: "facebook", style: .Facebook)
    connections.social(name: "google-oauth2", style: .Google)
}

Was this helpful?

/

Style et personnalisation

Lock dispose de nombreuses options de personnalisation pour vous permettre d’appliquer votre image de marque à Lock en utilisant withStyle. Par exemple en changeant la couleur principale et le texte d’en-tête de votre gadget logiciel Lock :

Personnaliser votre titre, logo et 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)
}

Was this helpful?

/

Pour la liste complète des options de style permettant de modifier l’aspect de Lock pour votre application, consultez le Guide de personnalisation.

Options de configuration

Il existe de nombreuses options pour configurer le comportement de Lock. Voici un exemple de Lock configuré pour qu’il puisse être fermé, afin de le limiter aux seuls noms d’utilisateurs (et pas aux adresses courriel) et pour ne montrer que les écrans Se connecter et Réinitialiser le mot de passe.

Lock
  .classic()
  .withOptions {
    $0.closable = true
    $0.usernameStyle = [.Username]
    $0.allow = [.Login, .ResetPassword]
  }

Was this helpful?

/

Pour la liste complète des options de configuration du comportement de Lock pour votre application, consultez le Guide de configuration.

Prise en charge du gestionnaire de mots de passe

Par défaut, le gestionnaire de mots de passe est pris en charge en utilisant 1Password, activé pour les connexions de bases de données. Avec 1Password, l’utilisateur aura besoin que l’application 1Password soit installée et visible dans les écrans d’inscription et de connexion. Vous pouvez désactiver 1Password en utilisant la propriété « enabled » du gestionnaire de mots de passe.

.withOptions {
    $0.passwordManager.enabled = false
}

Was this helpful?

/

Par défaut, appIdentifier sera défini sur l’identifiant de bundle de l’application et displayName sera défini sur le nom d’affichage de l’application. Vous pouvez les personnaliser comme suit :

.withOptions {
    $0.passwordManager.appIdentifier = "www.myapp.com"
    $0.passwordManager.displayName = "My App"
}

Was this helpful?

/

Vous devrez ajouter ce qui suit à l’info.plist de votre application :

<key>LSApplicationQueriesSchemes</key>
<array>
    <string>org-appextension-feature-password-management</string>
</array>

Was this helpful?

/

En savoir plus