Postman’da avtorizatsiya: API kalitlar, Bearer va OAuth 2.0
Amaliyot3 daqInnovialabs tahririyati
Qisqacha
Avtorizatsiyani kolleksiya darajasida bir marta sozlang, so‘rovlar uni Inherit auth from parent orqali meros qilib oladi; tokenlarni muhit o‘zgaruvchilarida saqlang, pre-request skript bilan yangilang, maxfiy ma’lumotlarni esa umumiy ma’lumotlarda emas, lokal qiymatlarda yoki Vault’da saqlang.
Avtorizatsiya qayerda sozlanadi
Postman’dagi har bir so‘rov, papka va kolleksiyada Authorization yorlig‘i bor. Tanlangan avtorizatsiya turini Postman o‘zi kerakli sarlavha yoki so‘rov parametriga aylantiradi.
Asosiy qoida: avtorizatsiyani kolleksiya darajasida sozlang. Yangi so‘rovlarda sukut bo‘yicha Inherit auth from parent turadi — ular sozlamalarni papka yoki kolleksiyadan oladi. Token o‘zgarsa, uni har bir so‘rovda emas, bitta joyda yangilaysiz.
Agar muayyan so‘rovga avtorizatsiya kerak bo‘lmasa, masalan login endpoint’iga, unga No Auth tanlang.
API Key
Eng oddiy variant: servis shaxsiy kabinetda beradigan statik kalit.
- Key — API hujjatlaridagi sarlavha yoki parametr nomi, masalan
X-API-Key; - Value — kalitning o‘zi, yaxshisi o‘zgaruvchi orqali:
{{api_key}}; - Add to — Header yoki Query Params.
Sarlavhani afzal ko‘ring: URL’dagi kalit tarixga, serverlar va proksilar loglariga tushadi.
Bearer Token
API kirish tokenini, ko‘pincha logindan keyin, berganda ishlatiladi. Postman quyidagi sarlavhani qo‘shadi:
Authorization: Bearer <token>
Token maydoniga {{access_token}} o‘zgaruvchisini yozing. Tokenni avtomatik saqlash mumkin: login so‘rovining Scripts yorlig‘ida (post-response bo‘limi, eski versiyalarda Tests) quyidagini qo‘shing:
const data = pm.response.json();
pm.environment.set("access_token", data.access_token);
Endi logindan keyin kolleksiyadagi barcha so‘rovlar yangi tokenni oladi.
OAuth 2.0
OAuth 2.0 uchun Postman tokenni o‘zi olishi mumkin. Configure New Token bo‘limida Grant Typeni tanlang:
| Grant Type | Qachon ishlatiladi |
|---|---|
| Authorization Code (With PKCE) | Brauzer orqali foydalanuvchi nomidan kirish, tavsiya etilgan variant |
| Authorization Code | Xuddi shu, PKCE’siz, eski serverlar uchun |
| Client Credentials | Servis API’ga foydalanuvchisiz, o‘z nomidan murojaat qiladi |
| Password Credentials | Eskirgan variant, faqat server boshqasini qo‘llab-quvvatlamasa ishlating |
Asosiy maydonlar: Auth URL, Access Token URL, Client ID, Client Secret, Scope va Callback URL. Brauzer orqali oqimlar uchun Authorize using browserni yoqing va Postman ko‘rsatgan callback URL’ni provayder tomonidagi OAuth-ilova sozlamalariga qo‘shing.
Get New Access Tokenni bosing, tizimga kiring va Use Tokenni bosing. Postman’ning yangi versiyalarida server refresh token bersa, tokenni avtomatik yangilash imkoniyati bor. Bu sozlamani o‘z versiyangizda tekshiring.
Pre-request skript bilan tokenni avtomatik yangilash
Agar API qisqa muddatli tokenlar bersa va o‘rnatilgan yangilash bo‘lmasa, kolleksiya darajasida pre-request skript qo‘shing. U har bir so‘rovdan oldin bajariladi va yangi tokenni faqat eskisining muddati tugaganda oladi:
const expiresAt = Number(pm.environment.get("token_expires_at") || 0);
if (Date.now() > expiresAt) {
pm.sendRequest({
url: pm.environment.get("token_url"),
method: "POST",
header: { "Content-Type": "application/x-www-form-urlencoded" },
body: {
mode: "urlencoded",
urlencoded: [
{ key: "grant_type", value: "client_credentials" },
{ key: "client_id", value: pm.environment.get("client_id") },
{ key: "client_secret", value: pm.environment.get("client_secret") }
]
}
}, (err, res) => {
if (err) { console.error(err); return; }
const data = res.json();
pm.environment.set("access_token", data.access_token);
pm.environment.set("token_expires_at", Date.now() + (data.expires_in - 60) * 1000);
});
}
Kolleksiyada {{access_token}} qiymati bilan Bearer Token’ni tanlang. 60 soniyalik zaxira token so‘rov paytida eskirib qolmasligi uchun kerak. Agar provayder expires_in qaytarmasa, tokenni 401 javobi kelganda yangilang.
Maxfiy ma’lumotlarni qanday himoyalash
Umumiy workspace’ni barcha ishtirokchilar ko‘radi, shuning uchun:
- Maxfiy ma’lumotlarni so‘rovlarda emas, muhit o‘zgaruvchilarida saqlang. O‘zgaruvchining jamoa bilan sinxronlanadigan boshlang‘ich qiymati (initial) va kompyuteringizda qoladigan joriy qiymati (current) bor. Maxfiy ma’lumotni faqat current’ga yozing.
- O‘zgaruvchilarni secret deb belgilang — qiymat interfeysda yashiriladi.
- Postman Vault’dan foydalaning, agar u mavjud bo‘lsa: maxfiy ma’lumotlar lokal saqlanadi va
{{vault:nom}}ko‘rinishida qo‘yiladi. - Kolleksiya va muhitlarni haqiqiy tokenlar bilan eksport qilmang, ayniqsa repozitoriyga.
- Muhitlarni ajrating: dev, staging va production turli kalitlar bilan, production kalitlarini esa imkon qadar kam odamga bering.
- Agar kalit baribir ochiq joyga tushib qolsa, uni Postman’dan shunchaki o‘chirmang, provayderda bekor qiling.