[解決済み] APIトークンとは【終了しました
質問
モバイルアプリケーション(iOS & Android)とAPI(PHP)のユーザー認証について、最適な方法を見つけようとしています。
私が調べたところでは、以下のような選択肢があります。
HTTPSによる基本認証 - リクエストごとにユーザーのユーザー名/パスワードを確認します。
セッション - リクエストごとにセッションIDを送信し、サーバーが状態を維持する。したがって、アプリはユーザー名とパスワードを送信し、サーバーは私のウェブサイトと同じように、その後のリクエストでログインしたユーザーをチェックします。
APIトークン - モバイルアプリはユーザー名/パスワードを送信し、トークンを受信して、その後のリクエストにこれを追加します。トークンはDBに保存され、各リクエストでチェックされます。
セッションIDをDBに保存しているので、セッションと同じように見えるのですが、APIトークンについての私の説明は間違っているのでしょうか。
- APIトークンについての私の説明を訂正していただけませんか。これらは何のためにあるのでしょうか?セッションIDとどう違うのですか?
- APIトークンの利点は何ですか?
- 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セキュリティの方法です。
関連
-
[解決済み] SAJAXは死んだか?何を置き換えるべきか?
-
[解決済み] YouTube APIからYouTubeビデオのサムネイルを取得する方法を教えてください。
-
[解決済み] Androidの「コンテキスト」とは何ですか?
-
[解決済み] JWT(JSONウェブトークン)の有効期限を自動的に延長する機能
-
[解決済み] JAX-RSとJerseyでRESTトークンベースの認証を実装する方法
-
[解決済み] セキュリティで保護されたWebサービスにもアクセスするiOSアプリで、Facebook認証を行うためのデザイン
-
[解決済み] 認証とセッション管理に関するSPAのベストプラクティス
-
[解決済み】「px」、「dip」、「dp」、「sp」の違いは?
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
-
[解決済み] ASP.NET Coreのトークンベース認証
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] [Solved] Fatal error: メンバ関数prepare()のNULLでの呼び出し
-
[解決済み] コマンドの同期がとれていない。
-
[解決済み】PHP定数「PHP_EOL」はいつ使うの?
-
[解決済み】XAMPPのphpMyAdminで「設定にあるcontroluserの接続に失敗しました。
-
[解決済み】ディレクトリ内のファイル数を数える PHP
-
[解決済み】Laravel 5.2 Storage::makeDirectory($dir) でディレクトリが作成されない。
-
[解決済み】警告:mysql_fetch_array()はパラメータ1がリソースであることを期待、ブール値は[重複]で与えられる]
-
[解決済み】メッセージ。Trying to access array offset on value of type null [重複]配列のオフセットにアクセスしようとしています。
-
[解決済み] [Solved] Fatal error: メンバ関数 query() の null への呼び出し。
-
[解決済み】PHPのクラスが見つからないが、インクルードされている