المقدمة
يصف هذا المستند الخطوات لتكوين وصول API واستخدامه لجلب معلومات الموارد من "الوصول الآمن".
المتطلبات الأساسية
توصي Cisco بأن تكون لديك معرفة بالمواضيع التالية:
- بايثون 3.x
- واجهة برمجة تطبيقات REST
- Cisco Secure Access
المتطلبات
ويجب استيفاء هذه المتطلبات قبل المضي قدما:
- حساب مستخدم Cisco Secure Access مع دور AdminUser الكامل.
- حساب تسجيل الدخول الأحادي (SCSO) لسحابة أمان Cisco لتسجيل الدخول لتأمين الوصول.
المكونات المستخدمة
تستند المعلومات الواردة في هذا المستند إلى إصدارات البرامج والمكونات المادية التالية:
- لوحة معلومات الوصول الآمن
- بايثون
تم إنشاء المعلومات الواردة في هذا المستند من الأجهزة الموجودة في بيئة معملية خاصة. بدأت جميع الأجهزة المُستخدمة في هذا المستند بتكوين ممسوح (افتراضي). إذا كانت شبكتك قيد التشغيل، فتأكد من فهمك للتأثير المحتمل لأي أمر.
التكوين
توفر واجهة برمجة تطبيقات Secure Access واجهة REST قياسية وتدعم تدفق بيانات اعتماد عميل OAuth 2.0. لبدء الاستخدام، قم بتسجيل الدخول إلى Secure Access وقم بإنشاء مفاتيح واجهة برمجة تطبيقات Secure Access. ثم، أستخدم بيانات اعتماد واجهة برمجة التطبيقات الخاصة بك لإنشاء رمز مميز للوصول إلى API.
ملاحظة: تسمح مفاتيح واجهة برمجة التطبيقات وكلمات المرور والأسرار والعلامات المميزة بالوصول إلى بياناتك الخاصة. يجب عدم مشاركة بيانات الاعتماد الخاصة بك مع مستخدم أو مؤسسة أخرى.
قم بتكوين مفتاح API من لوحة معلومات الوصول الآمن قبل تنفيذ البرامج النصية المذكورة في هذه المقالة.
إنشاء مفتاح API
قم بإنشاء مفتاح API وسر باستخدام هذه الخطوات. تسجيل الدخول لتأمين الوصول باستخدام عنوان URL: الوصول الآمن
- من الشريط الجانبي الأيسر، حدد الخيار
Admin.
- تحت
Admin تحديد الخيار API Keys:
مسؤول لوحة معلومات الوصول الآمن - مفاتيح API
3. في الركن العلوي الأيمن، انقر فوق + الزر لإضافة مفتاح واجهة برمجة تطبيقات جديد:
الوصول الآمن - إضافة مفتاح واجهة برمجة التطبيقات
4. قم بتوفير API Key Name, Description(إختياري)، ثم حدد Key scope و Expiry date حسب متطلباتك. بمجرد الانتهاء، انقر على الزر Create:
الوصول الآمن - تفاصيل مفتاح واجهة برمجة التطبيقات
5. انسخ API Keyو Key Secret ثم انقر فوق ACCEPT AND CLOSE:
الوصول الآمن - مفتاح API والسر
ملاحظة: هناك فرصة واحدة فقط لنسخ سر واجهة برمجة التطبيقات (API) الخاص بك. لا يقوم الوصول الآمن بحفظ سر واجهة برمجة التطبيقات (API) ولا يمكنك إسترداده بعد إنشائه الأولي.
كود بايثون
هناك طرق متعددة لكتابة هذا الرمز نظرا لأن الرمز المميز الذي تم إنشاؤه صالح لمدة 3600 ثانية (1 ساعة). يمكنك إما إنشاء نصين نصيين منفصلين يمكن إستخدام البرنامج النصي الأول فيهما لإنشاء الرمز المميز للحامل ثم برنامج نصي ثان يمكن إستخدام رمز الحامل هذا فيه لإجراء إستدعاء API (إحضار/تحديث أو حذف) للمورد الذي تهتم به، أو كتابة برنامج نصي واحد لاتخاذ كلا الإجرائن أثناء التأكد من أنه إذا تم إنشاء الرمز المميز لحامله بالفعل، يتم الاحتفاظ بشرط في الرمز المميز لحامل جديد في كل مرة يتم فيها تنفيذ البرنامج النصي.
من أجل جعله يعمل في بايثون، يرجى التأكد من تثبيت هذه المكتبات:
pip install oauthlib pip install requests_oauthlib
البرنامج النصي 1:
تأكد من ذكر client_idو client_secretفي هذا النص:
import requests from oauthlib.oauth2 import BackendApplicationClient from oauthlib.oauth2 import TokenExpiredError from requests_oauthlib import OAuth2Session from requests.auth import HTTPBasicAuth token_url = 'https://api.sse.cisco.com/auth/v2/token' client_id = "XXXXXXXXXXXXXXXXXXXXXXXXXXXX" client_secret = "XXXXXXXXXXXXXXXXXXXXXXXXX" class SecureAccessAPI: def __init__(self, url, ident, secret): self.url = url self.ident = ident self.secret = secret self.token = None def GetToken(self): auth = HTTPBasicAuth(self.ident, self.secret) client = BackendApplicationClient(client_id=self.ident) oauth = OAuth2Session(client=client) self.token = oauth.fetch_token(token_url=self.url, auth=auth) return self.token # Get token api = SecureAccessAPI(token_url, client_id, client_secret) print("Token: " + str(api.GetToken()))
الناتج:
يجب أن تبدو مخرجات هذا النص التنفيذي بهذا الشكل:
Token: {'token_type': 'bearer', 'access_token': 'eyJhbGciOiJSUzI1NiIsImtpZCI6IjcyNmI5MGUzLWxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...', 'expires_in': 3600, 'expires_at': 1707767804.6489065}
access_tokenطويل جدا بآلاف الأحرف، وبالتالي، لإبقاء المخرجات قابلة للقراءة، تم تقصيرها فقط على هذا المثال.
البرنامج النصي 2:
يمكن بعد ذلك إستخدام access_token من Script 1 في هذا النص البرمجي لعمل مكالمات API. على سبيل المثال، أستخدم البرنامج النصي 2 لجلب المعلومات حول مجموعات نفق الشبكة باستخدام المورد/deployments/v2/networktunnelgroups:
import requests import pprint import json url = "https://api.sse.cisco.com/deployments/v2/networktunnelgroups" BT = "eyJhbGciOiJSUzI1NiIsImtpZCI6IjcyNmI5MGUzLWxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx...'" headers = { 'Authorization':f"Bearer {BT}" ,"Accept": "application/json" } response = requests.request('GET', url, headers=headers) json_object = json.loads(response.content) pprint.pprint(json_object)
الناتج:
يجب أن تبدو مخرجات هذا النص التنفيذي بهذا الشكل:
إخراج Python - مجموعات أنفاق الشبكة
كما يمكنك إحضار معلومات حول السياسات وأجهزة الكمبيوتر المتجولة والتقارير، وما إلى ذلك، باستخدام دليل مستخدم Secure Access Developer.
استكشاف الأخطاء وإصلاحها
تستخدم نقاط النهاية ل Secure Access API رموز إستجابة HTTP للإشارة إلى نجاح طلب API أو فشله. بشكل عام، تشير الرموز الموجودة في نطاق 2xx إلى النجاح، وتشير الرموز الموجودة في نطاق 4xx إلى خطأ نتج عن المعلومات المتوفرة، وتشير الرموز الموجودة في نطاق 5xx إلى أخطاء في الخادم. يعتمد النهج المتبع لحل هذه المسألة على رمز الاستجابة الذي يتم تلقيه:
REST API - رموز الاستجابة 1
REST API - رمز الاستجابة 2
معلومات ذات صلة