هنگامی که دسترسی به API وب را برای کاربران باز می کنیم، باید مطمئن شویم که هر فراخوانی API احراز هویت شده است. این بدان معناست که کاربر باید همان چیزی باشد که ادعا می کند.

در این پست دو روش رایج را بررسی می کنیم:

1. احراز هویت مبتنی بر رمز

2. احراز هویت HMAC (کد احراز هویت پیام مبتنی بر هش- Hash-based Message Authentication Code).

نمودار زیر نحوه کار آنها را نشان می دهد.

secure web API access

secure web API access

آنچه خواهیم دید

مبتنی بر Token

مرحله 1 – کاربر رمز عبور خود را در کلاینت وارد می کند و مشتری رمز عبور را به سرور احراز هویت ارسال می کند.

مرحله 2 – سرور احراز هویت اعتبارنامه ها را تأیید می کند و یک توکن با زمان انقضا تولید می کند.

مراحل 3 و 4 – اکنون مشتری می تواند درخواست هایی برای دسترسی به منابع سرور با توکن موجود در هدر HTTP ارسال کند. این دسترسی تا زمانی که توکن منقضی شود معتبر است.

مبتنی بر HMAC

این مکانیسم با استفاده از یک تابع هش (SHA256 یا MD5) یک کد احراز هویت پیام (امضا) تولید می کند.

مراحل 1 و 2 – سرور دو کلید تولید می کند، یکی شناسه برنامه عمومی (کلید عمومی) و دیگری کلید API (کلید خصوصی).

مرحله 3 – اکنون یک امضای HMAC در سمت مشتری (HMAC A) ایجاد می کنیم. این امضا با مجموعه ای از ویژگی های فهرست شده در نمودار تولید می شود.

مرحله 4 – مشتری درخواست هایی برای دسترسی به منابع سرور با HMAC A در هدر HTTP ارسال می کند.

مرحله 5 – سرور درخواستی را دریافت می کند که حاوی داده های درخواست و هدر احراز هویت است. ویژگی های لازم را از درخواست استخراج می کند و از کلید API که در سمت سرور ذخیره شده است برای تولید یک امضا استفاده می کند (HMAC B.)

مراحل 6 و 7 – سرور HMAC A (تولید شده در سمت مشتری) و HMAC B (تولید شده در سمت سرور) را مقایسه می کند. اگر مطابقت داشته باشند، منبع درخواستی به مشتری بازگردانده می شود.