在 Azure APIM 中建立訂用帳戶
使用 API 管理發佈 API 時,您會定義可透過閘道存取 API 的使用者。
針對您的氣象應用程式,您希望確保只有訂閱您服務的客戶,才能存取該 API 並使用您的預測資料。 您可以透過發出訂用帳戶金鑰來完成此存取控制。
重要
此內容中的訂用帳戶與用來管理您 Azure 帳戶的 Azure 訂用帳戶無關。
在這裡,您將了解如何使用訂用帳戶金鑰來保護 API。
訂用帳戶和金鑰
您可以選擇讓您的 API 及其包含的資訊可供免費使用。 但通常您希望只有已付費的使用者或與您有合作關係的組織才能存取。 控制存取的其中一種方式是使用訂用帳戶。 訂用帳戶用來區隔使用者對 API 的存取。
訂用帳戶金鑰會形成授權,以允許存取這些訂用帳戶。 每當用戶端向受保護的 API 發出要求時,必須在 HTTP 要求中包含有效的訂用帳戶金鑰,否則該呼叫將遭到拒絕。
訂用帳戶金鑰是自動產生的唯一金鑰,可作為 API 呼叫的一部分來傳遞。 金鑰與訂用帳戶直接相關,範圍可以限定在不同的區域。 訂用帳戶可讓您更精確地控制權限及原則。
這三個主要訂用帳戶的範圍如下:
範圍 | 詳細資料 |
---|---|
所有 API | 適用於可從閘道存取的每個 API。 |
單一 API | 適用於單一匯入的 API 及其所有端點。 |
Products | 產品是您在 API 管理中設定的一或多個 API 的集合。 您可以將 API 指派給一個以上的產品。 產品可以有不同的存取規則、使用量配額與使用規定。 因此,如果您希望合作夥伴和供應商對 WeatherData API 有不同的存取權限,請將 API 指派給某個產品,然後使用 Azure 入口網站來將 API 與產品產生關聯。 |
呼叫受保護 API 的應用程式必須在每個要求中包含訂用帳戶金鑰。
您隨時都能重新產生這些訂用帳戶金鑰;例如,若您懷疑金鑰已經被分享給未經授權的使用者,則可建立一個新金鑰。
每個訂用帳戶都有兩個金鑰:主要金鑰和次要金鑰。 當您需要重新產生金鑰時,擁有兩個金鑰就更容易做到。 例如,若您想要變更主要金鑰並避免停機,請在應用程式中使用次要金鑰。
針對已啟用訂用帳戶的產品,用戶端必須在對該產品中的 API 進行呼叫時提供金鑰。 開發人員可以透過提交訂用帳戶要求來取得金鑰。 如果您核准該要求,則必須安全地向他們傳送訂用帳戶金鑰,例如以加密訊息傳送。 此步驟是 API 管理工作流程的核心部分。
使用訂用帳戶金鑰來呼叫 API
應用程式必須在呼叫訂用帳戶所保護的 API 端點時,於所有 HTTP 要求中包含有效的金鑰。 金鑰可以在要求標頭中傳遞,或在 URL 中以查詢字串參數形式傳遞。
預設的訂用帳戶金鑰標頭名稱是 Ocp-Apim-Subscription-Key,而預設的查詢字串為 subscription-key。
若要充分測試 API 呼叫,您可以使用 Azure 入口網站、開發人員入口網站或命令列工具中的測試主控台,例如 curl。 以下是使用開發人員入口網站的 GET
要求範例,其顯示訂用帳戶金鑰標頭:
以下是如何使用 curl,在要求標頭中傳遞金鑰的範例:
curl --header "Ocp-Apim-Subscription-Key: <key string>" https://<apim gateway>.azure-api.net/api/path
以下是如何使用 curl 命令,在 URL 中以查詢字串形式傳遞金鑰的範例:
curl https://<apim gateway>.azure-api.net/api/path?subscription-key=<key string>
如果必要金鑰不是在標頭中傳遞,或在 URL 中以查詢字串形式傳遞,您將會收到來自 API 閘道的「401 存取遭拒」回應。