簡體   English   中英

Azure API 管理和后端 Web API

[英]Azure API Management and Backend Web API

我在 Azure App 服務中部署了一個 Web API。 Web API 使用 Azure AD 進行保護。 我計划使用 API 管理將 api 公開給各種用戶。

現在,我已在 API 管理中啟用了對開發人員門戶的基本身份驗證。 另外,我為后端服務器啟用了 OAuth 2.0 身份驗證(用戶授權)。 因此,如果我登錄到開發人員門戶,我可以看到兩個字段 - 訂閱密鑰和授權。 Subscription 密鑰將是開發人員對門戶的訂閱,而 Authorization 將是后端服務器所需的 OAuth 授權。

此外,如果任何用戶需要訪問 api 管理 url,則用戶需要在查詢字符串中傳遞訂閱密鑰和授權標頭中的令牌(例如:桌面客戶端)。

有什么方法可以只使用 JWT 令牌而不使用訂閱密鑰來調用 api 管理 url(但我仍然需要知道哪個開發人員/用戶訪問了該服務)。 我期待的是單個令牌,可用於向開發人員門戶驗證用戶身份,並可用於向后端 api 進行身份驗證(通過轉換為后端服務器令牌或通過任何其他方式)

謝謝,

約翰

是的,你可以這樣做(有點黑客)。 你必須為此使用 REST Api,特別是這個call 對我來說,編輯現有的 API 不起作用(它們的密鑰還在那里),但是當我創建新的 API 時,密鑰不在那里:

沒有“Ocp-Apim-Subscription-Key”

我不得不模糊我所有的東西,很抱歉。 因此,要實現這一點,您需要發出以下查詢:

路徑

PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}?api-version=2016-07-07&import=true&path={APIpostfix}

標題

Authorization = "Bearer TOKEN_GOES_HERE" ## Space after 'Bearer' is mandatory  
Content-Type = "application/vnd.swagger.link+json" ## Look for the proper "Content-Type" on the page I've linked. This is the example to import API definition directly from "swagger.json" generated by your running api.

身體:

{
    "name": "Name",
    "description": "Desc",
    "link": "http://url.to/your/swagger.json", ## <<only needed if you import directly from running API
    "serviceUrl": "https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ApiManagement/service/{serviceName}/apis/{apiId}/backends/{APIpostfix}", ## << declare your API Management backend
    "protocols": [
        "https"
    ],
    "authenticationSettings": {
        "oAuth2": null,
        "openid": null
    },
    "subscriptionKeyParameterNames": { ## << Magic happens here
        "header": null,
        "query": null
    }
}

附注。 我從來沒有費心去弄清楚 PUT + Send over the swagger 文件,但是當你知道這一點時,我相信它非常簡單。

APIM 中的訂閱密鑰與用戶和產品相關聯,因此如果您更改(或創建新產品)不需要訂閱(在創建時或產品設置中可用的選項),則無需訂閱密鑰即可調用包含在其中的任何 API這樣的產品。

缺點是所有此類調用都會被 APIM 視為匿名並在分析中顯示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM