web-dev-qa-db-ja.com

OAuthとは何ですか?どのように保護しますかREST APIコールですか?

私はモバイルアプリケーションを持っていますREST API呼び出しがトークンやセキュリティ機構なしでサーバーにヒットします。

API呼び出しを保護したい。 OAuthとは何か、およびモバイルアプリをセキュリティで保護する方法を理解しようとしていますRESTサーバーにアクセスしているAPIコール?

また、OAuthで使用される以下のフィールドについて詳しく知りたいと思います。ここから、フィールドの下に移動します。

Consumer Key
Consumer Secret
Token
Token Secret
Timestamp
Nonce
11
Sanjay Salunkhe

ほとんどのプロバイダーがOAuth 2.0およびOAuth 1.0を使用しているため、主要プロバイダーによって非推奨になっているため、OAuth2.0について説明します

OAuthとは何ですか?

OAuthは認証のオープンスタンダードであり、インターネットユーザーがMicrosoft、Google、Facebook、Twitter、One Networkなどのアカウントを使用してパスワードを公開せずにサードパーティのウェブサイトにログインする方法として一般的に使用されています。

独自のOAuth=サーバーを実装できます。ここでは、ソーシャル認証について説明します。したがって、OAuthは、この後、OAuthを使用したソーシャル認証を指します。

簡単に言えば、OAuthを使用すると、ユーザーはアカウント(Facebook、Googleなど)でWebサービスにログインできます。

用語:

  • client:APIのユーザー。
  • リソース所有者(apiサーバー):API
  • Authorization Server(auth server):Facebook/Googleなどの認証サーバー。
  • Authorization grant:ユーザーを承認する方法。ここでは認証コードを使用しています。
  • 認証コード:認証サーバーがクライアントに返すコードで、APIサーバーでアクセストークンと交換できます。
  • アクセストークン:ユーザーを識別する文字列で、通常は有効期限が付いています。
  • コンシューマキーまたはAPP_ID:アプリケーションを識別するために認証サーバーが使用する公開キー。
  • Consumer SecretまたはAPP_SECRET:秘密にしておくべき秘密鍵。

以下の用語はOAuthとは関係ありませんが、OAuthと組み合わせて使用​​すると、より安全になります。

  • Timestamp:日付と時刻を示す文字列。
  • Nonce:一度しか使用できない数値または文字列。

enter image description here
ソース: http://smerity.com/

Facebookログインを例に図を説明します。

バックグラウンド。図を説明する前に、以下を実行したことを考慮してください。

  1. アプリをFacebook開発者ポータルに登録します。
  2. Facebookは2つのコードを提供します。1)secret_keyと2)app_id
  3. Login with Facebookと書かれたボタンをデザインしました。

今図。

  1. クライアントがAPIサーバーをリクエストします。
  2. APIサーバーがログインページにリダイレクトして言っています。 To access the data: please login with facebook to access the page
  3. ユーザーがlogin with Facbookボタンをクリックすると、新しいポップアップOAuth dialogが開きます。 Facebookのユーザー名とパスワードを尋ねます。
  4. ユーザーはユーザー名とパスワードを入力し、アプリへのアクセスを許可します。 auth serverは、URLのパラメーターとしてコードを使用して、ユーザーをWebサイトにリダイレクトします。
  5. APIサーバーステップ4で呼び出され、APIサーバーはURLからコードをキャプチャします。
  6. APIサーバー提供されたclient_secretを使用してauth serverを呼び出します
  7. Auth serverは、APIサーバーへのユーザーのaccess tokenに戻ります。
  8. APIサーバーは、指定されたaccess tokenのユーザー情報をauth serverに要求します。
  9. Auth Serverは、ユーザー、プロフィール写真、メールなどに関する詳細を返します。
  10. APIサーバーはユーザーを識別し、アクセストークンと共に応答を送信します。
  11. clientは、次のリクエストでapiサーバーにアクセストークンを送信します。
  12. APIサーバーは、アクセストークンが有効かどうかを確認して応答します。
  13. アクセストークンの有効期限が切れると、clientに再度ログインするように求められます。

さて、これはどのようにAPIを保護しますか?

アクセスに必要なログインなど、セキュリティが必要な部分を作成します。リクエストを行うクライアントがAPIにログインしていない場合は、図のステップ2にクライアントを送信します。

それで、ナンスとは何ですか?タイムスタンプ?

誰かがアクセストークンを盗んだ場合、アクセストークンの有効期限が切れる限り、APIサーバーにアクセスできます。したがって、ユーザーがページを要求すると、サーバーはサーバーに格納されているナンスをユーザーに送り返します。クライアントは受信したナンスでリクエストに署名し、リクエストを完了します。 nonceは1回しか使用されないため、サーバーはnonceを削除します。攻撃者がナンスを取得し、サーバーに偽の要求を行うと、サーバーはその要求を拒否します。これは、1回限りの番号がすでに使用されているため無効です。

TimeStampは、トークンまたはnonceが作成される時間を特定するために使用されます。これは、要求が完了するのに必要な時間である限られた時間フレーム(1〜2秒)でトークンまたはnonceを期限切れにするために使用されます。

25