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

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

چیزی که یاد خواهید گرفت

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

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

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

هنگامی که یک برنامه از API شما درخواست می کند، برنامه باید یک کلید معتبر ارائه دهد. در زمان اجرا، سیاست Verify API Key بررسی می‌کند که کلید 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 Proxies در صفحه فرود کلیک کنید تا لیست پراکسی های API نمایش داده شود.

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

    تغییر به: /helloapikey

    Project Base Path بخشی از URL مورد استفاده برای درخواست به پروکسی API است.

    توجه : برای توصیه‌های Apigee در مورد نسخه‌سازی API، نسخه‌سازی در طراحی Web API: The Missing Link e-book را ببینید.

    API موجود

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

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

    توضیحات وارد کنید: hello world protected by API key
  7. روی Next کلیک کنید.
  8. در صفحه سیاست های مشترک ، برای امنیت: مجوز ، کلید API را انتخاب کنید و سپس روی Next کلیک کنید. با این کار دو خط مشی به پروکسی API شما اضافه می شود.
  9. در صفحه Virtual Hosts ، گزینه default and safe را انتخاب کنید و سپس روی Next کلیک کنید. انتخاب پیش فرض به شما امکان می دهد API خود را با http:// تماس بگیرید. انتخاب امن ، به شما امکان می دهد با https:// ، API خود را فراخوانی کنید.
  10. در صفحه خلاصه ، مطمئن شوید که محیط استقرار آزمایشی انتخاب شده است و سپس روی Create and Deploy کلیک کنید.
  11. تأییدیه ای خواهید دید که پروکسی API جدید و یک محصول API با موفقیت ایجاد شده است و پروکسی API در محیط آزمایشی شما مستقر شده است.
  12. روی ویرایش پراکسی کلیک کنید تا صفحه نمای کلی برای پراکسی API نمایش داده شود.

سیاست ها را مشاهده کنید

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

    <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

    نام سازمان Edge خود را جایگزین ORG_NAME کنید.

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

    {"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 Product کلیک کنید.
  3. جزئیات محصول را برای محصول API خود وارد کنید.

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

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

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

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

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

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

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

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

ثبت یک اپلیکیشن

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

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

    ص
    در این زمینه این کار را انجام دهید
    نام و نام نمایشی وارد کنید: keyser_app
    شرکت / توسعه دهنده انتخاب کنید: Developer
    توسعه دهنده انتخاب کنید: Keyser Soze (keyser@example.com)
    URL و یادداشت های پاسخ به تماس خالی بگذارید
  4. در قسمت Credentials از منوی Expiry گزینه Never را انتخاب کنید. اعتبار این برنامه هرگز منقضی نمی شود.
  5. در بخش محصولات ، روی افزودن محصول کلیک کنید.
  6. helloworld_apikey-Product را انتخاب کنید.
  7. روی افزودن کلیک کنید.
  8. روی Create در بالا و سمت راست قسمت App Details کلیک کنید تا کارتان ذخیره شود.

کلید API را دریافت کنید

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

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

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

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

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

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. فراخوانی API زیر را با استفاده از cURL انجام دهید تا کلید API را به عنوان هدر به نام x-apikey ارسال کنید. فراموش نکنید که نام سازمان خود را جایگزین کنید.

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

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

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

موضوعات مرتبط

در اینجا برخی از موضوعاتی وجود دارد که مستقیماً به این آموزش مربوط می شود:

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

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