Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure:如何检索用于验证jwt策略的颁发者签名密钥?_Azure_Api_Jwt_Azure Api Management_Jwt Auth - Fatal编程技术网

Azure:如何检索用于验证jwt策略的颁发者签名密钥?

Azure:如何检索用于验证jwt策略的颁发者签名密钥?,azure,api,jwt,azure-api-management,jwt-auth,Azure,Api,Jwt,Azure Api Management,Jwt Auth,我在Azure中工作,我们的Web应用程序通过请求调用APIM,然后APIM调用WebApi来满足请求 当我们试图调用其中一个API设置时,我们遇到了一个500错误,当在浏览器中深入到错误(下面是“错误消息”)(Inspect->Network)时,它显示了来自为apim(产品public.policy.xml)设置的validate jwt策略的错误消息: Base64编码密钥 {{WebAppId}} {{validauthorityissuer} 乍一看,问题似乎出在颁发者签名密钥上,

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

当我们试图调用其中一个API设置时,我们遇到了一个500错误,当在浏览器中深入到错误(下面是“错误消息”)(Inspect->Network)时,它显示了来自为apim(产品public.policy.xml)设置的validate jwt策略的错误消息:


Base64编码密钥
{{WebAppId}}
{{validauthorityissuer}
乍一看,问题似乎出在颁发者签名密钥上,因为它看起来只是一个占位符字符串

为了确认这可能是导致问题的原因,我在APIM中进行了测试,并得到以下消息: { “代码”:“401”, “类型”:“AAD授权”, “消息”:“未提供用于访问资源的令牌。”, “developerMessage”:“缺少或格式不正确的访问令牌”, “moreInfo”:空 }

这让我更加相信问题在于发行人签名密钥

我的问题是,我从哪里获得发卡机构签名密钥?无法在网上和文档中找到太多帮助


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

您可以从openID端点获得发卡机构签名密钥。我相信你不用担心这个。如果您为APIM提供开放id端点(正如您所做的那样),APIM将自动执行此操作。下面的广告样本证实了这一点。您应该删除与颁发者相关的块。我仍然会试验/验证

<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>