獲得、檢查並更新 Jamf Pro API 的權杖

國外一名網友在他的部落格提到關於 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/