Kullanıcı yetkilendirmenin işleyiş şekli

Google Kimlik Hizmetleri veya yetkilendirme konusunda yeniyseniz ya da bilginiz yoksa Genel Bakış bölümünü okuyarak başlayın.

Google; kapsamları yönetmenize, kullanıcı izni almanıza ve standart OAuth 2.0 akışlarıyla daha kolay çalışmanıza yardımcı olacak yetkilendirme özellikleri içeren bir JavaScript kitaplığı sunar. Kullanıcının tarayıcısında çalışan web uygulamanız, OAuth 2.0 dolaylı akışını yönetmek veya arka uç platformunuzda tamamlanan yetkilendirme kodu akışını başlatmak için bu kitaplığı kullanır.

Yalnızca kimlik doğrulama kapsamları

Yalnızca kullanıcı kimlik doğrulaması için kullanılan çeşitli kapsamlar vardır: email, profile ve openid. Uygulamanız yalnızca bu kapsamları kullanıyorsa JWT Kimlik Jetonu ve kullanıcı kaydı ve oturum açma için Google ile Oturum Açma özelliklerinin ihtiyaçlarınızı karşılayıp karşılamadığını düşünün. Çoğu durumda bu, kullanıcı kimlik doğrulaması için mevcut en basit ve en basit yöntemdir.

Anahtar terimler ve kavramlar

Bu kılavuzlarda, OAuth 2.0 kavramları ve RFC6749 gibi IETF standartları hakkında temel bilgilere sahip olduğunuz varsayılmaktadır. Yetkilendirme kılavuzlarında aşağıdaki terimler kullanılır:

  • Erişim jetonu, Google API'lerini güvenli bir şekilde çağırmak ve kullanıcı verilerine erişmek için kullanılan, Google tarafından verilen ve kullanıcı başına kısa ömürlü bir kimlik bilgisidir.
  • Yetkilendirme kodu, bir tarayıcıdan Google Hesaplarında oturum açan tekil kullanıcıları güvenli bir şekilde tanımlamak için Google tarafından verilen geçici bir koddur. Arka uç platformunuz, erişim ve yenileme jetonları için bu kodu değiştirir.
  • Yenileme jetonu, Google tarafından yayınlanan, uzun ömürlü bir kullanıcı başına kimlik bilgisidir. Bu kimlik bilgileri platformunuzda güvenli bir şekilde saklanır ve kullanıcı mevcut olmasa bile yeni ve geçerli bir erişim jetonu almak için kullanılabilir.
  • Kapsam, jetonları belirli ve sınırlı miktarda kullanıcı verileriyle kısıtlar. Daha fazla bilgi için Google API'leri için OAuth 2.0 Kapsamları bölümüne bakın.
  • Pop-up modu, kullanıcının tarayıcısında çalışan bir JavaScript geri çağırmasına dayalı yetkilendirme kodu akışıdır. Google, yetkilendirme kodunu platformunuza göndermekten sorumlu olan geri çağırma işleyicinizi çağırır. Bu işlemin nasıl yapılacağı size bağlıdır.
  • Yönlendirme modu, HTTP yönlendirmelerine dayalı bir yetkilendirme kodu akışıdır. Kullanıcı aracısı önce Google'a yönlendirilir, Google'dan platformunuzun yetkilendirme kodu uç noktasına yapılan ikinci yönlendirme ise kodu içerir.

Jeton kullanım süreleri, jetonu veren olarak Google tarafından belirlenir. Çeşitli faktörler nedeniyle tam süre değişiklik gösterebilir.

OAuth 2.0 akışları

İki akış (örtülü ve yetkilendirme kodu) ele alınmaktadır. Her ikisi de Google API'leriyle kullanılmaya uygun bir erişim jetonu döndürür.

