28

私はOAuthを学んでいますが、頭の中で質問があります。答えが見つかりません。

アプリケーションがAPIを使用することを承認するかどうかを要求トークンを理解しました。しかし、ユーザーがアクセストークンを取得すると、誰かがアクセストークンを盗んだ場合はどうなりますか?

http://www.example.com/api/article/1?access_token= ******access_token******のようなものがあると想像してください。

このURLを別のユーザーに渡すと、他のユーザーが私のアクセス権を持っているため、APIは保護されなくなりますか?

4

1 に答える 1

13

簡単な答え: はい、OAuth2 の場合 - 有効な access_token を持っている人は誰でも、そのトークンによって指定されたリソースにアクセスできます。どのくらいの期間は、OAuth2 プロバイダーの実装に依存します。

OAuth1と2の両方についての長い答え:

OAuth 1 に関して言えば、アクセス トークンだけでは十分ではありません。また、アクセス トークン シークレットと、コンシューマー キーとシークレットも必要です。アクセス トークンを機密に保ち、その有効範囲と有効時間を制限することは引き続き有効ですが、クライアント シークレットとトークン シークレットがなければアクセス トークンを使用できません。OAuth 1 では、暗号化が仕様に組み込まれているため、SSL を使用する必要はありません。

OAuth 2は異なります。アクセス トークンを機密に保つことの方が間違いなく重要です。したがって、API プロバイダーは、アクセス トークン (OAuth2 ではベアラー トークンとも呼ばれる) ができるだけ短い期間のみ有効であることを保証する必要があります。これらのトークンはパスワードのように機能し、傍受された場合、攻撃者によってすぐに使用される可能性があります。したがって、OAuth2 (ベアラー トークンを使用) 仕様では、仕様に暗号化が組み込まれていないため、すべての通信が SSL 経由で行われる必要があります。通常、アクセス トークンの有効期間は短く、有効期間が長い「リフレッシュ トークン」でリフレッシュできますが、最初のベアラー トークンがコンシューマーによって受信されたとき、およびベアラー トークンがリフレッシュされたときにのみ転送されます。

于 2011-07-09T09:12:43.357 に答える