Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.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
Jwt 如何从Azure Active Directory获取公共证书_Jwt_Azure Active Directory_Certificate_Asp.net Core Webapi - Fatal编程技术网

Jwt 如何从Azure Active Directory获取公共证书

Jwt 如何从Azure Active Directory获取公共证书,jwt,azure-active-directory,certificate,asp.net-core-webapi,Jwt,Azure Active Directory,Certificate,Asp.net Core Webapi,我们基于.net core的web api需要验证从第三方但受信任的AAD收到的JWT访问令牌。为了进行令牌签名验证,我们的web api需要有可信AAD的公共证书。此功能处于POC阶段。那么,如何获取/下载AAD的公共证书(.cer文件?我建议您使用标准JWT承载身份验证方案,它可以为您处理这方面的问题。 您为它指定权限和客户端ID,它将处理其余部分 但如果你对细节感到好奇, 我可以解释一下。 首先,你要取得你的权威,例如https://login.microsoftonline.com/co

我们基于.net core的web api需要验证从第三方但受信任的AAD收到的JWT访问令牌。为了进行令牌签名验证,我们的web api需要有可信AAD的公共证书。此功能处于POC阶段。那么,如何获取/下载AAD的公共证书(.cer文件?

我建议您使用标准JWT承载身份验证方案,它可以为您处理这方面的问题。 您为它指定
权限
客户端ID
,它将处理其余部分

但如果你对细节感到好奇, 我可以解释一下。 首先,你要取得你的权威,例如
https://login.microsoftonline.com/company.com/v2.0
(或
https://login.microsoftonline.com/company.com
如果您使用的是v1令牌)。 我们将
/。众所周知的/openid配置
添加到权限中以获取元数据URL:
https://login.microsoftonline.com/company.com/v2.0/.well-known/openid-configuration

该元数据URL为我们提供了JSON,其中包括
jwks\u uri
属性。 例如:

当我们导航到此URL时,我们将获得Azure AD的公共签名密钥


不过,这些都是由JWT承载身份验证处理程序秘密处理的,因此您不应该自己实现。

请确认我的以下理解,1.请求此元数据url 2。然后再次针对“jwks_uri”即“”,向所述url发出请求。当我这么做的时候,它会返回3组密钥,其中一组必须被视为公钥证书。在我的应用程序中,验证由“thirdPartyTestAAD.onmicrosoft.com”AAD?签发的JWT?是的,这就是令牌的公共签名密钥是如何获得的。我对cer文件不够熟悉,无法说明是否可以从JSON数据构建它。但是我想你可以用这个来建立这个文件。。因为有公钥参数,我想通常密钥都是一样的。。至少我还没有遇到过他们不一样的情况。数字签名向您证明的是Azure AD签署了该令牌,并且该令牌未被修改。然后,您可以检查发卡机构以检查它是哪个租户。您可以将它们缓存一段时间。事实上,.NET身份验证库可能会将它们缓存8-12小时,然后在后台自动刷新。钥匙可以改变,而且在过去已经改变了。硬编码应用程序中的键是个坏主意。但缓存策略也不错。我认为即使是24小时的缓存也可以。任何帮助下载AAD的公共证书(.cer文件)都将不胜感激。令牌消费应用程序中需要它(.cer文件)来进行令牌签名验证。
"jwks_uri":"https://login.microsoftonline.com/tenant-id-here/discovery/v2.0/keys"