簡介
本文檔介紹配置API訪問並將其用於從Secure Access獲取資源資訊的步驟。
必要條件
思科建議您瞭解以下主題:
- Python 3.x
- REST API
- Cisco Secure Access
需求
在繼續操作之前,必須滿足以下要求:
- 具有完整管理員使用者角色的Cisco Secure Access使用者帳戶。
- 思科安全雲單點登入(SCSO)帳戶用於登入安全訪問。
採用元件
本文中的資訊係根據以下軟體和硬體版本:
本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除(預設)的組態來啟動。如果您的網路運作中,請確保您瞭解任何指令可能造成的影響。
設定
安全訪問API提供標準REST介面並支援OAuth 2.0客戶端憑證流。若要開始使用,請登入Secure Access並建立您的Secure Access API金鑰。然後,使用您的API憑證生成API訪問令牌。
注意:API金鑰、密碼、密碼和令牌允許訪問您的私有資料。您絕不能與其他使用者或組織共用您的認證。
在執行本文中提到的指令碼之前,請從Secure Access Dashboard配置API金鑰。
建立API金鑰
使用以下步驟建立API金鑰和金鑰。使用URL登入安全訪問:安全訪問
- 從左側側邊欄中選擇選項
Admin。
- 在
Admin下選擇選項 API Keys:
安全訪問控制台管理員- API金鑰
3. 在右上角,按一下+ 按鈕增加新的API金鑰:
安全訪問-增加API金鑰
4. 提供 API Key Name, Description(可選),並根據您的要求選擇Key scope和Expiry date 。完成後,按一下 Create按鈕:
安全存取- API金鑰詳細資料
5. 複製API Key和 Key Secret ,然後按一下ACCEPT AND CLOSE:
安全存取- API金鑰和密碼
注意:複製API機密的機會只有一個。Secure Access不會儲存您的API密碼,您無法在最初建立後檢索它。
Python代碼
考慮到生成的令牌的有效時間為3600秒(1小時),編寫此代碼的方式有多種。您可以建立兩個單獨的指令碼,第一個指令碼可用於生成持有者令牌,第二個指令碼可用於對感興趣的資源進行API呼叫(獲取/更新或刪除),或者編寫一個指令碼來同時執行這兩個操作,同時確保如果已經生成持有者令牌,則代碼中會保留一個條件,即在每次執行指令碼時不會生成新的持有者令牌。
為了使其在python中工作,請確保安裝以下庫:
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:
然後,可以在此指令碼中使用Script 1中的access_token命令進行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輸出-網路隧道組
您還可以透過安全訪問開發人員使用手冊獲取有關策略、漫遊電腦、報告等的資訊。
疑難排解
安全訪問API終端使用HTTP響應代碼表示API請求成功或失敗。一般而言,2xx範圍內的代碼表示成功,4xx範圍內的代碼表示由所提供資訊導致的錯誤,而5xx範圍內的代碼表示伺服器錯誤。解決問題的方法取決於收到的響應代碼:
REST API -響應代碼1
REST API -響應代碼2
相關資訊