2017-08-09 176 views
0

我有一个ASP.NET Core 1.1项目,使用Azure AD OpenID进行身份验证。身份验证在我的开发盒(Windows 10)上正常工作,无论是在IIS Express还是完整的IIS上。但是,当我将项目部署到我的服务器(Server 2008R2)后,在登录到Microsoft重定向站点后,服务器会抛出此错误:ASP.NET Core Azure AD OpenID - 生产服务器上的令牌签名验证失败

Microsoft.IdentityModel.Tokens.SecurityTokenInvalidSignatureException:IDX10503:签名验证失败。键尝试:“Microsoft.IdentityModel.Tokens.X509SecurityKey,KEYID:VWVIc1WD1Tksbb301sasM5kOq5Q Internal.Cryptography.CryptoThrowHelper + WindowsCryptographicException:在Internal.Cryptography.Helpers.OpenStorageProvider(CngProvider提供商) 发生内部错误 在System.Security.Cryptography.CngKey .Inport(Byte [] keyBlob,String curveName,CngKeyBlobFormat format,CngProvider provider) at System.Security.Cryptography.CngKey.Import(Byte [] keyBlob,CngKeyBlobFormat format) at Internal.Cryptography.Pal.X509Pal.DecodePublicKey(Oid oid,Byte [] encodedKeyValue,Byte [] encodedParameters,ICertificatePal certificatePal) at Microsoft.Office.Cryptography.Pal.CertificateExtensionsCommon.GetPublicKey [T](X509Certificate2 certificate,Predicate`1 matchesConstraints) 。 IdentityModel.Tokens.X509SecurityKey.get_PublicKey() at Microsoft.IdentityModel.Tokens.CryptoProviderFactory.IsSupportedAlgorithm(String algorithm,SecurityKey key) at System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateSignature(Byte [] encodedBytes,Byte [] signature ,SecurityKey键,字符串算法,TokenValidationParameters validationParameters) 在System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler.ValidateSignature(字符串令牌,TokenValidationParameters validationParameters)

当我从天青接收的令牌,并且将其插入JWT.io它会成功验证签名。

要回顾一下:

  • 开发框(IIS Express和IIS)令牌签名验证成功
  • JWT.io调试现场,令牌和签名验证成功
  • 部署在服务器(IIS 7.5)签名验证失败

它与我在服务器上的https证书有什么关系?在我的开发盒上,我使用了使用powershell创建的自签名证书。在服务器上,我们有一个由爸爸颁发的证书。

感谢您的任何帮助。

回答

0

问题是运行应用程序池的标识。权利不够高。

相关问题