1. ホーム
  2. php

[解決済み] APIトークンとは【終了しました

2022-03-02 07:53:12

質問

モバイルアプリケーション(iOS & Android)とAPI(PHP)のユーザー認証について、最適な方法を見つけようとしています。

私が調べたところでは、以下のような選択肢があります。

HTTPSによる基本認証 - リクエストごとにユーザーのユーザー名/パスワードを確認します。

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

APIトークン - モバイルアプリはユーザー名/パスワードを送信し、トークンを受信して、その後のリクエストにこれを追加します。トークンはDBに保存され、各リクエストでチェックされます。

セッションIDをDBに保存しているので、セッションと同じように見えるのですが、APIトークンについての私の説明は間違っているのでしょうか。

  1. APIトークンについての私の説明を訂正していただけませんか。これらは何のためにあるのでしょうか?セッションIDとどう違うのですか?
  2. APIトークンの利点は何ですか?
  3. oAuthは(その用途を単純化すると)単なるquot;APIトークン"を作成するためのプロトコルですか?

解決するには?

私は専門家ではありませんが、私が拾ってきたいくつかのコツをお教えしましょう。

1)APIトークンは少し一般的な用語です。通常、APIトークンは、あなたのサービスへのアクセスを要求するアプリケーションの一意な識別子である。あなたのサービスは、アプリケーションにあなたのサービスを要求するときに使用するAPIトークンを生成する。そして、アプリケーションから提供されたトークンを、あなたが保存しているトークンと照合することで、認証が行われます。

セッションIDを使用することもできますが、その目的はAPIトークンとは異なります。セッションIDは認証の一形態ではなく、認可の結果である。通常、セッションは、ユーザーがリソース(サービスなど)を使用することを許可された時点で確立されます。したがって、セッションIDは、ユーザーがリソースへのアクセスを許可されたときに作成されます。APIトークンは、ユーザー名やパスワードと同じような認証方法です。

2) API トークンは、安全でない HTTP でユーザー名とパスワードの組み合わせを送信する代わりになるものです。しかし、誰かがAPIトークンを持ち出して代わりに使うことができるという問題は依然として存在する。

3) ある意味そうです。これは、APIトークンを新鮮に保つための方法です。同じAPIトークンを使いまわすのではなく、サービスを利用するときにアクセストークンを要求するのです。OAuth 2.0の手順は以下の通りです。

   a) サービスに何らかの証明書を添付してリクエストを送信する。

   b) レスポンスに成功すると、コードが返される

   c) コードでサービスに再度リクエストする。

   d) 成功すると、それ以降終了するまでの各APIリクエストに署名するためのアクセストークンが返されます。

現在、多くの大手サービスプロバイダーがOAuth 2.0を使用しています。完璧なソリューションではありませんが、おそらく現時点で最も安全で広く使われているAPIセキュリティの方法です。