2013-07-22 10 views
13

モバイルアプリケーション(iOS & Android)とAPI(PHP)のユーザー認証を処理するための最良の方法を試しています。私はオプションを研究してきたものから、APIトークンとは

は以下のとおりです。HTTPS以上

基本認証 - すべてのリクエストのためのユーザーのユーザー名/パスワードを確認してください。

セッション - リクエストごとにセッションIDを送信します。サーバーは状態を維持します。だから、アプリはユーザー名/パスワードを送信し、サーバーは、私のウェブサイトのように、後続のリクエストでログインしたユーザーをチェックします。

APIトークン - モバイルアプリがユーザー名/パスワードを送信し、トークンを戻してからこれを後続のリクエストに追加します。トークンはDBに格納され、各要求時にチェックされます。

私はAPIトークンの説明が間違っていると推測しています。セッションIDはDBに保存されているためセッションと同じように見えます。

  1. APIトークンについての私の説明を修正できますか?それらは何のため?セッションIDとはどのように違いますか?
  2. APIトークンの利点は何ですか?
  3. 「APIトークン」を作成するためのプロトコルであるoAuth(その使用を簡素化する場合)ですか?

答えて

16

私は専門家だが、私はあなたに私が拾ってきたセントのカップルあげる:

1)APIトークン一般的な用語のビットです。通常、APIトークンは、サービスへのアクセスを要求するアプリケーションの一意の識別子です。あなたのサービスは、あなたのサービスをリクエストするときにアプリケーションが使用するためのAPIトークンを生成します。次に、提供するトークンと、認証するために格納したトークンを一致させることができます。

セッションIDは使用できますが、その目的はAPIトークンとは異なります。セッションIDは認証の形式ではなく、認証の結果です。一般的に、ユーザーがリソース(サービスなど)を使用する権限を与えられると、セッションが確立されます。したがって、ユーザーにリソースへのアクセスが許可されると、セッションIDが作成されます。 APIトークンは、ユーザー名/パスワードに類似した認証の形式です。

2)APIトークンは、セキュリティで保護されていないHTTP経由でユーザー名とパスワードの組み合わせを送信する代替品です。しかし、誰かが代わりにAPIトークンを使用して使用できるという問題は依然として存在します。

3)はい。 APIトークンを「新鮮」に保つ方法です。同じAPIトークンを回す代わりに、サービスを使用するときにアクセストークンを要求します。次のようにOAuth 2.0の手順は、a)リクエストが成功応答は、サービスに別の要求がで作られたコード
      C)を返し、ある種のクレデンシャル
      B)をサービスに送信      
コード
      d)成功した​​応答は、その後の各API要求に署名するためのアクセストークンを返します。

多くのより大きなサービスプロバイダは、現時点でOAuth 2.0を使用しています。これは完璧な解決策ではありませんが、おそらく今のところ最も安全で広範なAPIセキュリティメソッドです。

+0

「セッションIDは認証の形式ではなく、認証の結果である」ということを詳しく説明できますか? – paul

+0

私の答えは短く更新されました - セッションIDは認証の形式ではなく、APIトークンはありません。 –

+0

APIキーは、自分のアプリからのリクエストを識別するだけで、アプリからログインしているユーザーとは何の関係もありませんか?私が読んだことから、私のAPIはステートレスでセッションを使わなくてはならないからです。 – paul

関連する問題