Autorização e Autenticação em Swift: visão geral de ferramentas e bibliotecas
No desenvolvimento para iOS e macOS, a segurança dos dados do usuário é a prioridade número um. Autenticação (confirmação de identidade) e autorização (concessão de direitos de acesso) são componentes básicos de qualquer aplicativo moderno. Neste artigo, analisaremos as principais ferramentas, bibliotecas e frameworks Swift para implementar login via Apple ID, serviços de terceiros (Google, Facebook), bem como armazenamento local de tokens.
O artigo é voltado para desenvolvedores familiarizados com os fundamentos de Swift e Xcode. Todos os exemplos de código foram testados no Swift 5.9+ e são compatíveis com iOS 17+/macOS 14+.
1. AuthenticationServices: Apple Sign In
A autorização nativa via Apple ID é um requisito obrigatório da App Store para aplicativos que usam provedores de terceiros (Google, Facebook). O framework AuthenticationServices fornece uma API simples para implementar o Sign in with Apple.
import AuthenticationServicesimport SwiftUI
struct SignInWithAppleView: View { var body: some View { SignInWithAppleButton( onRequest: { request in request.requestedScopes = [.fullName, .email] }, onCompletion: { result in switch result { case .success(let authResults): // Obtém o token do usuário guard let credential = authResults.credential as? ASAuthorizationAppleIDCredential, let tokenData = credential.identityToken, let token = String(data: tokenData, encoding: .utf8) else { return } print("Apple token: \\(token)") case .failure(let error): print("Error: \\(error.localizedDescription)") } } ) .signInWithAppleButtonStyle(.black) .frame(width: 280, height: 44) }}Importante: A Apple retorna fullName e email apenas no primeiro login. Para autorizações subsequentes, use userID de credential.user.
2. Firebase Authentication: autenticação multiprovedor
Firebase Auth é uma solução multiplataforma para autorização via email, Google, Facebook, GitHub e outros provedores. Inclui componentes de UI prontos e integração com Firestore.
Instalação via Swift Package Manager:
// Package.swift ou via Xcode: File > Add Packages// URL: https://github.com/firebase/firebase-ios-sdk.git// Selecione FirebaseAuth, FirebaseFirestoreExemplo de login via email/senha:
import FirebaseAuth
func signInWithEmail(email: String, password: String) { Auth.auth().signIn(withEmail: email, password: password) { authResult, error in if let error = error { print("Auth error: \\(error.localizedDescription)") return } guard let user = authResult?.user else { return } print("User signed in: \\(user.uid)") }}
func createUser(email: String, password: String) { Auth.auth().createUser(withEmail: email, password: password) { authResult, error in // Processamento do registro }}Para o Google Sign-In, o SDK GoogleSignIn é usado adicionalmente. O Firebase gerencia automaticamente as sessões e a atualização de tokens.
3. Keychain Services: armazenamento seguro de tokens
Armazenar tokens JWT ou refresh tokens no UserDefaults é um grave erro de segurança. Use o Keychain (armazenamento criptografado do iOS/macOS).
Wrapper para Keychain:
import Security
class KeychainManager { static func save(key: String, data: Data) { let query: [String: Any] = [ kSecClass as String: kSecClassGener Também na biblioteca
Cliente Elasticsearch para Java: guia completo para trabalhar com o Java Client
Processamento JSON em Kotlin: bibliotecas e exemplos de uso
Processamento de Markdown em Node.js: bibliotecas marked, showdown e remarkable