簡體   English   中英

Azure:如何檢索驗證 jwt 策略的頒發者簽名密鑰?

[英]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 示例證實了這一點。 您應該刪除與發行人相關的塊。 我仍然會實驗/驗證。

https://docs.microsoft.com/en-us/azure/api-management/api-management-access-restriction-policies#ValidateJWT

暫無
暫無

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

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