微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Azure:如何为validate-jwt策略检索颁发者签名密钥?

如何解决Azure:如何为validate-jwt策略检索颁发者签名密钥?

我在Azure中工作,我们的Web应用程序通过请求调用APIM,然后APIM调用WebApi来满足请求。

当我们尝试调用一个设置的API时,我们遇到500错误,并且当在浏览器中向下钻取错误时(下面是“错误消息”)(检查->网络),它显示错误消息来自为API设置的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>

乍一看,似乎是问题的颁发者签名密钥,因为它看起来只是一个占位符字符串。

为确认这可能是导致问题的原因,我在APIM中进行了测试,并收到以下消息: { “ code”:“ 401”, “ type”:“ AAD授权”, “ message”:“未提供访问资源的令牌。”, “ developerMessage”:“缺少或格式错误的访问令牌”, “ moreInfo”:null }

这使我更加相信问题出在发行人签名密钥上。

我的问题是,我从哪里获得发行人的签名密钥?尚未在线或通过文档找到太多帮助。

第二个问题是,假设我得到了密钥,是否必须将其转换为base64,然后将其粘贴到当前显示“ Base64 Encoded Key”的位置?

解决方法

您可以从openID端点获取发行者签名密钥。我相信您不必为此担心。如果您为APIM提供开放ID端点(如您所做的那样),APIM将自动执行此操作。下面的AD示例证实了这一点。您应该删除与发行人相关的块。我仍然会进行实验/验证。

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。