تنظیم اعتبار سنجی کلید API

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

شما می‌توانید با پیوست کردن یک سیاست از نوع Verify API Key، اعتبارسنجی کلید API را برای یک API تنظیم کنید. تنها تنظیم مورد نیاز برای سیاست Verify API Key، مکان مورد انتظار کلید API در درخواست کلاینت است. پروکسی API مکانی را که شما مشخص می‌کنید بررسی کرده و کلید API را استخراج می‌کند. اگر کلید API در مکان مورد انتظار وجود نداشته باشد، خطایی رخ می‌دهد و درخواست رد می‌شود. کلیدهای API می‌توانند در یک پارامتر پرس‌وجو، یک پارامتر فرم یا یک هدر HTTP قرار گیرند.

برای مثال، پیکربندی سیاست زیر، مکان کلید مورد انتظار را به عنوان یک پارامتر پرس‌وجو به نام apikey تعریف می‌کند. یک درخواست موفق باید کلید API را به عنوان یک پارامتر پرس‌وجو که به درخواست اضافه شده است، ارائه دهد، برای مثال، ?apikey=Y7yeiuhcbKJHD790 .

برای تأیید کلیدهای API، سیاست زیر را ایجاد کنید:

<VerifyAPIKey name="APIKeyValidation">
  <APIKey ref="request.queryparam.apikey"/>
</VerifyAPIKey>

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

مستندات جامع این نوع سیاست را می‌توان در مبحث مرجع سیاست، سیاست تأیید کلید API ، یافت.

پروکسی‌های API به طور خودکار تمام هدرهای HTTP و پارامترهای پرس‌وجو که در درخواست وجود دارند را از بین می‌برند. بنابراین، پس از تأیید کلید API، ایده خوبی است که آن را از پیام حذف کنید تا کلید API از طریق سیم به سرویس backend ارسال نشود. می‌توانید این کار را با استفاده از یک سیاست از نوع AssignMessage به شرح زیر انجام دهید:

<AssignMessage name="StripApiKey">
    <DisplayName>Remove Query Param</DisplayName>
    <Remove>
        <QueryParams>
            <QueryParam name="apikey"/>
        </QueryParams>
    </Remove>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <AssignTo createNew="false" transport="http" type="request"></AssignTo>
</AssignMessage>

پیوست سیاست

این سیاست‌ها باید به عنوان مراحل پردازش به یک جریان پروکسی API متصل شوند. با اعمال این سیاست به درخواست PreFlow، کلیدهای API در هر درخواستی که توسط پروکسی API از یک برنامه کلاینت دریافت می‌شود، تأیید می‌شوند. پس از تأیید، کلید API از درخواست خروجی حذف می‌شود.

سیاست‌ها را به ProxyEndpoint پروکسی API که قرار است محافظت شود، به صورت زیر پیوست کنید:

<ProxyEndpoint name="default">
  <PreFlow>
    <Request>
      <Step><Name>APIKeyValidation</Name></Step>
      <Step><Name>StripApiKey</Name></Step>
    </Request>
  </PreFlow>

پس از پیوست کردن پالیسی، پروکسی API را مستقر کنید.

ارسال درخواست با کلید API معتبر

به عنوان مدیر سازمان خود، می‌توانید کلید API هر برنامه‌ای را به شرح زیر بازیابی کنید:

$ curl https://api.enterprise.apigee.com/v1/o/{myorg}/developers/{developer_email}/apps/{app_name} -u email:password 

پروفایل برنامه‌ای که برای این فراخوانی برگردانده می‌شود، کلید مصرف‌کننده (کلید API) و رمز را ارائه می‌دهد. مقدار کلید مصرف‌کننده، مقداری است که شما برای کلید API در درخواست خود به API محافظت‌شده استفاده می‌کنید.

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

$ curl http://{org_name}-test.apigee.net/weather/forecastrss?w=12797282

پیام شکست نشان می‌دهد که این خط‌مشی، کلید API را بررسی کرده اما کلید معتبری پیدا نکرده است:

OAuth Failure : Could not resolve the app key with variable request.queryparam.apikey

وقتی کلید مصرف‌کننده برای برنامه به عنوان پارامتر پرس‌وجو درج شود، نتیجه مورد انتظار، احراز هویت موفقیت‌آمیز است:

$ curl http://{org_name}-test.apigee.net/weather/forecastrss?w=12797282&"apikey=PulSCqMnXGchW0pC0s5o9ngHVTWMeLqk"

نتیجه مورد انتظار، پاسخ موفقیت‌آمیز از سوی سرویس هواشناسی است.

تغییر مقدار کلید API در درخواست منجر به عدم موفقیت در احراز هویت می‌شود:

$ curl http://{org_name}-test.apigee.net/weather?forecastrss?w=12797282&"apikey=PulSCqMnXGchW0"

نتایج در:

OAuth Failure : Consumer Key is Invalid

به یاد داشته باشید، به عنوان مدیر سازمان خود، می‌توانید کلید مصرف‌کننده را برای هر برنامه ثبت شده در یک سازمان بازیابی کنید:

$ curl https://api.enterprise.apigee.com/v1/o/{myorg}/developers/{developer_email}/apps/{app_name} -u email:password