2017-03-10 13 views
1

私はOAuthとモバイルアプリケーションの面白い問題IMHOに直面しました。私は既に同様の質問をいくつか見つけましたが、私が恐れる関連する回答は見つかりませんでした。OAuthはOAuthでセキュリティ保護されたRest APIと通信するモバイルアプリケーション用のフロー

アプリケーションは以下で構成されています:APIを消費OAuthの

  • Androidモバイルアプリケーション(別名、信頼できるクライアント/公式アプリ)で固定

    • のREST API。

    アカウントを作成するユーザーのための3つの方法があります。

    • メール/パスワードの組み合わせ
    • のGoogleアカウント
    • Facebookアカウント/ I 2の主要な問題がある

    両方がお互いに接続されていると仮定します。/

    1. どのOAuthグラントタイプを使用する必要がありますか?
    2. サードパーティのユーザー登録を処理するにはどうすればよいですか?問題#1
      について

    私はネイティブアプリケーション/またはクライアントの資格グラントにそれを使用してについて少し異なる意見を見つけたが、私は/ リソース所有者のパスワードに助成金を使用して考えていましたタイプ。リソースオーナーパスワードのグラントタイプを扱う際、FacebookやGoogleを介して作成されたアカウントにはパスワードがないので問題が発生します。 Facebookの/ Googleの登録を処理するための責任を負わなければならないパーティ問題#2
    について

    ?バックエンドまたはモバイルアプリケーションですか?現在のシナリオではウェブサイトがないので、私はモバイルアプリが責任ある当事者であるべきだと推測します。

    外部アカウントに関する第2の問題:OAuthで保護されているAPIに関して、どのように対処していますか?

    私はどんな提案もありがとうございます!

  • 答えて

    0

    一般的に言えば、自分のユーザーをロールする場合は、サードパーティとの認証機能を集中管理することをお勧めします。あなたのバックエンドコードは、FacebookとGoogleの承認を確定できる必要があります。承認がどこから開始されたかにかかわらず。

    例。

    1. ユーザーはExampleAppアプリケーションを初めて開き、「googleでサインアップ/ログイン」ボタンをクリックしてそれをクリックします。
    2. アプリはoauth-flowを開始し、自分の認証層にあるredirect_uri(つまりコールバック)を指定します(例:https://exampleapp.com/google-auth-callback)。
    3. あなたのサーバーはアクセストークンの認証コードを交換してGoogleからユーザーIDを取得し、新しいユーザーを作成することができます
    4. このアプリケーションでは、exampleapp.com/apiの認証情報が必要です。それをアプリコールバックを介してアプリに返します。すなわちexampleapp。基本的には、サーバがそのようなExampleApp://?access_token=ACCESS_TOKEN&refresh_token=REFRESH_TOKEN&expires_in=TIMESTAMP
    5. などのカスタムURLスキーマに302 Permanent Redirectを行うことができます今、アプリがバックエンドとの通信、およびトークンをリフレッシュすることができますなど

    注:私は、ご利用のサービスプロバイダのためのOAuth2を想定していますOauth1ではほぼ同じプロセスを使用できます。

    関連する問題