🔥 Bí kíp xử lý xác thực API trong tự động hóa mạng: Token vs Session – Bạn chọn phe nào? 🔐
Trong thời đại DevNet/NetDevOps lên ngôi, việc tương tác với API của các hệ thống như Cisco DNA Center hay Cisco ACI là chuyện hằng ngày ở huyện. Nhưng nếu không nắm rõ cách “xác thực” (authentication) đúng chuẩn, bạn sẽ vấp ngã đau đớn ngay từ cú request đầu tiên. 😬
Trong bài này, mình chia sẻ hai phương pháp xác thực Token-Based và Session-Based, cực kỳ phổ biến khi làm việc với các controller như Cisco DNA Center và APIC (ACI). Và quan trọng là: có ví dụ Python cụ thể để anh em copy-paste làm lab ngay!
🧩 Token-Based Authentication – Dành cho DNA Center
🔧 Các bước thực hiện:
import requests DNA_URL = "https://sandboxdnac.cisco.com" HEADERS = {"content-type":"application/json"} USER = "devnetuser" PASS = "Cisco123!" AUTH = (USER, PASS) LOGIN_URL = DNA_URL + "/api/system/v1/auth/token"
result = requests.post(url=LOGIN_URL, auth=AUTH, headers=HEADERS, verify=False)
TOKEN = result.json()['Token'] HEADERS['X-Auth-Token'] = TOKEN
✅ Nếu response.ok == True là bạn đã thành công lấy được thông tin thiết bị trong hệ thống!
🍪 Session-Based Authentication – Dành cho APIC (ACI)
🔧 Các bước thực hiện:
✅ Chỉ cần session.get() là tự động mang cookie, không cần manually truyền token vào headers!
🎯 Tổng kết nhanh
💬 Câu hỏi nhanh kiểm tra kiến thức
✅ Session()
✅ "username:password"
🧠 Kết luận
Không phải API nào cũng xác thực giống nhau. Có API yêu cầu Token kiểu Bearer, có API cần Cookie phiên, có API chơi luôn cả 2 😅. Vậy nên, luôn đọc kỹ tài liệu API của controller bạn đang làm việc, và viết hàm Python chuẩn xác.
📌 Trong các bài lab DevNet hay tự động hóa mạng, hãy dành thời gian làm thật kỹ phần xác thực API – vì nếu bước này sai, tất cả các bước tiếp theo… vô nghĩa.
📥 Nếu bạn thấy bài viết hữu ích cho DevOps / NetDev / Automation Engineer, hãy để lại bình luận hoặc chia sẻ để lan tỏa kiến thức đúng đến cộng đồng!
vnpro #NetDevOps #CiscoDNA #CiscoACI #TokenAuth #SessionAuth #APIautomation devnet #NetworkAutomation #PythonRequests
Trong thời đại DevNet/NetDevOps lên ngôi, việc tương tác với API của các hệ thống như Cisco DNA Center hay Cisco ACI là chuyện hằng ngày ở huyện. Nhưng nếu không nắm rõ cách “xác thực” (authentication) đúng chuẩn, bạn sẽ vấp ngã đau đớn ngay từ cú request đầu tiên. 😬
Trong bài này, mình chia sẻ hai phương pháp xác thực Token-Based và Session-Based, cực kỳ phổ biến khi làm việc với các controller như Cisco DNA Center và APIC (ACI). Và quan trọng là: có ví dụ Python cụ thể để anh em copy-paste làm lab ngay!
🧩 Token-Based Authentication – Dành cho DNA Center
Ý tưởng chính: Gửi thông tin username/password → Nhận lại Token → Dùng Token cho các API call tiếp theo.
🔧 Các bước thực hiện:
- Chuẩn bị biến Python
import requests DNA_URL = "https://sandboxdnac.cisco.com" HEADERS = {"content-type":"application/json"} USER = "devnetuser" PASS = "Cisco123!" AUTH = (USER, PASS) LOGIN_URL = DNA_URL + "/api/system/v1/auth/token"
- Gửi POST request để nhận Token
result = requests.post(url=LOGIN_URL, auth=AUTH, headers=HEADERS, verify=False)
- Trích xuất Token từ response JSON
TOKEN = result.json()['Token'] HEADERS['X-Auth-Token'] = TOKEN
- Thực hiện các API Call
✅ Nếu response.ok == True là bạn đã thành công lấy được thông tin thiết bị trong hệ thống!
🍪 Session-Based Authentication – Dành cho APIC (ACI)
Ý tưởng chính: Gửi thông tin đăng nhập để nhận cookie phiên → Tự động gắn cookie cho các request tiếp theo.
🔧 Các bước thực hiện:
- Tạo Session và định nghĩa login body
- Gửi POST để đăng nhập và nhận cookie
- Kiểm tra cookie tồn tại
- Gửi API Call với Session đã đăng nhập
✅ Chỉ cần session.get() là tự động mang cookie, không cần manually truyền token vào headers!
🎯 Tổng kết nhanh
| Dùng ở đâu? | Cisco DNA Center | Cisco APIC (ACI) |
| Gửi gì trước? | Username/Password (POST) → Token | Username/Password (POST) → Session Cookie |
| Cần truyền gì sau đó? | X-Auth-Token trong header | Session tự gắn cookie |
| Hết hạn thì sao? | Gửi lại để lấy token mới | Gửi lại để lấy cookie mới |
💬 Câu hỏi nhanh kiểm tra kiến thức
❓ Lớp nào dùng để quản lý session authentication?
✅ Session()
❓ Username và password cần định dạng thế nào trước khi mã hóa Base64?
✅ "username:password"
🧠 Kết luận
Không phải API nào cũng xác thực giống nhau. Có API yêu cầu Token kiểu Bearer, có API cần Cookie phiên, có API chơi luôn cả 2 😅. Vậy nên, luôn đọc kỹ tài liệu API của controller bạn đang làm việc, và viết hàm Python chuẩn xác.
📌 Trong các bài lab DevNet hay tự động hóa mạng, hãy dành thời gian làm thật kỹ phần xác thực API – vì nếu bước này sai, tất cả các bước tiếp theo… vô nghĩa.
📥 Nếu bạn thấy bài viết hữu ích cho DevOps / NetDev / Automation Engineer, hãy để lại bình luận hoặc chia sẻ để lan tỏa kiến thức đúng đến cộng đồng!
vnpro #NetDevOps #CiscoDNA #CiscoACI #TokenAuth #SessionAuth #APIautomation devnet #NetworkAutomation #PythonRequests