私は音声チャット用のAndroidアプリを作成しており、バックエンドサーバーで簡単なユーザー認証を行うためにGoogle Sign-Inを使用することに決めました。しかし、私はバックエンドでアプリケーションを認証する方法を理解していません。ユーザーが自分のGoogleアカウントを使用してサインインしてIDトークンを受け取ると、IDトークンをサーバーに送信してから、サーバーがIDトークンを検証します。そしてそれは何ですか?ユーザーがボイスメッセージを送受信するときに、アプリケーションがサーバーとの間でメッセージをアップロード/ダウンロードする必要がある場合など、次の要求を認証する方法はありますか?サーバーはどのユーザーがリクエストを行っているかを知る必要がありますが、IDトークンは間もなく期限切れとなり、その整合性検証は複雑で比較的長いプロセスであるため不適切です。あなたが必要とする説明がでているようGoogle Sign-Inバックエンドサーバー認証
答えて
GoogleはサインインAPI:次の手順が関与している:
- のiOS/Androidアプリケーションを使用して、Googleユーザーがサインインを。
- クライアント(iOS/Androidアプリ)にtokenid(その他の追加情報についてはlinkを参照)が返されます。
- クライアントはトークンIDをバックエンドサーバーに送信します。
- サーバーは、GoogleクライアントAPIを使用します(またはGETリクエストによってGoogleエンドポイントを呼び出すが、関連するネットワーク遅延があることに注意してください)。トークンの整合性を確認します。このステップでは、一定の基準を満たす必要があります。 Hereを参照してください。
- GoogleAPIはサーバーに情報を返します。どのような情報ですか?このような 何か:
{u'picture ': U' https://lh3.googleusercontent.com/-RD4yn7rqIc8/AAAAAAAAAAI/AAAAAAAALQI/9Ab_kR3_CII/s96-c/photo.jpg ' u'sub ':u'10270538098780639-55'、u'family_name ':u'Dusad'、U' 「iss」: u 'https://accounts.google.com'、u'email_verified ':True、u'name': u'Utsav Dusad '、u'at_hash':u'BMjN0mWeomqVVBhjW_W9A '、u'given_name': u'Utsav '、u 'exp':1484582338、u'azp ': u'85959433390-npk1ss7juimjqt5hrlhm7v2fj2u7593f.apps.googleusercontent.com'、 u'iat ':1484578738、u'locale':u'en-GB '、u'email': u'[email protected] '、u'aud': u'85959433390-npk1ss7juimjqt5hrlhm7v2fj2u7593f.apps.googleusercontent.com '}
サブ:件名。ユーザーID。プライマリキーとしてメールIDを使用しないでください。ユーザーIDを使用します。
ユーザーの識別子。すべてのGoogleアカウントで一意であり、決して が再利用されません。 Googleアカウントには異なる時点で複数のメールがある可能性があります。 ですが、サブ値は決して変更されません。あなたの アプリケーション内のsubを、ユーザーの一意の識別子キーとして使用します。
詳細な情報についてはhereを参照してください。
- Serverは、クライアントに成功ログインを返します。
- クライアントはtokenIDを使用して後続(HTTP POST、GET)リクエストを行います。
- サーバーは、idtokenと「サブ」情報(サブはユーザーの一意のID)を確認することによってデータを提供します。
に見えます: https://developers.google.com/identity/sign-in/web/backend-auth#verify-the-integrity-of-the-id-token
それは説明する:
を使用すると、HTTPS POSTでIDトークンを受け取った後、あなたがトークンの 整合性を確認する必要があります。トークンが有効であることを確認するには、次の条件が満たされていることを確認してください。
IDトークンは、適切な Google公開鍵(JWKまたはPEM形式)で正しく署名されたJWTです。 IDトークンのaud の値は、アプリのクライアントIDの1つと同じです。このチェック は、 が使用されている悪意のあるアプリに対して発行されたIDトークンがアプリのバックエンドサーバー上の同じユーザーに関するデータにアクセスしないようにするために必要です。 IDトークンの のissの値は、accounts.google.comまたは https://accounts.google.comと同じです。 IDトークンの有効期限(exp)には、 が渡されていません。認証リクエストでホストされているドメインが指定されている場合、 IDトークンには、Google Appsでホストされている ドメインと一致するリクエストがあります。
それは述べている:
むしろ、私達は強くあなたの プラットフォームは、Google APIクライアントライブラリを使用して、または当社のtokeninfo検証エンドポイントを呼び出すことをお勧めします をこれらの検証手順を実行するために独自のコードを書くより。
これは、あなたが行う必要があることを正確に示しています。
- 1. バックエンドサーバーでの認証方法は?
- 2. バックエンドサーバーを使用したGoogle認証が必要スコープ
- 3. Googleのゲームでバックエンドサーバー認証を実装する方法
- 4. SAML SignInプロトコルとフォームベースの認証
- 5. Aurelia Google SignInボタン
- 6. PhoneGapのGoogle+ SignInボタン
- 7. Xamarin Android Google Plus SignIn
- 8. Rxjava2 + Google SignIn In Firebase
- 9. Google+ログインボタン[クラス= 'g-signin']
- 10. signIn匿名で:FAILURE Google FireBase
- 11. google signin button press detection ios
- 12. facebookとtwitter認証のためのOmniauthとDeviseのSigninエラー
- 13. Google認証プロセス
- 14. Google Plus認証
- 15. Google認証gcloud.beta.ml.jobs.submit.training
- 16. Google認証javascript
- 17. Google AppEngine認証
- 18. Google ClientLogin認証
- 19. Googleクラウドアピ認証
- 20. Java認証でのGoogle認証httpトークン
- 21. Google認証者による2FA認証
- 22. Google SAML APP PHP認証のSSO認証
- 23. Google Sign In AndroidとIOSのバックエンドサーバー
- 24. GoogleのClientLogin認証
- 25. Google Data API認証
- 26. マルチサイト認証「google like」
- 27. Google認証のアクセストークン
- 28. Google Gmail API - 認証
- 29. GoogleドライブAPI認証
- 30. google認証のCircularRedirectException
こんにちはサリバン、あなたは決してこの状況の解決策やアプローチを見つけましたか? – rastadrian
私はUtsav Dusadの答えが最も適切だと思います。 – Salivan
idTokenの値を含むAuthorizationヘッダーを含むすべての結果の要求は、もしそうなら、idTokenがJWTであるとすれば、おそらくAuthorization:Bearer {idToken}? – rastadrian