Micro Frontend'lerde Multi-Audience Auth0: Token Yönetimi Kalıpları ve Implementasyon
Micro frontend'lerde Auth0 multi-audience authentication gerçek dünya implementasyonu, token yönetim stratejileri ve React Native'de WebView tabanlı micro frontend'lerle silent authentication
Özet
Auth0 multi-audience authentication'ı dağıtık micro frontend'ler arasında uygulamak, özellikle hem web hem de React Native WebView ortamlarını desteklerken benzersiz zorluklar sunar. Bu vaka çalışması, tek login akışında birden fazla API audience'ını destekleyen birleşik token yönetim sistemi için etkili kalıpları belgeler.
Ele Alınan Temel Zorluklar:
- Micro frontend'ler arasında cross-domain token paylaşımı
- Auth0 ile multi-audience JWT token yönetimi
- React Native WebView'larda silent authentication
- Dağıtık uygulamalar arasında token refresh koordinasyonu
Çözüm Özeti: Mesaj tabanlı iletişim, silent authentication akışları ve güvenliği korurken birden fazla login gereksinimini ortadan kaldıran native-web köprüleri ile merkezileştirilmiş token yöneticisi. Token refresh koordinasyonu shell uygulamasında merkezi tutulur; micro frontend'ler sadece mevcut token'ı alır.
Problem Tanımı
Micro frontend migrasyonumuz kritik bir authentication darboğazını ortaya çıkardı. Mimari şunları gerektiriyordu:
Bu dağıtık sistem mimarisini düşünün:
Temel Problem: Her API, JWT token'da farklı bir audience gerektirir, ancak Auth0'nun standart akışı authentication başına yalnızca bir audience'ı destekler. Bu, kullanıcıları üç kez ayrı ayrı authenticate etmeye zorlayacaktır. Tek sign-on deneyimini korumak için alternatif token stratejileri gerekiyordu.
Ek Karmaşıklık: Sistemin React Native WebView'larda sorunsuz çalışması gerekiyordu; burada geleneksel web authentication kalıpları cookie kısıtlamaları ve cross-origin sınırlamaları nedeniyle bozulur.
Başarısız Yaklaşımlar
Çalışan çözümümüze ulaşmadan önce, gereksinimlerimizi karşılamayan birkaç yaklaşımı keşfettik:
Yaklaşım 1: Birden Fazla Auth0 Application
Konsept: Her micro frontend için ayrı Auth0 application'ları oluştur. Neden başarısız oldu: Kullanıcılar yine birden fazla login yapmak zorundaydı ve application konfigürasyonlarını yönetmek hantal hale geldi. Cross-application session paylaşımı güvenilmez oldu.
Yaklaşım 2: Permission Scoping ile Tek Audience
Konsept: API erişimini kontrol etmek için ince taneli scope'lar ile bir audience kullan. Neden başarısız oldu: API'ler audience-spesifik permission'ları düzgün validate edemedi ve takımlar arasında scope yönetimi karmaşık hale geldi.
Yaklaşım 3: Server-Side Token Exchange
Konsept: Farklı audience'lar için token'ları server-side'da exchange et. Neden başarısız oldu: Önemli gecikme ekledi, tüm servislerde backend değişiklikleri gerektirdi ve React Native implementasyonunu karmaşıklaştırdı.
Çalışan Çözüm: Koordineli Multi-Audience Token Yönetimi
Başarılı yaklaşımımız, tüm micro frontend'ler için authentication'ı orkestre eden shell application'a odaklanır:
1. Token Manager Mimarisi
2. Micro Frontend'ler için Cross-Domain Token Paylaşımı
En büyük zorluk: Token'ları farklı subdomain'ler arasında paylaşmak. Test edilmiş çözümümüz:
3. Shell Application - Authentication Orkestratörü
Token Refresh Stratejisi
Micro frontend'lerde token refresh zor. Production'da test edilmiş yaklaşımımız:
Multi-Audience Desteği için Auth0 Actions
Önemli: Auth0 Rules artık kullanımdan kaldırıldı. Multi-audience senaryoları için Actions kullanın:
Silent Authentication: Sorunsuz Deneyimin Arkasındaki Sihir
Silent authentication, multi-audience yaklaşımının birden fazla login olmadan çalışmasını sağlayan şey:
React Native'de WebView Micro Frontend'ler
Şimdi gerçekten eğlenceli kısım - tüm bunları React Native'de WebView tabanlı micro frontend'lerle çalıştırmak:
React Native'de Silent Login: Komple Flow
React Native'de micro frontend'lerle silent login'in uçtan uca nasıl çalıştığı:
Multi-Resource Refresh Token'lar (MRRT)
Auth0 multi-audience senaryoları için Multi-Resource Refresh Token'ları tanıttı. Tek bir refresh token ile birden fazla audience için access token alınabilir. MRRTTokenManager ile refreshMultipleAudiences pattern'i kullanılabilir.
Güvenlik Konuları
Kritik Uyarı: JWT token'ları her zaman backend'de validate edin. Asla sadece client-side token validation'a güvenmeyin.
Ek Güvenlik Önlemleri:
- Token Depolama: Token'lar için güvenli, şifrelenmiş depolama kullanın
- Origin Validation: postMessage handler'larda her zaman mesaj origin'lerini validate edin
- Sadece HTTPS: Token'ları asla şifrelenmemiş bağlantılar üzerinden iletmeyin
- Token Rotation: Uygun refresh token rotation uygulayın
- Audience Validation: Audience claim'lerinin beklenen değerlerle eşleştiğini doğrulayın
Implementasyon Dersleri
1. Cookie Problemi
Auth0 session yönetimi için cookie kullanır. React Native WebView'larda third-party cookie'ler genelde engellenir. Çözüm:
2. Token Boyutu Problemi
Multiple audience token'ları = büyük localStorage. 10MB limitine takıldık. Çözüm:
3. Race Condition
Birden fazla micro frontend aynı anda token istediğinde race condition oluştu. Çözüm:
React Native Güvenlik Implementasyonu
- Token Storage: Token'ları asla plain text olarak saklama. Encrypted storage kullan:
- WebView Güvenliği: Tüm mesajları validate et:
Temel Çıkarımlar
Micro frontend'lerde multi-audience authentication karmaşık ama doğru mimariyle çözülebilir:
- Önce Mimari: Token yönetimini baştan merkezileştirilmiş bir servis olarak tasarlayın
- Edge Case'leri Test Edin: Süresi dolmuş token'lar, network hataları ve race condition'lar gerçek karmaşıklığı ortaya çıkarır
- Güvenlik Odaklı Tasarım: Uygun JWT validation ve güvenli token depolama uygulayın
- Progressive Enhancement: Önce web için geliştirin, sonra React Native WebView'lar için adapte edin
- Mesaj Kontratları: Bileşenler arasında açık iletişim protokolleri tanımlayın
Bu yaklaşım, production ortamlarında tutarlı silent authentication başarı oranlarıyla yüksek hacimli authentication yüklerini işleyerek güvenilir olduğunu kanıtlamıştır.
Implementasyon, karmaşık authentication senaryolarının dikkatli mimari ve güvenlik temellerine odaklanarak çözülebileceğini göstermektedir. Implementasyon detaylarına dalmadan önce token akış tasarımına odaklanın.