OAuth 2.0 ir standarts, kas ļauj trešo pušu lietojumprogrammām droši piekļūt datiem no tīmekļa lietotnēm. Varat to izmantot, lai iegūtu datus, tostarp profila informāciju, grafikus utt. kas tiek mitināts citās tīmekļa lietotnēs, piemēram, Facebook, Google un GitHub. Pakalpojums to var izdarīt lietotāja vārdā, neatklājot viņa akreditācijas datus trešās puses lietojumprogrammai.
Uzziniet, kā ieviest OAuth Express lietotnē, izmantojot GitHub kā OAuth nodrošinātāju, veicot dažas darbības.
OAuth plūsma
Parastā OAuth plūsmā jūsu vietne nodrošina lietotājiem iespēju pieteikties, izmantojot savu trešās puses kontu no pakalpojumu sniedzēja, piemēram, GitHub vai Facebook. Lietotājs var sākt šo procesu, noklikšķinot uz attiecīgās OAuth pieteikšanās pogas.
Tādējādi viņi tiek novirzīti no jūsu lietojumprogrammas uz OAuth nodrošinātāja vietni un tiek parādīta piekrišanas veidlapa. Piekrišanas veidlapā ir visa informācija, kurai vēlaties piekļūt no lietotāja, kas varētu būt viņa e-pasti, attēli, grafiki utt.
Ja lietotājs autorizēs jūsu lietojumprogrammu, trešā puse to novirzīs atpakaļ uz jūsu lietojumprogrammu ar kodu. Pēc tam jūsu lietojumprogramma var apmainīt saņemto kodu pret piekļuves pilnvaru, ko tā var izmantot, lai piekļūtu pieejamajiem lietotāja datiem.
Šīs plūsmas ieviešana Express lietojumprogrammā ietver dažas darbības.
1. darbība: izstrādes vides iestatīšana
Vispirms izveidojiet tukšu projekta direktoriju un cd izveidotajā direktorijā.
Piemēram:
mkdir github-app
cd github-app
Pēc tam inicializējiet npm savā projektā, izpildot:
npm init -y
Šī komanda izveido a pack.json failu, kurā ir informācija par jūsu projektu, piemēram, nosaukums, versija utt.
Šajā apmācībā tiks izmantota ES6 moduļu sistēma. Iestatiet to, atverot savu pack.json failu un norādot "tips": "modulis" JSON objektā.
2. darbība: atkarību instalēšana
Lai serveris darbotos pareizi, jums būs jāinstalē dažas atkarības:
- ExpressJS: ExpressJS ir NodeJS ietvars, kas nodrošina spēcīgu funkciju kopumu tīmekļa un mobilajām lietojumprogrammām. Express izmantošana vienkāršos servera izveides procesu.
- Axios: Axios ir uz solījumu balstīts HTTP klients. Šī pakotne būs nepieciešama, lai veiktu POST pieprasījumu piekļuves pilnvarai GitHub.
- dotenv: dotenv ir pakotne, kas ielādē vides mainīgos no .env faila objektā process.env. Tas būs nepieciešams, lai paslēptu svarīgu informāciju par savu pieteikumu.
Instalējiet tos, palaižot:
npm uzstādīt izteikt axios dotenv
3. darbība: Express lietotnes izveide
Tev vajag izveidot pamata Express serveri lai apstrādātu un iesniegtu pieprasījumus OAuth nodrošinātājam.
Vispirms izveidojiet an index.js failu jūsu projekta saknes direktorijā, kurā ir:
// index.js
imports izteikt no "izteikt";
imports axios no "aksios";
imports * kā dotenv no "dotenv";
dotenv.config();konst lietotne = express();
konst ports = process.env. OSTA || 3000
app.listen (port, () => {
konsole.log(`Lietotne darbojas portā ${port}`);
});
Šis kods importē ātro bibliotēku, izveido ekspresinstanci un sāk klausīties trafiku ostā 3000.
4. darbība: maršruta apstrādātāju izveide
Lai apstrādātu OAuth plūsmu, jums būs jāizveido divi maršruta apstrādātāji. Pirmais novirza lietotāju uz GitHub un pieprasa autorizāciju. Otrais apstrādā novirzīšanu atpakaļ uz jūsu lietotni un veic piekļuves pilnvaras pieprasījumu, kad lietotājs autorizē jūsu lietojumprogrammu.
Pirmajam maršruta apstrādātājam ir jānovirza lietotājs uz https://github.com/login/oauth/authorize? parametrus.
Jums būs jānosūta GitHub OAuth vietrādim URL nepieciešamo parametru kopa, kas ietver:
- Klienta ID: tas attiecas uz ID, ko saņem jūsu OAuth lietojumprogramma, reģistrējoties vietnē GitHub.
- Darbības joma: tas attiecas uz virkni, kas norāda OAuth lietotnes piekļuves apjomu lietotāja informācijai. Pieejamo tvērumu sarakstu varat atrast šeit GitHub OAuth dokumentācija. Šeit jūs izmantosit “lasīt: lietotājs” tvērums, kas piešķir piekļuvi lietotāja profila datu lasīšanai.
Pievienojiet tālāk norādīto kodu savam index.js fails:
// index.js
app.get("/auth", (req, res) => {
// Saglabājiet parametrus objektā
konst parametri = {
darbības joma: "lasīt: lietotājs",
klienta_id: process.env.CLIENT_ID,
};
// Konvertējiet parametrus par URL kodētu virkni
konst urlEncodedParams = jauns URLSearchParams (params).toString();
res.redirect(` https://github.com/login/oauth/authorize?${urlEncodedParams}`);
});
Šis kods ievieš pirmo maršruta apstrādātāju. Tas saglabā nepieciešamos parametrus objektā, pārveidojot tos URL kodētā formātā, izmantojot URLSearchParams API. Pēc tam tas pievieno šos parametrus GitHub OAuth URL un novirza lietotāju uz GitHub piekrišanas lapu.
Pievienojiet tālāk norādīto kodu savam index.js fails otrajam maršruta apstrādātājam:
// index.js
app.get("/github-callback", (req, res) => {
konst {kods} = req.query;konst ķermenis = {
klienta_id: process.env.CLIENT_ID,
klienta_noslēpums: process.env.CLIENT_SECRET,
kods,
};ļaut pieejas atslēga;
const opcijas = { headers: { akceptēt: "lietojumprogramma/json" } };
axios
.post("https://github.com/login/oauth/access_token", korpuss, opcijas)
.then((atbilde) => response.data.access_token)
.hen((token) => {
accessToken = marķieris;
res.redirect(`/?token=${token}`);
})
.noķert((err) => res.status(500).json({ err: err.message }));
});
Otrais maršruta apstrādātājs izvilks kodu gadā atgriezās no GitHub req.query objektu. Pēc tam tas izveido POST pieprasīt, izmantojot Axios uz " https://github.com/login/oauth/access_token" ar kodu, klienta_id, un klienta_noslēpums.
The klienta_noslēpums ir privāta virkne, ko ģenerēsit, veidojot GitHub OAuth lietojumprogrammu. Kad pieejas atslēga ir veiksmīgi ielādēts, tas tiek saglabāts mainīgajā vēlākai lietošanai. Lietotājs beidzot tiek novirzīts uz jūsu lietojumprogrammu, izmantojot pieejas atslēga.
5. darbība. GitHub lietojumprogrammas izveide
Pēc tam jums būs jāizveido OAuth lietojumprogramma vietnē GitHub.
Vispirms piesakieties savā GitHub kontā un pēc tam dodieties uz Iestatījumi, ritiniet uz leju līdz Izstrādātāja iestatījumiun atlasiet OAuth lietotnes. Visbeidzot noklikšķiniet uz "Reģistrējiet jaunu pieteikumu.”
GitHub nodrošinās jums jaunu OAuth pieteikuma veidlapu, piemēram:
Aizpildiet nepieciešamos laukus ar vēlamo informāciju. "Mājas lapas URL" vajadzētu būt " http://localhost: 3000”. Jūsu "Autorizācijas atzvanīšanas URL" vajadzētu būt " http://localhost: 3000/github-atzvans”. Varat arī pēc izvēles iespējot ierīces plūsmu, ļaujot autorizēt lietotājus bez galvas lietotnei, piemēram, CLI rīks vai Git akreditācijas datu pārvaldnieks.
Ierīces plūsma ir publiskā beta versijā un var tikt mainīta.
Visbeidzot nospiediet pogu Reģistrēt pieteikumu pogu.
GitHub novirzīs jūs uz lapu ar jūsu klienta_id un iespēja ģenerēt savu klienta_noslēpums. Kopējiet savu klienta_id, ģenerējiet savu klienta_noslēpumsun arī nokopējiet to.
Izveidojiet .env failu un uzglabājiet klienta_id un klienta_noslēpums tajā iekšā. Piešķiriet šiem mainīgajiem attiecīgi nosaukumu CLIENT_ID un CLIENT_SECRET.
Jūsu OAuth plūsma tagad ir pabeigta, un tagad varat veikt pieprasījumus, izmantojot piekļuves pilnvaru, lai lasītu lietotāja datus ( darbības jomu jūs norādījāt iepriekš).
OAuth 2.0 nozīme
OAuth 2.0 izmantošana lietojumprogrammā ievērojami vienkāršo autentifikācijas plūsmas ieviešanu. Tas aizsargā jūsu klientu lietotāju datus, izmantojot drošligzdu slāņa (SSL) standartu, nodrošinot, ka tie paliek privāti.