2016-04-05 4 views
0

現在、2種類の許可タイプ、passwordおよびrefresh_tokenを処理しているOAuth2サーバを実装しました。FacebookやGoogleまたは他のサードパーティを使用しているモバイルクライアントからのOAuth2認証

今、私のクライアントが自分のFacebookアカウントまたはGoogleアカウントを使用して認証する必要がありますが、私の質問は同様のフローに適用される可能性があります。

FacebookやGoogleの認証を行うには、アプリケーションでデータを取得するためにアプリケーションを認証する必要があります。実際にFacebookやGoogleにアクセスしてフェッチする必要があります。

私はそれを行う方法は2つありますが。

  1. ユーザーは、自分のFacebookアカウントにログインし、アプリケーションを認証してアクセストークンを取得します。それは自分のサーバーにアクセストークンを送り、私はそれを使ってデータを取得します。

  2. ユーザーはFacebookアカウントにログインし、アプリケーションを認証し、認証コードを取得し、サーバーに送信し、認証コードを使用してユーザーのアクセストークンを取得し、データ。

あなたの経験やベストプラクティス(私はこの種のワークフローを見つけることができませんでした)から、最良の選択肢は何ですか?

答えて

1

私の職場では、第2のタイプ(明示的な認可タイプと呼ばれます)が使用されています。

暗黙的な付与型より暗黙的な付与型のもう1つの利点は、リフレッシュトークンが暗黙的にサポートされていることです。あなたのアクセストークンの非常に長い有効期限を保つか、トークンが期限切れになったらユーザーはリダイレクトダンスを行う必要があります。

アクセストークンの有効期限が非常に長くなる必要はないので、明示的な許可タイプでより安全です(私はFacebookやGoogleで使用するときにアクセストークンの有効期限を変更できないと信じています)リダイレクトする必要はありません(再ログイン)

+0

本当に良い点があります。私はちょうどそのような振る舞いを実装しようとしました。テスト目的のために私は手動で 'authorize'リクエストを行いますが、' redirect_uri'を提供する必要があり、 'authorization_code'で' access_token'を取得するために再利用する必要があります。私はここに行方不明のものがありますか?この 'redirect_uri'の必要はありません。なぜなら、' authorization_code'はモバイルデバイスから取得し、自分のサーバー上のカスタム許可タイプとして私のサーバーに送信する必要があるからです。何かヒント? – Trent

+0

@Trent私の理解によると、 'redirect_uri'はリダイレクションメソッドが使われる場合に' access_code'を得るためだけに必要となります。あなたがaccess_codeを持っているなら、あなたはaccess_tokenを得ることができ、それゆえ認可されたリソースへのすべてのアクセスを得ることができます。私は私の個人的なプロジェクトのために 'googleを使ったログイン 'を使っていました。リダイレクトを使わず、代わりにポップアップダイアログを使っています。私はモバイル用のもので多くの経験はありませんが、 'redirect_uri'を必要としないデバイスから' access_code'を得る場合には、 –

+0

afaik、 'access_code'を得る他の方法はありません。 'https://graph.facebook.com/oauth/authorize?redirect_uri =&client_id = someappid&response_type = code'は' https://www.facebook.com/dialog/oauth?redirect_uri&client_id=someappid&response_type=code 'にリダイレクトされます。エラーは 'redirect_uri'が見つからないため、クライアントとサーバーの両方に' redirect_uri'というダミーを設定しているかもしれませんが、正しくは感じられません。 – Trent

関連する問題