Yetkilendirme kodu akışı, gelişmiş kullanıcı güvenliği sağladığı için önerilir. Bu akış ayrıca, kullanıcı olmadan erişim jetonları almak için kullanılabilecek bir yenileme jetonu da döndürür. Böylece platformunuz, yaklaşan bir toplantıyla ilgili son dakikada planlanan bir SMS hatırlatıcısı göndermek gibi eşzamansız işlemleri daha kolay bir şekilde gerçekleştirebilir. Bir yetkilendirme modeli seçin, iki akış arasındaki farkları daha ayrıntılı bir şekilde açıklar.

Google Kimlik Hizmetleri JavaScript kitaplığı, OAuth 2.0 standardını izleyerek:

  • Dolaylı akışı yöneterek tarayıcı içi web uygulamanızın, Google API'lerini çağırmak için gerekli olan erişim jetonunu Google'dan hızlı ve kolay bir şekilde almasını sağlayın.
  • kullanıcının tarayıcısından yetkilendirme kodu akışını başlatın.

Genel adımlar

Hem dolaylı hem de yetkilendirme kodu akışı aynı şekilde başlar:

  1. Uygulamanız bir veya daha fazla kapsama erişim istiyor.
  2. Google, kullanıcıya bir rıza mesajı gösterir ve gerekirse önce kullanıcının Google Hesabında oturum açmasını sağlar.
  3. Kullanıcı, istenen her kapsamı tek tek onaylar.

Daha sonra her akış farklı adımlarla tamamlanır.

Örtülü akışı kullanırken

  • Google, izin sonucunu uygulamanıza bildirmek ve onaylanan kapsamlar için erişim jetonu döndürmek için bir geri çağırma işleyici kullanır.

Yetkilendirme kodu akışını kullanırken

  • Google, kullanıcı başına yetkilendirme koduyla yanıt verir:
    • Yönlendirme modunda kod, platformunuzun yetkilendirme kodu uç noktasına döndürülür.
    • Pop-up modunda kod, kullanıcıların web sitenizden ayrılmalarına gerek kalmadan tarayıcı içi uygulamanızın geri çağırma işleyicisine döndürülür.
  • 4. Adım: OAuth 2.0 sunucu yanıtını işleme'den itibaren arka uç platformunuz, Google ile sunucular arası bir değişim gerçekleştirir ve sonuçta her kullanıcı için yenileme jetonu ve erişim jetonunun platformunuza döndürülmesiyle sonuçlanır.

Kullanıcılar, erişim jetonu almadan önce uygulamanızın istenen kapsamlara erişmesi için izin vermelidir. Google bunun için yukarıdaki 2. Adım'da bir rıza mesajı gösterir ve sonucu myaccount.google.com/permissions adresine kaydeder.

Kullanıcıya isteği onaylama veya iptal etme seçeneğiyle birlikte uygulamanızın adı, logosu, gizlilik politikası, hizmet şartları ve istenen kapsamlar gösterilir.

Şekil 1'de tek bir kapsam için rıza mesajı gösterilmektedir. Tek bir kapsam istendiğinde, kapsamı onaylamak veya reddetmek için onay kutuları gerekmez.

İptal veya Devam düğmelerine sahip ve tek bir kapsam içeren kullanıcı rızası iletişim kutusu gösterilmez.

Şekil 1: Tek kapsamlı kullanıcı rızası iletişim kutusu.

Şekil 2'de birden çok kapsam için rıza mesajı gösterilmektedir. Birden fazla kapsam istendiğinde, kullanıcının her bir kapsamı onaylamasına veya reddetmesine izin vermek için ayrı onay kutuları gerekir.

İptal veya Devam düğmelerine ve birden fazla kapsama sahip kullanıcı rızası iletişim kutusu. Her kapsamın bir onay kutusu seçicisi vardır.

Şekil 2: Birden çok kapsam içeren kullanıcı rızası iletişim kutusu.

Kullanıcı hesapları

