[英]What do key, audience, claim, and issuer mean for OAuth2 in Azure's <validate-jwt> tag?
[英]Azure: How to retrieve issuer-signing-key for validate-jwt policy?
我在 Azure 中工作,我們的 Web 應用程序使用請求調用 APIM,然后 APIM 調用 WebApi 來完成請求。
當我們嘗試調用設置的 API 之一時,我們遇到了 500 錯誤,並且在瀏覽器中深入到錯誤(下面是“錯誤消息”)(檢查 - > 網絡)時,它顯示錯誤消息即將到來來自為 apim 設置的 validate-jwt 策略(product-public.policy.xml):
<policies>
<inbound>
<base />
<validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Error message" require-expiration-time="true" require-scheme="Bearer" require-signed-tokens="true">
<openid-config url="{{validauthorityissuer}}/.well-known/openid-configuration" />
<issuer-signing-keys>
<key>Base64 Encoded Key</key>
</issuer-signing-keys>
<audiences>
<audience>{{WebAppId}}</audience>
</audiences>
<issuers>
<issuer>{{validauthorityissuer}}</issuer>
</issuers>
</validate-jwt>
</inbound>
乍一看,問題似乎是 issuer-signing-key,因為它看起來只是一個占位符字符串。
為了確認這可能是導致問題的原因,我在 APIM 中進行了測試,並收到以下消息:{ "code": "401", "type": "AAD Authorization", "message": "No token provided to訪問資源。", "developerMessage": "缺少或格式錯誤的訪問令牌", "moreInfo": null }
這讓我更加相信問題出在發行人簽名密鑰上。
我的問題是,我從哪里獲得發行人簽名密鑰? 無法在線和通過文檔找到太多幫助。
第二個問題是,假設我得到了密鑰,我是否必須將其轉換為 base64,然后將其粘貼到當前顯示“Base64 編碼密鑰”的位置?
您可以從 openID 端點獲取您的頒發者簽名密鑰。 我相信你不必擔心這個。 如果您為 APIM 提供 open-id 端點(正如您所做的那樣),APIM 將自動執行此操作。 下面的 AD 示例證實了這一點。 您應該刪除與發行人相關的塊。 我仍然會實驗/驗證。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.