Autorização e Autenticação em Swift: guia completo para iOS/macOS

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

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, FirebaseFirestore


Exemplo 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

Recommendations