簡介
本文檔介紹配置API訪問並將其用於從Secure Access獲取資源資訊的步驟。
必要條件
思科建議您瞭解以下主題:
- Python 3.x
- REST API
- 思科安全存取
需求
在繼續操作之前,必須滿足以下要求:
- 具有Full Adminuser角色的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小時),有多種方法可以編寫此代碼。您可以建立2個單獨的指令碼,第一個指令碼可用於生成持有者令牌,第二個指令碼可用於對您感興趣的資源進行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:
然後access_token
,可以在此指令碼中使用來自指令碼1的API來進行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 Developers User Guide獲取有關策略、漫遊電腦、報告等的資訊。
疑難排解
安全訪問API端點使用HTTP響應代碼來指示API請求的成敗。通常,2xx範圍內的代碼指示成功,4xx範圍內的代碼指示由所提供的資訊導致的錯誤,而5xx範圍內的代碼指示伺服器錯誤。解決該問題的方法取決於收到的響應代碼:
REST API — 響應代碼1
REST API — 響應代碼2
相關資訊