C# System.IdentityModel.Metadata和X509SecurityToken在ASP.NET Core中不可用
我目前正试图基于Microsoft docs上的over从Azure Active Directory获取签名密钥,以便在我正在开发的ASP.NET核心Web API端点上验证HTTP请求 虽然我迁移了文章中显示的源代码,但ASP.NET核心web应用程序中似乎没有提供一些引用和类,例如C# System.IdentityModel.Metadata和X509SecurityToken在ASP.NET Core中不可用,c#,asp.net,.net,azure,active-directory,C#,Asp.net,.net,Azure,Active Directory,我目前正试图基于Microsoft docs上的over从Azure Active Directory获取签名密钥,以便在我正在开发的ASP.NET核心Web API端点上验证HTTP请求 虽然我迁移了文章中显示的源代码,但ASP.NET核心web应用程序中似乎没有提供一些引用和类,例如System.IdentityModel.Metadata和X509SecurityToken,MetadataSerializer,等等,EntityDescriptor和X509RawDataKeyIdent
System.IdentityModel.Metadata
和X509SecurityToken
,MetadataSerializer
,等等,EntityDescriptor
和X509RawDataKeyIdentifierClause
我已经在NuGet上搜索过了,但似乎没有System.IdentityModel可用的包,而且我也无法在ASP.NET Core中引用系统程序集
我应该在ASP.NET Core中使用哪些库?如果使用.NET Core OpenID Connect或JWTBeareAuthentication中间件,则无需在ASP.NET Core中手动处理密钥翻转。请检查以下文件: 下面是使用Azure AD在ASP.NET核心web应用程序中调用web API的代码示例:
感谢您提供的代码示例,请立即查看。我正试图根据我链接的源代码检索JWT签名令牌,以便验证发送到MS Graph API发布的web API的JWT令牌。我是否需要实现
GetSigningCertificates(string metadataAddress)
?不,不需要使用此方法手动验证JWT令牌。您可以轻松地使用JWTBeareAuthentication中间件来验证JWT。这个组件将自动为您处理密钥翻转。我完全实现了中间件,但我收到了401,尽管我提供了MS Graph发布的JWT令牌:WWW-Authenticate→承载错误=“无效的令牌”,错误描述=“未找到签名密钥”
-编辑:我的令牌验证参数配置-您是如何获得令牌的?如果您可以共享可以解码的令牌头,这将很有帮助。问题的原因是未设置权限,因此OWIN中间件不知道从何处检索密钥。请将权限设置为https://login.microsoftonline.com/{tenant}
并告诉我是否适合您。