2016-07-14 18 views
1

現在、フロントエンドがモバイルデバイスにあり、バックエンドがサーバー上にあるというIonicアプリケーションを実装しています。 (したがって、デバイスとサーバーの間に接続の待ち時間があります)そして、私のアプリケーションはGoogle APIに接続することでGmail、カレンダーなどのGoogleサービスを使用しています。クライアント側とサーバー側のGoogle API認証を組み合わせる方法はありますか?

  1. 現在アーキテクチャは次のとおりです。

    デバイス< ==>サーバー< ==>のGoogle API

    これはOAuth 2.0のサーバー側の認証を使用しています。それは動作しますが、接続の待ち時間が長すぎるので、ダイヤルアップインターネット接続があるときに戻るように感じます。

  2. は私があるOAuth 2.0のクライアント側の認証、使用しようとしました:

    デバイス< ==>のGoogle APIを

    これは高速ですが、それは2つの問題があります。

    1. をフロントエンドコードをアプリケーションに組み込んだとしても、フロントエンドのすべてがすべての人に見えるというルールが残っているという懸念があります。 (この仮説を証明するか否定する証拠は見つかりませんでした)
    2. Google API OAuth 2.0のみがクライアント側の認証にフローし、フローが頻繁に期限切れになるため、ユーザーに何度も何度も許可を与えたくありません。

次の操作を行うことが可能であるのであれば、私は思っていた:

  • キー/資格情報を格納するために、サーバー側の認証を使用します(私はバックとしてジャンゴを使用していますこれはPythonです)、フロントエンドはサーバーからキー/クレデンシャルを取得し、JavaScriptコードを使用してGoogleサービスを進めます。
+0

誰でも私に助言を与えることができますか?感謝します – CarsonChen

答えて

0

私はこれがパーティーに遅れていることを知っていますが、私はこれを今やっています。私はこれを設定する2つの方法があると思うが、どちらも完璧ではない。

  1. サーバー側のフローを使用して、サーバーまたはクライアントのいずれかで必要なすべてのスコープを承認します。トークンを取得したら、それをクライアントに渡します。欠点は、クライアントが必要以上に多くのAPIにアクセスできるトークンを持つことです。
  2. クライアントとサーバーの両方に個別の承認フローを作成します。これは、ユーザーが2つの認証プロンプトを持っていることを意味します。このアプローチの良い点は、クライアントのスコープが限られていることを保証できることですが、サーバーはまだ大きなタスク(ドライブのファイルの移動、電子メールの送信など)を処理できる可能性があります。

私の場合、 Contacts APIへの読み取りアクセスが必要ですが、サーバーには完全なドライブアクセスが必要です。

誰もが1つの認可のみが必要だが、クライアントとサーバーが別々のスコープを持っている組み合わせアプローチを見つけた場合、それは理想的な状況になります。

関連する問題