Autenticação e Autorização em Swift: LocalAuthentication, Firebase Auth, Keychain

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Autenticação e Autorização em Swift (iOS/macOS): visão geral de ferramentas e bibliotecas



No desenvolvimento moderno para iOS/macOS, segurança e controle de acesso são aspectos criticamente importantes. O Swift oferece tanto frameworks nativos para autenticação local quanto integração com serviços em nuvem. Neste artigo, vamos explorar as principais ferramentas e bibliotecas para implementar login, registro e verificação de permissões de usuário.



1. LocalAuthentication — Face ID / Touch ID / Apple Watch



O framework LocalAuthentication permite autenticar o usuário por biometria ou senha do dispositivo. Funciona no iOS e macOS.



Principais recursos:

  • Verificação de disponibilidade de biometria (Face ID, Touch ID)
  • Autenticação com contexto (LAContext)
  • Uso do código do dispositivo como opção alternativa


Exemplo de código:



import LocalAuthentication

func authenticateUser(completion: @escaping (Bool, Error?) -> Void) { let context = LAContext() var error: NSError?

// Verifica se a biometria está disponível guard context.canEvaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, error: &error) else { completion(false, error) return }

// Inicia a autenticação context.evaluatePolicy(.deviceOwnerAuthenticationWithBiometrics, localizedReason: "Confirme sua identidade para acessar os dados") { success, authError in DispatchQueue.main.async { completion(success, authError) } }}


2. Firebase Authentication — autenticação em nuvem



Firebase Auth é uma biblioteca poderosa que suporta login via email/senha, Google, Apple, GitHub e outros provedores. Ideal para aplicações com servidor.



Instalação via Swift Package Manager:

// Em Package.swift, adicione:// .package(url: "https://github.com/firebase/firebase-ios-sdk.git", from: "10.0.0")// target: "YourAppTarget", dependencies: ["FirebaseAuth"]


Registro de novo usuário:



import FirebaseAuth

func signUp(email: String, password: String) { Auth.auth().createUser(withEmail: email, password: password) { authResult, error in if let error = error { print("Erro no registro: \\(error.localizedDescription)") return } print("Usuário registrado: \\(authResult?.user.uid ?? "")") }}


Login de usuário existente:



func signIn(email: String, password: String) {    Auth.auth().signIn(withEmail: email, password: password) { authResult, error in        if let error = error {            print("Erro no login: \\(error.localizedDescription)")            return        }        print("Login realizado: \\(authResult?.user.email ?? "")")    }}


3. Keychain Services — armazenamento seguro de tokens



Para salvar tokens JWT, senhas ou chaves, use o Keychain. Este é um mecanismo nativo do iOS/macOS.



Exemplo de salvamento e leitura:



import Security

func saveToKeychain(key: String, data: Data) -> Bool { let query: [String: Any] = [ kSecClass as String: kSecClassGenericPassword, kSecAttrAccount as String: key, kSecValueData as String: data ] SecItemDelete(query as CFDictionary) let status = SecItemAdd(query as CFDictionary, nil) return status == errSecSuccess}

func readFromKeychain(key: String) -> Data? { let query: [String: Any] = [ kSecClass as String: kSecClassGenericPassword, kSecAttrAccount as String: key, kSecReturnData as String: true, kSecMatchLimit as String: kSecMatchLimitOne ] var result: AnyObject? let status = SecItemCopyMatching(query as CFDictionary, &

Recommendations