SORU
24 Temmuz 2012, Salı


Uygulama *için OAuth2 ile kimlik doğrulaması ve bir web sitesi*

Öncelikle bir uygulama üzerinden erişilen bir web sitesi geliştiriyorum ve kullanıcı kayıt ve kimlik doğrulama için OAuth2 kullanmak istiyorum. Bir Android uygulaması olduğu için Android üzerinde iyi bir UI sağlar beri Google OAuth2 şeyler kullanmaya başlayabilir.

Google "You can choose to use Google's authentication system as a way to outsource user authentication for your application. This can remove the need to create, maintain, and secure a username and password store." yapmak istediğim şey olduğunu belirtir.Ancakher örnek ve her neyse, sadece bir web sitesine sahip hakkında bir şeyler bulabilirimyabir uygulama ile Google hizmetlerine karşı bir kullanıcının kimliğini doğrulamak.

Ve gerçekten de, benim app kayıt için gittiğimde ("") istemci, Google Web sitesi müşteriler için seçenekler vardır OAuth2 ve "" istemcileri (mobil uygulama yani) ikisini birden değil. yüklü Şimdi açıklayacağım ama OAuth2 taslağını okudum ve bir sorun olacağını düşünmüyorum iki ayrı istemcileri oluşturabilirsiniz.

Bu çalışma tasavvur yaptım:

OAuth2 flow diagram

  1. Kullanıcı Uygulamam özel veri erişimi için sorar.
  2. App kullanan bir erişim Google'ın API token istemek için 1* *Sınıf Android.
  3. Android kullanıcı için "app '' Google ile ilgili Temel Bilgilere erişim istiyor. Uygulamam diyor Bu iyi mi?"
  4. Kullanıcı Evet diyor.
  5. AccountManager OAuth2 Sunucu Kimlik telefonunda kullanarak Google bağlanır ve access token ister.
  6. Erişim belirteci yeşil çizgileri takip) döndürülür.
  7. AccountManager access token Uygulamam için döndürür.
  8. Uygulamam kullanıcının özel verilerini Sitem için bir istek, erişim simgesi de dahil olmak üzere gönderir.
  9. Sitem kullanıcı doğrulamak için erişim belirteci kullanarak gerekir. Belirteç Google ile as described here, doğrular - "bu token geçerli değil Google?".
  10. Şimdi, ne benistiyorummeydana gelecek olan Google diyor ki "Evet, sana kim verdiyse gerçekten o kullanıcı.", ama aslında (ve Google OAuth2 taslak belgelere dayalı) olacağını düşünüyorum "imkansız! söyle. Token Uygulamam için geçerlidir ve Sitem ediyorsun. ". GTFO!

Bu ne yapmalıyım? Ve LÜTFEN söyleme "" veya "OAuth2 kullanmayın" ya da benzer şekilde yardımcı olmayan diğer cevaplar. Openıd Kullanın Oh ve gerçekten AccountManager güzel UI kullanarak tutmak yerine dandik WebViews popup etmek istiyorum

Edit

Geçici cevap (Eğer işe yararsa size tekrar haber veririm!) aslında çalışması gerekir, ve Google sunucularına erişim belirteci nereden geldiğini umursamaz Nikolay. Bana biraz güvensiz, ama eğer işe yararsa göreceğim!

Güncelleme

Facebook yerine Google ile bu model hayata ve kesinlikle işe yarıyor. OAuth2 sunucu erişim belirteci nereden geldiğinin önemi yok. En azından Facebook da yok Google sanırım öyle mi, değil.

Bu bilgiler ışığında deposuna erişim belirteçleri için çok ama çok kötü bir fikir! Ama biz de Facebook/Google sunucularına vurmak için kimlik doğrulaması kontrol etmek zorunda kalmak istemiyorumherher şey yavaşlar beri isteği. Muhtemelen en iyi şey eklemek ek bir kimlik doğrulama tanımlama bilgisi için sitenizi size teslim zaman erişim simgesi olduğu doğrulanmış, ama daha basit bir yolu sadece tedavi etmek için erişim belirteci gibi bir şifre ve mağaza karması. Erişim belirteçleri gerçekten uzunluğundadır beri tuz gerek yok. Yukarıdaki adımları gibi bir şey olur yani:

9. Sitem kullanıcı doğrulamak için erişim belirteci kullanarak gerekir. İlk karma geçerli erişim belirteçleri önbelleğini kontrol eder. Eğer belirtecin karma orada bulunursa kullanıcı kimliği olduğunu bilir. Aksi takdirde Google ile as described here, Google ile kontrol eder - "bu token geçerli değil Google?".

10. Eğer Google erişim belirteci geçersiz diyorsa, GTFO için Kullanıcı söylüyoruz. Aksi takdirde Google "Evet, geçerli bir kullanıcı" ve biz o zaman kayıtlı kullanıcı veritabanı, kontrol olduğunu söyledi. Eğer Google kullanıcı adı (veya eğer Facebook kullanıyorsanız Facebook ıd) bulunursa yeni bir kullanıcı oluşturabiliriz. O zaman biz önbellek erişim sağlaması değer göstergesi.

CEVAP
12 Temmuz 2013, Cuma


Ben StackOverflow benzer bir soru için an answer gönderildi.

Google bu Hybrid Apps aramalar ve ** 15 açıklar.

Olayın özü bu bir Yetki Kodu (bir) OAuth2 Token geri almak için GoogleAuthUtil.getToken scope masaj bir dize geçmek zorunda kalacaksın. Bu Yetki Kodu sunucunuza mobil uygulamasından geçmiş olması ve bir OAuth2 Token takas ve Token Yenileme, this schematic göre.

scope parametresi böyle bir şey gerekiyor:

oauth2:server:client_id:<your_server_client_it>:api_scope:<scope_url_1> <scope_url_2> ...

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Facebook Developers

    Facebook Dev

    24 ŞUBAT 2009
  • GenTechPC

    GenTechPC

    1 Temmuz 2007
  • Theodore Leaf

    Theodore Lea

    29 AĞUSTOS 2006