0

この SO 返信で説明されている OAuth2 の通常のフローは次のとおりです。

  • アクセス トークンを使用して API リクエストを送信する
  • アクセス トークンが無効な場合は、リフレッシュ トークンを使用して更新してみてください
  • 更新リクエストがパスした場合は、アクセス トークンを更新し、最初の API リクエストを再送信します
  • 更新リクエストが失敗した場合、ユーザーに再認証を求める

これはほとんどの API 呼び出しで問題ありませんが、1 つ気になる点があります。それは、認証です。

ユーザーが自分のお気に入りのサービスを使用して私のおしゃれな新しい Web アプリにサインインしようとすると、更新トークン (または OAuth1 の場合はキャッシュされたアクセス トークン) を使用してサインインを試みる必要がありますか、それとも常に新しいトークンを取得する必要がありますか?サービス プロバイダー (Google、Facebook など) から取得し、保存されているアクセス トークンとリフレッシュ トークンを破棄しますか?

4

1 に答える 1

0

ユーザー認証と OAuth 2.0 は 2 つの異なるものです。違いはhttp://oauth.net/articles/authentication/で詳しく説明されています。OAuth 2.0 の上にユーザー認証/SSO プロトコルを構築する場合でも (これは OpenID Connect と一部のベンダー固有の実装で行われます) 、ユーザー認証イベントや ID トークンではなくrefresh_token、常に適用されます。access_token

ユーザーのログイン セッションを更新するためにリフレッシュ トークンを単独で使用することはできません。これは、ユーザーが (まだ) 存在していることを確認するために、ブラウザーを介したユーザーとの対話 (アクティブな場合とパッシブな場合があります) が必要になるためです。

ユーザーのログイン セッションを更新するには、常に ID プロバイダーにリダイレクトして、新しい認証情報を取得する必要があります。この操作により、アクセス トークンの更新に使用できる新しい更新トークンも得られる可能性があることに注意してください。

于 2015-11-05T10:35:58.747 に答える