با نیاز به کلیدهای API، یک API را ایمن کنید

شما در حال مشاهده مستندات Apigee Edge هستید.
به مستندات Apigee X مراجعه کنید .
اطلاعات

آنچه یاد خواهید گرفت

از طریق این آموزش، شما یاد خواهید گرفت که:

  • یک پروکسی API ایجاد کنید که به یک کلید API نیاز دارد.
  • یک محصول API اضافه کنید.
  • یک توسعه‌دهنده اضافه کنید و یک برنامه ثبت کنید.
  • API خود را با یک کلید API فراخوانی کنید.

محافظت از API شما در برابر دسترسی غیرمجاز بسیار مهم است. یکی از راه‌های انجام این کار، استفاده از کلیدهای API (که به آنها کلیدهای عمومی ، کلیدهای مصرف‌کننده یا کلیدهای برنامه نیز گفته می‌شود) است.

وقتی یک برنامه درخواستی به API شما ارسال می‌کند، برنامه باید یک کلید معتبر ارائه دهد. در زمان اجرا، سیاست تأیید کلید API بررسی می‌کند که کلید API ارائه شده:

  • معتبر است
  • لغو نشده است
  • با کلید API مربوط به محصول API که منابع درخواستی را در معرض نمایش قرار می‌دهد، مطابقت دارد.

اگر کلید معتبر باشد، درخواست مجاز است. اگر کلید نامعتبر باشد، درخواست منجر به عدم موفقیت در مجوزدهی می‌شود.

در این آموزش، شما یک پروکسی API ایجاد خواهید کرد که برای دسترسی به آن به یک کلید API معتبر نیاز دارید.

آنچه نیاز دارید

  • یک حساب کاربری Apigee Edge. اگر هنوز حساب کاربری ندارید، می‌توانید با استفاده از دستورالعمل‌های موجود در بخش «ایجاد حساب کاربری Apigee Edge» ثبت‌نام کنید.
  • یک مرورگر وب برای برقراری تماس API.
  • (برای بخش اعتبار اضافی، الزامی نیست) cURL روی دستگاه شما نصب شده باشد تا فراخوانی‌های API را از خط فرمان انجام دهد.

ایجاد پروکسی API

درباره «ماکت‌تارگت»

سرویس mocktarget در Apigee میزبانی می‌شود و داده‌های ساده‌ای را برمی‌گرداند. به هیچ کلید API یا توکن دسترسی نیاز ندارد. در واقع، می‌توانید از طریق یک مرورگر وب به آن دسترسی داشته باشید. با کلیک روی لینک زیر آن را امتحان کنید:

http://mocktarget.apigee.net

