Bu sayfada, OAuth 2.0 ile entegrasyonla ilgili bazı genel en iyi uygulamalar ele alınmaktadır. Uygulama türünüze ve geliştirme platformunuza yönelik özel yönergelere ek olarak bu en iyi uygulamaları da göz önünde bulundurun. Uygulamanızı üretime hazırlamayla ilgili önerileri ve Google'ın OAuth 2.0 politikalarını da inceleyin.
İstemci kimlik bilgilerini güvenli bir şekilde işleme
OAuth istemci kimlik bilgileri, uygulamanızın kimliğini tanımlar ve dikkatli bir şekilde kullanılmalıdır. Bu kimlik bilgilerini yalnızca güvenli depolama alanında saklayın (ör. Google Cloud Secret Manager gibi bir gizli yönetici kullanarak). Kimlik bilgilerini koda sabitlemeyin, bir kod deposuna göndermeyin veya herkese açık olarak yayınlamayın.
Kullanıcı jetonlarını güvenli bir şekilde işleme
Kullanıcı jetonları, uygulamanız tarafından kullanılan hem yenileme jetonlarını hem de erişim jetonlarını içerir. Jetonları dinlenme halinde güvenli bir şekilde saklayın ve hiçbir zaman düz metin olarak iletmeyin. Android'deki Keystore, iOS ve macOS'teki Anahtar Zinciri Hizmetleri veya Windows'daki Kimlik Bilgisi Dolabı gibi platformunuza uygun güvenli bir depolama sistemi kullanın.
Artık ihtiyaç duyulmadığında jetonları iptal edin ve sistemlerinizden kalıcı olarak silin.
Ayrıca platformunuz için aşağıdaki en iyi uygulamalardan da yararlanabilirsiniz:
- Birçok kullanıcının jetonunu depolayan sunucu tarafı uygulamalarda, jetonları dinlenme durumunda şifreleyin ve veri deponuzun internette herkese açık olmadığından emin olun.
- Yerel masaüstü uygulamaları için, erişim jetonlarıyla takas edilebilen yetkilendirme kodları elde etmek amacıyla Proof Key for Code Exchange (PKCE) protokolünün kullanılması önemle tavsiye edilir.
Yenileme jetonunun iptal edilmesi ve süresinin dolması ile ilgili işlemleri yapma
Uygulamanız çevrimdışı erişim için yenileme jetonu istediyse bu jetonların geçersiz kılınması veya süresinin dolması ile ilgili işlemleri de yapmanız gerekir. Jetonlar çeşitli nedenlerle geçersiz kılınabilir. Örneğin, süresi dolmuş olabilir veya uygulamalarınızın erişimi kullanıcı tarafından ya da otomatik bir süreç tarafından iptal edilmiş olabilir. Bu durumda, kullanıcıyı bir sonraki oturum açışında uyarma veya verilerini temizleme de dahil olmak üzere uygulamanızın nasıl yanıt vermesi gerektiğini dikkatlice düşünün. Jetonun iptal edildiği konusunda bildirim almak için Hesaplar Arası Koruma hizmetini entegre edin.
Artımlı yetkilendirmeyi kullanma
Uygulamanız bu işlevlere ihtiyaç duyduğunda uygun OAuth kapsamlarını istemek için artan yetkilendirme kullanın.
Uygulamanızın temel işlevi için gerekli olmadığı sürece, kullanıcı ilk kez kimlik doğruladığında verilere erişim isteğinde bulunmamalısınız. Bunun yerine, mümkün olan en küçük ve en sınırlı kapsamları seçme ilkesine uyarak yalnızca bir görev için gereken belirli kapsamları isteyin.
Kullanıcılarınızın, uygulamanızın neden erişim istediğini ve verilerin nasıl kullanılacağını anlamasına yardımcı olmak için her zaman bağlam içinde kapsam isteğinde bulunun.
Örneğin, uygulamanız şu modeli izleyebilir:
- Kullanıcı, uygulamanızla kimlik doğrulaması yapar
- Ek kapsam istenmez. Uygulama, kullanıcının ek veri veya erişim gerektirmeyen özellikleri keşfetmesine ve kullanmasına olanak tanıyan temel işlevler sunar.
- Kullanıcı, ek verilere erişim gerektiren bir özellik seçer
- Uygulamanız, bu özellik için gereken OAuth kapsamıyla ilgili bir yetkilendirme isteği gönderiyor. Bu özellik için birden fazla kapsam gerekiyorsa aşağıdaki en iyi uygulamaları uygulayın.
- Kullanıcı isteği reddederse uygulama özelliği devre dışı bırakır ve kullanıcıya tekrar erişim isteğinde bulunması için ek bağlam bilgisi verir.
Birden fazla kapsam için izinleri işleme
Tek seferde birden fazla kapsam isteğinde bulunurken kullanıcılar, istediğiniz tüm OAuth kapsamlarını vermeyebilir. Uygulamanız, ilgili işlevleri devre dışı bırakarak kapsamların reddedilmesini ele almalıdır.
Uygulamanızın temel işlevi için birden fazla kapsam gerekiyorsa izin istemeden önce bunu kullanıcıya açıklayın.
Kullanıcıya yalnızca kapsam gerektiren belirli bir özelliği kullanma niyetini açıkça belirttikten sonra tekrar istem gönderebilirsiniz. Uygulamanız, OAuth kapsamları istemeden önce kullanıcıya alakalı bağlam bilgisi ve gerekçe sağlamalıdır.
Uygulamanızın tek seferde istediği kapsam sayısını en aza indirmeniz gerekir. Bunun yerine, özellikler ve işlevler bağlamında kapsam isteğinde bulunmak için artımlı yetkilendirmeyi kullanın.
Güvenli tarayıcılar kullanın
Web'de OAuth 2.0 yetkilendirme istekleri yalnızca tam özellikli web tarayıcılarından gönderilmelidir. Diğer platformlarda doğru OAuth istemci türünü seçtiğinizden ve OAuth'u platformunuza uygun şekilde entegre ettiğinizden emin olun. İsteği, Android'deki WebView veya iOS'teki WKWebView gibi mobil platformlardaki web görünümleri dahil olmak üzere yerleşik tarama ortamları üzerinden yönlendirmeyin. Bunun yerine, platformunuz için yerel OAuth kitaplıklarını veya Google ile oturum açma'yı kullanın.
OAuth istemcilerinin manuel olarak oluşturulması ve yapılandırılması
Kötüye kullanımı önlemek için OAuth istemcileri programatik olarak oluşturulamaz veya değiştirilemez. Hizmet şartlarını açıkça kabul etmek, OAuth istemcinizi yapılandırmak ve OAuth doğrulamasına hazırlanmak için Google Developers Console'u kullanmanız gerekir.
Otomatik iş akışları için bunun yerine hizmet hesaplarını kullanabilirsiniz.
Kullanılmayan OAuth istemcilerini kaldırma
OAuth 2.0 istemcilerinizi düzenli olarak denetleyin ve artık uygulamanız tarafından gerekli olmayan veya eskimiş istemcileri proaktif olarak silin. Kullanılmayan istemcileri yapılandırılmış halde bırakmak, istemci kimlik bilgilerinizin güvenliği ihlal edilirse istemcinin kötüye kullanılabilmesi nedeniyle potansiyel bir güvenlik riski oluşturur.
Kullanılmayan istemcilerden kaynaklanan riskleri daha da azaltmak için altı aydır etkin olmayan OAuth 2.0 istemcileri otomatik olarak silinir.
Önerilen en iyi uygulama, otomatik silme işlemini beklemek yerine kullanılmayan müşterileri proaktif bir şekilde kaldırmaktır. Bu uygulama, uygulamanızın saldırı yüzeyini en aza indirir ve iyi bir güvenlik hijyeni sağlar.