İzni kaydetmek ve erişim jetonu düzenlemek için bir Google Hesabı gerekir. Bundan önce, bireysel kullanıcıların bir Google Hesabı'nda oturum açarak Google'da kimlik doğrulamalarını yapmış olmaları gerekir.

Zorunlu olmamakla birlikte, web uygulamanıza veya arka uç platformunuza kaydolmak ve oturum açmak için Google ile Oturum Açma özelliğini kullanmanız önerilir. Bu sayede, gereken adımların sayısını azaltarak kullanıcıların karşılaştığı sorunları azaltır ve isteğe bağlı olarak erişim jetonlarını platformunuzdaki bireysel hesaplarla kolayca ilişkilendirebilirsiniz.

Örneğin, Google ile Oturum Açma özelliği kullanıldığında etkin bir Google Hesabı oturumu oluşturulur. Böylece, yetkilendirme isteğinde bulunurken kullanıcıdan daha sonra bir Google Hesabı'nda oturum açması istenmez. Kullanıcıların uygulamanızda kullanıcı kimliğini ve parolalarını ya da diğer kimlik sağlayıcılarını kullanarak kimlik doğrulamasını seçerseniz yine de izin almak için bir Google Hesabı'nda oturum açmaları gerekir.

Yetkilendirme başlatma sırasında (genellikle kullanıcının Google Hesabı'nın e-posta adresi) giriş ipucu eklemek, Google'ın hesap seçici gösterilmesini atlayarak kullanıcılara bir adım kazandırır. Google ile Oturum Açma tarafından döndürülen Kimlik Jetonu kimlik bilgisi, kullanıcının e-posta adresini içerir.

Yalnızca tarayıcıda çalışan web uygulamaları, kullanıcı hesabı yönetim sistemi uygulamamayı seçerek kullanıcı kimlik doğrulaması için yalnızca Google'a güvenebilir. Dolaylı akış olarak bilinen bu senaryoda, yenileme jetonunu bir kullanıcı hesabı ve yönetimin güvenli depolama alanıyla ilişkilendirmeye gerek yoktur.

Alternatif olarak, yetkilendirme kodu akışı kullanıcı hesabı sistemini gerektirir. Kullanıcı başına yenileme jetonları, arka uç platformunuzdaki tek bir hesapla ilişkilendirilmeli ve daha sonra kullanılmak üzere depolanmalıdır. Bir kullanıcı hesabı sisteminin nasıl uygulanacağı, yönetileceği ve yönetileceği platformunuza özeldir ve daha ayrıntılı olarak ele alınmamıştır.

Kullanıcılar, izni istedikleri zaman Google Hesabı ayarlarından görüntüleyebilir veya iptal edebilir.

İsteğe bağlı olarak, web uygulamanız veya platformunuz, jetonları iptal etmek ve kullanıcı iznini kaldırmak için google.accounts.oauth2.revoke'i çağırabilir. Bu, kullanıcı hesabını platformunuzdan sildiğinde kullanışlıdır.

Diğer yetkilendirme seçenekleri

Alternatif olarak tarayıcılar, İstemci Tarafı Web Uygulamaları için OAuth 2.0'da açıklandığı gibi doğrudan Google'ın OAuth 2.0 Uç Noktaları'nı çağırarak dolaylı akışı kullanarak erişim jetonları alabilir.

Benzer şekilde, yetkilendirme kodu akışı için kendi yöntemlerinizi uygulamayı seçebilir ve Web Sunucusu Uygulamaları için OAuth 2.0'ı Kullanma bölümünde açıklanan adımları uygulayabilirsiniz.

Her iki durumda da geliştirme süresini ve çabayı azaltmak ve OAuth 2.0 Güvenliği En İyi Mevcut Pratik bölümünde açıklananlara benzer güvenlik risklerini en aza indirmek için Google Kimlik Hizmetleri kitaplığını kullanmanızı önemle tavsiye ederiz.