تابع هدف عبارت Hello, Guest! را برمی‌گرداند. از منبع ‎/help برای دریافت صفحه راهنما از سایر منابع API موجود استفاده کنید.

  1. به آدرس https://apigee.com/edge بروید و وارد سیستم شوید.
  2. با کلیک روی نام کاربری خود در بالای نوار ناوبری کناری، به سازمان مورد نظر خود بروید تا منوی پروفایل کاربر نمایش داده شود و سپس سازمان مورد نظر را از لیست انتخاب کنید.

    در منوی پروفایل کاربر، org را انتخاب کنید.
  3. برای نمایش لیست پروکسی‌های API، در صفحه فرود روی API Proxies کلیک کنید.

    منوی APIهای لبه
  4. روی + پروکسی کلیک کنید.
    دکمه ایجاد پروکسی
  5. در صفحه ایجاد پروکسی ، پروکسی معکوس (رایج‌ترین) را انتخاب کنید.
  6. در صفحه جزئیات پروکسی ، پروکسی را به صورت زیر پیکربندی کنید:
    در این زمینه این کار را انجام دهید
    نام پروکسی وارد کنید: helloworld_apikey
    مسیر پایه پروژه

    تغییر به: /helloapikey

    مسیر پایه پروژه بخشی از URL است که برای ارسال درخواست به پروکسی API استفاده می‌شود.

    توجه : برای توصیه‌های Apigee در مورد نسخه‌بندی API، به کتاب الکترونیکی « نسخه‌بندی در طراحی API وب: حلقه گمشده » مراجعه کنید.

    API موجود

    وارد شوید: http://mocktarget.apigee.net

    این، URL هدفی را تعریف می‌کند که Apigee Edge در هنگام درخواست به پروکسی API فراخوانی می‌کند.

    توضیحات وارد کنید: hello world protected by API key
  7. روی بعدی کلیک کنید.
  8. در صفحه Common Policies ، برای Security: Authorization ، گزینه API Key را انتخاب کنید و سپس روی Next کلیک کنید. این کار دو Policy به API proxy شما اضافه می‌کند.
  9. در صفحه میزبان‌های مجازی ، پیش‌فرض و امن را انتخاب کنید و سپس روی بعدی کلیک کنید. انتخاب پیش‌فرض به شما امکان می‌دهد API خود را با http:// فراخوانی کنید. انتخاب امن ، به شما امکان می‌دهد API خود را با https:// فراخوانی کنید.
  10. در صفحه خلاصه ، مطمئن شوید که محیط استقرار آزمایشی انتخاب شده است، و سپس روی ایجاد و استقرار کلیک کنید.
  11. شما تأییدیه‌ای مبنی بر اینکه پروکسی API جدید شما و یک محصول API با موفقیت ایجاد شده‌اند و پروکسی API در محیط آزمایشی شما مستقر شده است، مشاهده خواهید کرد.
  12. برای نمایش صفحه مرور کلی برای پروکسی API ، روی ویرایش پروکسی کلیک کنید.

مشاهده سیاست‌ها

  1. در ویرایشگر پروکسی API، روی برگه «توسعه» کلیک کنید. خواهید دید که دو خط‌مشی به جریان درخواست پروکسی API اضافه شده است:
    • تأیید کلید API: فراخوانی API را بررسی می‌کند تا مطمئن شود که یک کلید API معتبر وجود دارد (به عنوان پارامتر پرس‌وجو ارسال می‌شود).
    • حذف پارامتر کوئری apikey: یک سیاست AssignMessage که کلید API را پس از بررسی حذف می‌کند، به طوری که بی‌جهت دست به دست نشود و در معرض دید قرار نگیرد.
  2. روی آیکون سیاست تأیید کلید API در نمای جریان کلیک کنید و به پیکربندی XML سیاست در نمای کد پایین نگاه کنید. عنصر <APIKey> به سیاست می‌گوید که هنگام برقراری تماس، کجا باید کلید API را جستجو کند. به طور پیش‌فرض، کلید به عنوان یک پارامتر پرس‌وجو به نام apikey در درخواست HTTP جستجو می‌شود:

    <APIKey ref="request.queryparam.apikey" />

    نام apikey دلخواه است و می‌تواند هر ویژگی‌ای باشد که حاوی کلید API باشد.

سعی کنید API را فراخوانی کنید

در این مرحله، شما یک فراخوانی API موفق را مستقیماً به سرویس هدف انجام می‌دهید، سپس یک فراخوانی ناموفق به پروکسی API انجام می‌دهید تا ببینید که چگونه توسط سیاست‌ها محافظت می‌شود.

  1. موفقیت

    در یک مرورگر وب، به آدرس زیر بروید. این سرویس هدفی است که پروکسی API برای ارسال درخواست به آن پیکربندی شده است، اما فعلاً مستقیماً به آن مراجعه خواهید کرد:

    http://mocktarget.apigee.net

    شما باید این پاسخ موفقیت‌آمیز را دریافت کنید: Hello, Guest!

  2. شکست

    حالا سعی کنید پروکسی API خود را فراخوانی کنید:

    http://ORG_NAME-test.apigee.net/helloapikey

    به جای ORG_NAME ، نام سازمان Edge خود را قرار دهید.

    بدون سیاست تأیید کلید API، این فراخوانی همان پاسخ فراخوانی قبلی را به شما می‌دهد. اما در این حالت، باید پاسخ خطای زیر را دریافت کنید:

    {"fault":{"faultstring":"Failed to resolve API Key variable request.queryparam.apikey","detail":{"errorcode":"steps.oauth.v2.FailedToResolveAPIKey"}}}

    که به طور صحیح یعنی شما یک کلید API معتبر (به عنوان پارامتر پرس و جو) ارسال نکرده‌اید.

