Qu'est-ce que KeychainAccess et pourquoi l'utiliser ?
KeychainAccess est une bibliothèque Swift légère mais puissante qui offre une interface pratique et type-safe pour interagir avec les Keychain Services d'Apple. Le Keychain est un coffre-fort sécurisé intégré à iOS, macOS, watchOS et tvOS, conçu pour stocker des données sensibles : mots de passe, clés de chiffrement, jetons d'authentification, numéros de cartes bancaires et toute autre information confidentielle.
Sans bibliothèque, travailler avec le Keychain via l'interface C native (fonctions SecItemAdd, SecItemCopyMatching, SecItemUpdate, SecItemDelete) est très lourd, nécessite beaucoup de code répétitif et est sujet aux erreurs. KeychainAccess résout ce problème en proposant :
- Une syntaxe Swift simple : utilisation via des propriétés (get/set) et des méthodes aux noms explicites.
- La sécurité de type : les données sont automatiquement converties en
String,Dataou en types personnalisés conformes àCodable. - Une grande flexibilité : prise en charge de différents niveaux d'accès (accessible quand l'application est active, après déverrouillage de l'appareil, avec biométrie), groupes Keychain et synchronisation iCloud.
- La sécurité par défaut : la bibliothèque applique les meilleures pratiques de sécurité recommandées par Apple.
Cette bibliothèque est idéale pour stocker des jetons OAuth, mots de passe utilisateur, clés API, phrases de récupération de portefeuilles crypto et toute autre donnée qui ne doit pas être conservée en clair dans UserDefaults ou le système de fichiers.
Installation de KeychainAccess
KeychainAccess ne s'installe pas via pip (Python) ou npm (JavaScript). C'est une bibliothèque native pour l'écosystème Apple. Voici les principales méthodes d'installation :
1. Swift Package Manager (SPM) — Méthode recommandée
Dans Xcode : File → Add Packages... → collez l'URL du dépôt :
https://github.com/kishikawakatsumi/KeychainAccess.git
Choisissez la version (généralement "Up to Next Major" avec la dernière version stable) et ajoutez le paquet à votre cible.
Ou ajoutez la dépendance dans votre fichier Package.swift :
// swift-tools-version:5.7
import PackageDescription
let package = Package(
name: "MonPackage",
dependencies: [
.package(url: "https://github.com/kishikawakatsumi/KeychainAccess.git", from: "4.2.2")
],
targets: [
.target(
name: "MonPackage",
dependencies: ["KeychainAccess"]),
]
)
2. CocoaPods
Ajoutez cette ligne à votre Podfile :
pod 'KeychainAccess'
Exécutez ensuite pod install.
3. Carthage
Ajoutez dans votre Cartfile :
github "kishikawakatsumi/KeychainAccess"
Exécutez carthage update puis ajoutez le framework à votre projet.
Démarrage rapide avec KeychainAccess
Après l'installation, importez la bibliothèque : import KeychainAccess
L'exemple le plus simple : sauvegarder et lire une chaîne de caractères :
import KeychainAccess
// Créez une instance pour interagir avec le Keychain de l'application
let keychain = Keychain(service: "com.example.monapp")
// Sauvegarder une valeur
try keychain.set("mon_mot_de_passe_secret", key: "mot_de_passe_utilisateur")
// Lire une valeur
if let motDePasse = try keychain.get("mot_de_passe_utilisateur") {
print("Mot de passe trouvé : \(motDePasse)")
} else {
print("Mot de passe introuvable")
}
// Supprimer une valeur
try keychain.remove("mot_de_passe_utilisateur")
Ce code effectue les trois opérations principales : écriture, lecture et suppression. Notez la gestion des erreurs avec try — les opérations sur le Keychain peuvent lever des exceptions (par exemple, en cas de problèmes d'accès ou de permissions insuffisantes).
Méthodes et fonctions principales de KeychainAccess
Examinons
Aussi dans la bibliothèque
rig Rust : guide complet avec exemples pour intégrer les LLM
Rate Limiting en Swift : gestion de la fréquence des requêtes dans iOS/macOS
Travailler avec CSV en Kotlin : bibliothèques, analyse et écriture de données