ホームページ >ウェブフロントエンド >jsチュートリアル >API 認証の初心者ガイド: 基本から実装まで

API 認証の初心者ガイド: 基本から実装まで

Patricia Arquette
Patricia Arquetteオリジナル
2024-09-22 14:45:02720ブラウズ

A Beginner

ここ数日間、私は API 認証 について学習してきました。いくつかの方法を試して小さなプロジェクトを作成した後、学んだことを共有するのは素晴らしいアイデアだと思いました。この投稿では以下について説明します:

  • API 認証が重要な理由。
  • さまざまな種類の API 認証 (基本、API キー、トークンベース)。
  • Axios を使用してこれらの認証メソッドを単純な Web アプリに実装する方法。

始めましょう!


API 認証はなぜ重要ですか?

ほとんどの場合、プライベート API を誰にでも公開することは望ましくありません。認証は、承認されたユーザーまたはクライアントのみが API にアクセスできるようにするのに役立ちます。さらに、認証はリクエスト数の制限、ユーザーの追跡、機密データの保護にも役立ちます。

では、認証を必要としない API についてはどうでしょうか? レート制限を使用すると、ユーザーまたは IP が特定の時間枠内に実行できるリクエストの数を制限することで、ある程度のセキュリティを確保できます。これは、静的データを提供する場合、または強力な保護が必要ない場合に便利です。

ここで、API 認証の 3 つの主要なタイプ、基本認証API キー認証、および トークンベースの認証について詳しく見ていきましょう。


1.基本認証

基本認証には、各 API リクエストで Base64 でエンコードされた ユーザー名パスワード の送信が含まれます。実装は簡単ですが、リクエストごとに資格情報が渡されるため、あまり安全ではありません。

Basic 認証の実装方法

この例では Secrets API を使用しました。まず、次のデータを含む POST リクエストを送信してユーザーを登録しました:

{
  "username": "arka",
  "password": "221855"
}

登録に成功した後、Postman を使用してログインし、リクエスト ヘッダーでユーザー名とパスワードを送信しました。

GET https://secrets-api.appbrewery.com/all?page=1

これは、ユーザーが保存したシークレットのリストを返します。

Axios を使用して Node.js アプリに基本認証を実装する方法を次に示します。

// Basic authentication route
app.get("/basicAuth", async (req, res) => {
  try {
    const result = await axios.get(API_URL + "/all?page=2", {
      auth: {
        username: myUsername,
        password: myPassword,
      },
    });
    res.render("index.ejs", { content: JSON.stringify(result.data) });
  } catch (error) {
    res.status(404).send(error.message);
  }
});

2. API キー認証

API キー認証では、リクエストごとに (ユーザー用に生成された) キーを渡すことで API へのアクセスが許可されます。このキーは、リクエストを行っているクライアントを追跡するために使用され、多くの場合、レート制限や請求に関連付けられます。

認証と認可の違い

覚えておくべき重要な違い:

  • 認証: ユーザーの身元を確認します (資格情報を使用したログインなど)。
  • 認可: ユーザーまたはクライアントにリソースへのアクセスを許可します (例: API キーを使用してリクエストを行う)。

API キー認証を使用すると、通常は次のような API キーを取得します。

GET https://secrets-api.appbrewery.com/generate-api-key

API キーを受信したら、それを使用して承認されたリクエストを行うことができます。

GET https://secrets-api.appbrewery.com/filter?score=5&apiKey=generated-api-key

アプリに API キー認証を実装する方法は次のとおりです:

// API key route
app.get("/apiKey", async (req, res) => {
  try {
    const result = await axios.get(API_URL + "/filter", {
      params: {
        score: 5,
        apiKey: myAPIKey,
      },
    });
    res.render("index.ejs", { content: JSON.stringify(result.data) });
  } catch (error) {
    res.status(404).send(error.message);
  }
});

3.トークンベースの認証 (OAuth)

トークンベースの認証は、他の方法よりも安全です。ユーザーは資格情報を使用してログインし、API プロバイダーはトークンを生成します。このトークンは、毎回ユーザー名とパスワードを渡す代わりに、後続のリクエストに使用されます。

この方法は OAuth で一般的に使用され、トークンは多くの場合、限られた期間のみ有効です。これは、別のアプリから Google カレンダーを使用する場合など、サードパーティ アプリがユーザーのデータを操作する必要がある場合に特に便利です。

トークンベースの認証を実装した方法

まず、登録してトークンを取得しました:

POST https://secrets-api.appbrewery.com/get-auth-token
{
  "username": "jackbauer",
  "password": "IAmTheBest"
}

トークンを受け取ったら、それを今後のリクエストに使用しました。

GET https://secrets-api.appbrewery.com/secrets/1

ベアラー トークンを使用してアプリにトークンベースの認証を実装する方法は次のとおりです:

// Bearer token route
const config = {
  headers: { Authorization: `Bearer ${myBearerToken}` },
};

app.get("/bearerToken", async (req, res) => {
  try {
    const result = await axios.get(API_URL + "/secrets/2", config);
    res.render("index.ejs", { content: JSON.stringify(result.data) });
  } catch (error) {
    res.status(404).send(error.message);
  }
});

すべてをまとめる

学習のまとめとして、4 種類の API リクエスト (認証なし、基本認証、API キー、トークンベース) をすべて実装する小さな Web アプリを作成しました。このアプリには 4 つのボタンがあり、それぞれが異なる種類のリクエストをトリガーします。

アプリ内でルートとボタンを設定する方法の概要を以下に示します:

// No authentication route
app.get("/noAuth", async (req, res) => {
  try {
    const result = await axios.get(API_URL + "/random");
    res.render("index.ejs", { content: JSON.stringify(result.data) });
  } catch (error) {
    res.status(404).send(error.message);
  }
});

アプリの完全なコードは、GitHub リポジトリにあります。

このアプリは、API 認証の重要性と、Node.js 環境でリクエストを処理するために Axios を使用して API 認証を実装する方法を示します。


私が直面した課題

このプロジェクトに取り組んでいる間、Axios 経由でリクエストを送信する際、特に基本認証で問題が発生しました。いくつか調べた結果、私の混乱を解消する役立つ StackOverflow の投稿を見つけました。同様の問題に遭遇した場合は、必ずチェックしてください!


結論

API を悪用から保護し、不正アクセスを制限するには、API 認証を理解することが不可欠です。基本認証、API キー、トークンベースの認証を実装することで、API を保護し、責任を持って使用されるようにすることができます。

重要なポイント:

  • 基本認証はシンプルですが、あまり安全ではありません。
  • API キー認証 ではリクエストの追跡が可能ですが、簡単に共有できます。
  • トークンベースの認証は最も安全で、OAuth システムでよく使用されます。

この投稿がさまざまな種類の API 認証の理解に役立つことを願っています。ご質問やフィードバックがございましたら、以下のコメント欄にお気軽にお寄せください。コーディングを楽しんでください! ?

以上がAPI 認証の初心者ガイド: 基本から実装までの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。