در مراحل بعدی، یک محصول API اضافه خواهید کرد.

افزودن محصول API

برای افزودن یک محصول API با استفاده از رابط کاربری Apigee:

  1. انتشار > محصولات API را انتخاب کنید.
  2. روی +محصول API کلیک کنید.
  3. جزئیات محصول را برای محصول API خود وارد کنید.

    میدان توضیحات
    نام نام داخلی محصول API. کاراکترهای خاص را در نام مشخص نکنید.
    توجه: پس از ایجاد محصول API، نمی‌توانید نام را ویرایش کنید. برای مثال، helloworld_apikey-Product .
    نام نمایشی نام نمایشی برای محصول API. نام نمایشی در رابط کاربری استفاده می‌شود و می‌توانید آن را در هر زمانی ویرایش کنید. در صورت مشخص نکردن، از مقدار Name استفاده خواهد شد. این فیلد به طور خودکار با استفاده از مقدار Name پر می‌شود؛ می‌توانید محتوای آن را ویرایش یا حذف کنید. نام نمایشی می‌تواند شامل کاراکترهای ویژه باشد. به عنوان مثال، helloworld_apikey-Product .
    توضیحات شرح محصول API. به عنوان مثال، Test product for tutorial .
    محیط زیست محیط‌هایی که محصول API اجازه دسترسی به آنها را می‌دهد. برای مثال، test یا prod .
    دسترسی عمومی را انتخاب کنید.
    درخواست‌های دسترسی را به‌طور خودکار تأیید کنید تأیید خودکار درخواست‌های کلیدی برای این محصول API را از هر برنامه‌ای فعال کنید.
    سهمیه این آموزش را نادیده بگیرید.
    محدوده‌های مجاز OAuth این آموزش را نادیده بگیرید.
  4. در بخش منابع API، پروکسی API که ایجاد کرده‌اید را انتخاب کنید. برای مثال، helloworld_apikey .
  5. روی افزودن کلیک کنید.
  6. در بخش مسیرها ، مسیر "/" را اضافه کنید.
  7. روی افزودن کلیک کنید.
  8. روی ذخیره کلیک کنید.

در مراحل بعدی، کلید API مورد نیاز را دریافت خواهید کرد.

یک توسعه‌دهنده و برنامه به سازمان خود اضافه کنید

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

یک توسعه‌دهنده ایجاد کنید

برای ایجاد یک توسعه‌دهنده:

  1. از منو، گزینه انتشار > توسعه‌دهندگان را انتخاب کنید.
  2. روی + توسعه‌دهنده کلیک کنید.
  3. در پنجره New Developer موارد زیر را وارد کنید:

    در این زمینه وارد شوید
    نام Keyser
    نام خانوادگی Soze
    نام کاربری keyser
    ایمیل keyser@example.com
  4. روی ایجاد کلیک کنید.

ثبت یک برنامه

برای ثبت یک برنامه توسعه‌دهنده:

  1. انتشار > برنامه‌ها را انتخاب کنید.
  2. روی + برنامه کلیک کنید.
  3. در پنجره New App موارد زیر را وارد کنید:

    ص
    در این زمینه این کار را انجام دهید
    نام و نام نمایشی وارد کنید: keyser_app
    شرکت / توسعه‌دهنده انتخاب کنید: Developer
    توسعه‌دهنده انتخاب کنید: Keyser Soze (keyser@example.com)
    آدرس اینترنتی و یادداشت‌های مربوط به فراخوانی مجدد خالی بگذارید
  4. در بخش اعتبارنامه‌ها ، از منوی انقضا ، گزینه‌ی «هرگز» را انتخاب کنید. اعتبارنامه‌های این برنامه هرگز منقضی نمی‌شوند.
  5. در قسمت محصولات ، روی افزودن محصول کلیک کنید.
  6. helloworld_apikey-Product را انتخاب کنید.
  7. روی افزودن کلیک کنید.
  8. برای ذخیره کار خود، روی «ایجاد» در بالا و سمت راست بخش «جزئیات برنامه» کلیک کنید.

