Rumah >hujung hadapan web >tutorial js >Panduan Pemula untuk Pengesahan API: Dari Asas kepada Pelaksanaan
Au cours des derniers jours, j'ai découvert l'authentification API . Après avoir expérimenté plusieurs méthodes et créé un petit projet, j’ai pensé que ce serait une bonne idée de partager mes apprentissages. Dans cet article, nous aborderons :
Commençons !
Dans la plupart des cas, nous ne souhaitons pas que notre API privée soit ouverte à n’importe qui. L'authentification permet de garantir que seuls les utilisateurs ou clients autorisés peuvent accéder à notre API. De plus, l'authentification permet de limiter le nombre de demandes, de suivre les utilisateurs et de protéger les données sensibles.
Mais qu’en est-il des API qui ne nécessitent pas d’authentification ? Vous pouvez toujours les sécuriser dans une certaine mesure en utilisant la limitation de débit, qui limite le nombre de requêtes qu'un utilisateur ou une IP peut effectuer dans un certain laps de temps. Ceci est utile lorsque vous diffusez des données statiques ou que vous n’avez pas besoin d’une protection renforcée.
Plongeons-nous maintenant dans les trois principaux types d'authentification API : Authentification de base, Autorisation par clé API et Authentification basée sur des jetons.
L'authentification de base consiste à envoyer un nom d'utilisateur et un mot de passe encodés en Base64 à chaque requête API. Bien que simple à mettre en œuvre, ce n’est pas très sécurisé puisque les informations d’identification sont transmises à chaque demande.
J'ai utilisé l'API Secrets pour cet exemple. Tout d'abord, j'ai enregistré un utilisateur en envoyant une requête POST avec les données suivantes :
{ "username": "arka", "password": "221855" }
Après m'être inscrit avec succès, je me suis connecté en utilisant Postman pour envoyer le nom d'utilisateur et le mot de passe dans les en-têtes de la demande :
GET https://secrets-api.appbrewery.com/all?page=1
Cela renvoie une liste de secrets stockés par l'utilisateur.
Voici comment j'ai implémenté l'authentification de base dans mon application Node.js à l'aide de Axios :
// 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); } });
L'autorisation de clé API permet d'accéder à une API en transmettant une clé (générée pour l'utilisateur) à chaque requête. Cette clé est utilisée pour suivre le client qui fait la demande et peut souvent être liée à la limitation du débit ou à la facturation.
Une distinction clé à retenir :
Avec l'autorisation de clé API, vous obtenez généralement une clé API comme celle-ci :
GET https://secrets-api.appbrewery.com/generate-api-key
Après avoir reçu la clé API, vous pouvez l'utiliser pour effectuer des demandes autorisées :
GET https://secrets-api.appbrewery.com/filter?score=5&apiKey=generated-api-key
Voici comment j'ai implémenté l'autorisation de clé API dans mon application :
// 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); } });
L'authentification basée sur les jetons est plus sécurisée que les autres méthodes. L'utilisateur se connecte à l'aide de ses informations d'identification et le fournisseur d'API génère un jeton. Ce jeton est utilisé pour les demandes ultérieures au lieu de transmettre le nom d'utilisateur et le mot de passe à chaque fois.
Cette méthode est couramment utilisée dans OAuth et le jeton est souvent valide pour une durée limitée. Ceci est particulièrement utile lorsque des applications tierces doivent interagir avec les données d'un utilisateur, comme l'utilisation de Google Agenda à partir d'une autre application.
Tout d'abord, je me suis inscrit et j'ai obtenu le token :
POST https://secrets-api.appbrewery.com/get-auth-token { "username": "jackbauer", "password": "IAmTheBest" }
Une fois le token reçu, je l'ai utilisé pour de futures demandes :
GET https://secrets-api.appbrewery.com/secrets/1
Voici comment j'ai implémenté l'authentification basée sur des jetons dans mon application à l'aide de Bearer Tokens :
// 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); } });
Pour conclure mes apprentissages, j'ai créé une petite application Web qui implémente les quatre types de requêtes API (pas d'authentification, authentification de base, clé API et basée sur des jetons). L'application comporte quatre boutons, chacun déclenchant un type de demande différent.
Voici un aperçu de la façon dont j'ai configuré les itinéraires et les boutons dans l'application :
// 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); } });
Vous pouvez trouver le code complet de l'application ici : GitHub Repo.
Apl ini menunjukkan kepentingan pengesahan API dan cara ia boleh dilaksanakan menggunakan Axios untuk mengendalikan permintaan dalam persekitaran Node.js.
Semasa mengerjakan projek ini, saya menghadapi masalah dengan menghantar permintaan melalui Axios, terutamanya dengan pengesahan asas. Selepas beberapa penggalian, saya menjumpai siaran StackOverflow yang membantu yang menghilangkan kekeliruan saya. Jika anda menghadapi masalah yang sama, pastikan anda menyemaknya!
Memahami pengesahan API adalah penting untuk melindungi API anda daripada penyalahgunaan dan mengehadkan akses tanpa kebenaran. Dengan melaksanakan pengesahan asas, kunci API dan kebenaran berasaskan token, anda boleh melindungi API anda dan memastikan ia digunakan secara bertanggungjawab.
Pengambilan Utama:
Saya harap siaran ini membantu anda memahami pelbagai jenis pengesahan API! Jangan ragu untuk meninggalkan sebarang soalan atau maklum balas dalam ulasan di bawah. Selamat mengekod! ?
Atas ialah kandungan terperinci Panduan Pemula untuk Pengesahan API: Dari Asas kepada Pelaksanaan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!