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