دریافت کلید API

برای دریافت کلید API:

  1. در صفحه برنامه‌ها ( Publish > Apps )، روی keyser_app کلیک کنید.
  2. در صفحه keyser_app ، در بخش Credentials روی Show در کنار Key کلیک کنید. در بخش Product ، توجه داشته باشید که کلید با helloworld_apikey مرتبط است.

    .
  3. کلید را انتخاب و کپی کنید. در مرحله بعدی از آن استفاده خواهید کرد.

فراخوانی API با یک کلید

اکنون که یک کلید API دارید، می‌توانید از آن برای فراخوانی پروکسی API استفاده کنید. عبارت زیر را در مرورگر وب خود وارد کنید. نام سازمان Edge خود را به جای ORG_NAME و کلید API را به جای API_KEY در زیر قرار دهید. مطمئن شوید که هیچ فاصله اضافی در پارامتر پرس و جو وجود ندارد.

http://ORG_NAME-test.apigee.net/helloapikey?apikey=API_KEY

حالا وقتی پروکسی API را فراخوانی می‌کنید، باید این پاسخ را دریافت کنید: Hello, Guest!

تبریک! شما یک پروکسی API ایجاد کرده‌اید و با الزام به درج یک کلید API معتبر در فراخوانی، از آن محافظت کرده‌اید.

توجه داشته باشید که به طور کلی، ارسال کلید API به عنوان پارامتر کوئری روش خوبی نیست. در عوض، باید ارسال آن را در هدر HTTP در نظر بگیرید.

بهترین روش: ارسال کلید در هدر HTTP

در این مرحله، پروکسی را طوری تغییر می‌دهید که به دنبال کلید API در هدری به نام x-apikey بگردد.

  1. پروکسی API را ویرایش کنید. Develop > API Proxies > helloworld_apikey را انتخاب کنید و به نمای Develop بروید.
  2. سیاست Verify API Key را انتخاب کنید و XML سیاست را طوری تغییر دهید که به سیاست بگوید به جای queryparam در header جستجو کند:

    <APIKey ref="request.header.x-apikey"/>
  3. پروکسی API را برای اعمال تغییر ذخیره کنید .
  4. با استفاده از cURL، فراخوانی API زیر را انجام دهید تا کلید API به عنوان هدری به نام x-apikey ارسال شود. فراموش نکنید که نام سازمان خود را جایگزین کنید.

    curl -v -H "x-apikey: API_KEY" http://ORG_NAME-test.apigee.net/helloapikey
    

توجه داشته باشید که برای تکمیل کامل تغییر، باید سیاست AssignMessage را طوری پیکربندی کنید که به جای پارامتر query، هدر را حذف کند. برای مثال:

<Remove>
<Headers>
    <Header name="x-apikey"/>
</Headers>
</Remove>

مباحث مرتبط

در اینجا به برخی از مباحثی که مستقیماً به این آموزش مربوط می‌شوند، اشاره می‌کنیم:

اگر کمی عمیق‌تر شویم، محافظت از APIها با کلیدهای API تنها بخشی از داستان است. اغلب اوقات، محافظت از API شامل امنیت اضافی مانند OAuth می‌شود.

OAuth یک پروتکل باز است که به طور خلاصه، اعتبارنامه‌ها (مانند نام کاربری و رمز عبور) را با توکن‌های دسترسی مبادله می‌کند. توکن‌های دسترسی رشته‌های طولانی و تصادفی هستند که می‌توانند در یک خط لوله پیام، حتی از برنامه‌ای به برنامه دیگر، بدون به خطر انداختن اعتبارنامه‌های اصلی، منتقل شوند. توکن‌های دسترسی اغلب عمر کوتاهی دارند، بنابراین توکن‌های جدید همیشه در حال تولید هستند.