En İyi Uygulamalar

Bu sayfada, OAuth 2.0 ile entegrasyon için bazı genel en iyi uygulamalar ele alınmaktadır. Uygulama türünüz ve geliştirme platformunuzla ilgili özel talimatların yanı sıra aşağıdaki en iyi uygulamaları da göz önünde bulundurun. Ayrıca, uygulamanızı üretim için hazırlama ile ilgili tavsiyelere ve Google'ın OAuth 2.0 politikalarına da göz atın.

İ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. Örneğin, Google Cloud Secret Manager gibi bir Secret Manager kullanın. Kimlik bilgilerini sabit kodlamayın, bir kod deposuna işlemeyin 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ı dinlenirken güvenli bir şekilde saklayın ve hiçbir zaman düz metin olarak iletmeyin. Platformunuza uygun güvenli bir depolama sistemi kullanın. Örneğin, Android'de Keystore, iOS ve macOS'te Keychain Services veya Windows'da Credential Locker.

Artık ihtiyaç duyulmayan jetonları iptal edin ve sistemlerinizden kalıcı olarak silin.

Ayrıca platformunuz için aşağıdaki en iyi uygulamaları da göz önünde bulundurun:

  • Birçok kullanıcının jetonlarını depolayan sunucu tarafı uygulamaları için jetonları dinlenme sırasında şifreleyin ve veri deponuzun internete herkese açık olarak erişilebilir olmadığından emin olun.
  • Yerel masaüstü uygulamalarında, erişim jetonlarıyla değiştirilebilecek yetkilendirme kodları almak için Proof Key for Code Exchange (PKCE) protokolünün kullanılması önemle tavsiye edilir.

Yenileme jetonu iptalini ve geçerlilik bitişini işleme

Uygulamanız çevrimdışı erişim için yenileme jetonu istiyorsa bu jetonların geçersiz kılınmasını veya süresinin dolmasını da yönetmeniz gerekir. Jetonlar, farklı nedenlerle geçersiz kılınabilir. Örneğin, jetonun süresi dolmuş olabilir veya uygulamalarınızın erişimi kullanıcı ya da otomatik bir süreç tarafından iptal edilmiş olabilir. Bu durumda, uygulamanızın nasıl yanıt vermesi gerektiğini dikkatlice düşünün. Örneğin, kullanıcının bir sonraki girişinde istemde bulunabilir veya verilerini temizleyebilirsiniz. Jeton iptali hakkında bildirim almak için Hesaplar Arası Koruma hizmetiyle entegrasyon yapın.

Artımlı yetkilendirme kullanma

Uygulamanızın işlevselliğe ihtiyacı olduğunda uygun OAuth kapsamlarını istemek için artımlı yetkilendirme kullanın.

Uygulamanızın temel işlevi için gerekli olmadığı sürece, kullanıcı ilk kez kimlik doğrulaması yaptığı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ı anlamalarına yardımcı olmak için kapsamları her zaman bağlam içinde isteyin.

Örneğin, uygulamanız şu modeli izleyebilir:

  1. Kullanıcı, uygulamanızla kimliğini doğrular.
    1. Başka kapsam istenmiyor. Uygulama, kullanıcının ek veri veya erişim gerektirmeyen özellikleri keşfetmesine ve kullanmasına olanak tanıyan temel işlevler sunuyor.
  2. Kullanıcı, ek verilere erişim gerektiren bir özellik seçer.
    1. Uygulamanız, bu özellik için gerekli olan bu belirli OAuth kapsamı için yetkilendirme isteğinde bulunuyor. Bu özellik birden fazla kapsam gerektiriyorsa aşağıdaki en iyi uygulamaları uygulayın.
    2. 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 izni işleme

Kullanıcılar, tek seferde birden fazla kapsam isteğinde bulunurken 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şlevleri için birden fazla kapsam gerekiyorsa izin istemeden önce bunu kullanıcıya açıklayın.

Kullanıcı, kapsam gerektiren belirli bir özelliği kullanma niyetini açıkça belirttikten sonra kullanıcıya tekrar istemde bulunabilirsiniz. Uygulamanız, OAuth kapsamları istemeden önce kullanıcıya alakalı bağlam ve gerekçe sağlamalıdır.

Uygulamanızın aynı anda istediği kapsam sayısını en aza indirmeniz gerekir. Bunun yerine, artımlı yetkilendirmeyi kullanarak özellikler ve işlevler bağlamında kapsam isteyin.

Güvenli tarayıcılar kullanın

Web'de, OAuth 2.0 yetkilendirme istekleri yalnızca tam özellikli web tarayıcılarından yapılmalıdır. 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 WebView'lar da dahil olmak üzere yerleştirilmiş 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 uygulamanızın artık ihtiyaç duymadığı veya eskimiş olanları proaktif bir şekilde silin. Kullanılmayan istemcilerin yapılandırılmış olarak bırakılması, istemci kimlik bilgilerinizin güvenliği ihlal edilirse istemcinin kötüye kullanılabileceği için olası 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 istemcileri proaktif olarak kaldırmaktır. Bu uygulama, uygulamanızın saldırı yüzeyini en aza indirir ve iyi bir güvenlik hijyeni sağlar.