پرش به مطلب اصلی

احراز هویت با Header

نمونه‌ای برای مجاز یا مسدود کردن یک درخواست بر اساس یک کلید که از پیش به‌اشتراک گذاشته‌ شده است.

این نمونه برای جایگزینی WebCrypto API طراحی نشده است.

برای استفاده در محیط پروداکشن احتیاط کنید!

این کد یک نمونه است و برای محیط‌های عملیاتی و پروداکشن بدون محافظت در برابر حملات Timing مناسب نیست.

نمونه‌کد دارای یک کلید هدر عمومی و مقدار X-Custom-PSK و mypresharedkey است. برای محافظت بیش‌تر از منابع خود، قبل از ذخیره‌ی کد، کلید هدر و مقدار آن را تغییر دهید.


addEventListener("fetch", (event) => {
event.respondWith(handleRequest(event.request));
});


async function handleRequest(request) {
/**
* @param {string} PRESHARED_AUTH_HEADER_KEY Custom header to check for key
* @param {string} PRESHARED_AUTH_HEADER_VALUE Hard coded key value
*/
const PRESHARED_AUTH_HEADER_KEY = "X-Custom-PSK";
const PRESHARED_AUTH_HEADER_VALUE = "mypresharedkey";
const psk = request.headers.get(PRESHARED_AUTH_HEADER_KEY);

if (psk === PRESHARED_AUTH_HEADER_VALUE) {
// Correct preshared header key supplied. Fetch request from origin.
return fetch(req);
}

// Incorrect key supplied. Reject the request.
return new Response("Sorry, you have supplied an invalid key.", {
status: 403,
});
}