國外一名網友在他的部落格提到關於 Jamf Pro API 的用途,並將此與 Classic API 作比較。
Jamf 不僅提供了 Classic API,也為 Jamf Pro 提供了他們自己的 API,這兩者 API 主要是以不同的方式在處理身份驗證,對於原先就有在使用 Classic API 的使用者來說,當他們接觸了 Jamf Pro API 之後,他們所涉及到的額外步驟可能會讓他們感到驚訝。
以下是 Classic API 在驗證身份時所需要的條件:
- 只需要一個步驟
- 只需要使用者名稱及密碼,即可呼叫 API 進行身份驗證
- 使用者名稱及密碼可以是純文字的格式
- 不需要任何權杖
而 Jamf Pro API 在驗證身份時所需要的條件則是有以下這些:
- 當需要呼叫多個 API 時,則需要較複雜的流程
- 使用者名稱及密碼僅用來獲得身份驗證的權杖,稱為存取權杖,此權杖將用於身份驗證
- 存取權杖的有效時間最長為 30 分鐘
- 使用者名稱及密碼必須採用 Base64 的資料格式
- 在呼叫 API 並獲得存取權杖之前,會予以此權杖是用來進行身份驗證的說明
以上兩種 API 在身份驗證的部分差異非常大,因此該名網友寫了一個 Shell 腳本來試著讓 Jamf Pro API 執行以下指令:
- 取得存取權杖
- 驗證當前的存取權杖是否有效、有無過期
- 透過當前的存取權杖來更新權杖、並驗證新產生的權杖是否有效,在產生新權杖之後,當前權杖將失效
Shell 腳本的內容會包含以下幾個方法:
- GetJamfProAPIToken:使用 Jamf Pro 帳號的使用者名稱及密碼來取得存取權仗。
- APITokenValidCheck:使用當前的存取權杖來呼叫 API,該權杖會顯示與使用者相關聯的詳細授權資訊,並回傳 HTTP 的狀態碼。
- CheckAndRenewAPIToken:檢查 APITokenValidCheck 所回傳的 HTTP 狀態碼,來驗證當前的存取權杖是否有效,如果是,則可以使用當前的權杖來獲得新的存取權證,原有的將失效;如果不是,則呼叫 GetJamfProAPIToken 方法來取得新的存取權杖。
- InvalidateToken:檢查 APITokenValidCheck 所回傳的 HTTP 狀態碼,來驗證當前的存取權杖是否有效,如果有效,則使用此方法來將當前的權杖無效化,並使用 CheckAndRenewAPIToken 方法來產生新的權杖。
點這邊可以查看完整個 Shell 程式碼。
原文連結:https://derflounder.wordpress.com/2021/12/10/obtaining-checking-and-renewing-bearer-tokens-for-the-jamf-pro-api/