间歇性 Azure AD B2C 异常:IDX10614:AsymmetricSecurityKey.GetSignatureFormater() 引发异常
Intermittent Azure AD B2C exceptions: IDX10614: AsymmetricSecurityKey.GetSignatureFormater() throws an exception
我们使用带有自定义策略的 AAD B2C 已有一段时间了,一切正常,但突然间我们开始收到登录策略的异常。更糟糕的是,有时它确实有效,但 5 次中有 4 次我们遇到异常。
我们设法通过将策略链接到 Application Insights 来挖掘错误,这就是我们得到的结果:
"Kind": "FatalException",
"Content": {
"Time": "9:05 PM",
"Exception": {
"Kind": "Handled",
"HResult": "80131509",
"Message": "IDX10614: AsymmetricSecurityKey.GetSignatureFormater( 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha256' ) threw an exception.\nKey: 'System.IdentityModel.Tokens.X509AsymmetricSecurityKey'\nSignatureAlgorithm: 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha256', check to make sure the SignatureAlgorithm is supported.\nException:'System.Security.Cryptography.CryptographicException: Invalid provider type specified.\r\n\r\n at System.Security.Cryptography.Utils.CreateProvHandle(CspParameters parameters, Boolean randomKeyContainer)\r\n at System.Security.Cryptography.Utils.GetKeyPairHelper(CspAlgorithmType keyType, CspParameters parameters, Boolean randomKeyContainer, Int32 dwKeySize, SafeProvHandle& safeProvHandle, SafeKeyHandle& safeKeyHandle)\r\n at System.Security.Cryptography.RSACryptoServiceProvider.GetKeyPair()\r\n at System.Security.Cryptography.RSACryptoServiceProvider..ctor(Int32 dwKeySize, CspParameters parameters, Boolean useDefaultKeySize)\r\n at System.Security.Cryptography.X509Certificates.X509Certificate2.get_PrivateKey()\r\n at System.IdentityModel.Tokens.X509AsymmetricSecurityKey.get_PrivateKey()\r\n at System.IdentityModel.Tokens.X509AsymmetricSecurityKey.GetSignatureFormatter(String algorithm)\r\n at System.IdentityModel.Tokens.AsymmetricSignatureProvider..ctor(AsymmetricSecurityKey key, String algorithm, Boolean willCreateSignatures)'.\nIf you only need to verify signatures the parameter 'willBeUseForSigning' should be false if the private key is not be available.",
"Data": {},
"Exception": {
"Kind": "Handled",
"HResult": "80090014",
"Message": "Invalid provider type specified.\r\n",
"Data": {}
}
}
}
我不确定发生了什么变化,也不知道这一切是如何突然发生的。是否使用隐身模式并不重要。
此外,Microsoft 端未报告中断。
任何线索将不胜感激!
已通过此处找到的信息解决:
由于我们还使用了 Invite Flow,因此我使用了此处注明的 New-SelfSignedCertificate
命令。
现在,我已使用来自此 Microsoft doc 的信息并附加来自上述 Whosebug 线程的 Provider
参数重新生成了证书:
PS C:\WINDOWS\system32> New-SelfSignedCertificate `
>> -KeyExportPolicy Exportable `
>> -Subject "CN=***.onmicrosoft.com" `
>> -KeyAlgorithm RSA `
>> -KeyLength 2048 `
>> -KeyUsage DigitalSignature `
>> -NotAfter (Get-Date).AddMonths(24) `
>> -CertStoreLocation "Cert:\CurrentUser\My" `
>> -Provider "microsoft enhanced rsa and aes cryptographic provider"
虽然我不确定为什么这突然停止工作,但我猜可能是微软更新了他们的一些东西。
不管怎样,现在看来已经可以使用了,让我们拭目以待。
我们使用带有自定义策略的 AAD B2C 已有一段时间了,一切正常,但突然间我们开始收到登录策略的异常。更糟糕的是,有时它确实有效,但 5 次中有 4 次我们遇到异常。
我们设法通过将策略链接到 Application Insights 来挖掘错误,这就是我们得到的结果:
"Kind": "FatalException",
"Content": {
"Time": "9:05 PM",
"Exception": {
"Kind": "Handled",
"HResult": "80131509",
"Message": "IDX10614: AsymmetricSecurityKey.GetSignatureFormater( 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha256' ) threw an exception.\nKey: 'System.IdentityModel.Tokens.X509AsymmetricSecurityKey'\nSignatureAlgorithm: 'http://www.w3.org/2001/04/xmldsig-more#rsa-sha256', check to make sure the SignatureAlgorithm is supported.\nException:'System.Security.Cryptography.CryptographicException: Invalid provider type specified.\r\n\r\n at System.Security.Cryptography.Utils.CreateProvHandle(CspParameters parameters, Boolean randomKeyContainer)\r\n at System.Security.Cryptography.Utils.GetKeyPairHelper(CspAlgorithmType keyType, CspParameters parameters, Boolean randomKeyContainer, Int32 dwKeySize, SafeProvHandle& safeProvHandle, SafeKeyHandle& safeKeyHandle)\r\n at System.Security.Cryptography.RSACryptoServiceProvider.GetKeyPair()\r\n at System.Security.Cryptography.RSACryptoServiceProvider..ctor(Int32 dwKeySize, CspParameters parameters, Boolean useDefaultKeySize)\r\n at System.Security.Cryptography.X509Certificates.X509Certificate2.get_PrivateKey()\r\n at System.IdentityModel.Tokens.X509AsymmetricSecurityKey.get_PrivateKey()\r\n at System.IdentityModel.Tokens.X509AsymmetricSecurityKey.GetSignatureFormatter(String algorithm)\r\n at System.IdentityModel.Tokens.AsymmetricSignatureProvider..ctor(AsymmetricSecurityKey key, String algorithm, Boolean willCreateSignatures)'.\nIf you only need to verify signatures the parameter 'willBeUseForSigning' should be false if the private key is not be available.",
"Data": {},
"Exception": {
"Kind": "Handled",
"HResult": "80090014",
"Message": "Invalid provider type specified.\r\n",
"Data": {}
}
}
}
我不确定发生了什么变化,也不知道这一切是如何突然发生的。是否使用隐身模式并不重要。
此外,Microsoft 端未报告中断。
任何线索将不胜感激!
已通过此处找到的信息解决:
由于我们还使用了 Invite Flow,因此我使用了此处注明的 New-SelfSignedCertificate
命令。
现在,我已使用来自此 Microsoft doc 的信息并附加来自上述 Whosebug 线程的 Provider
参数重新生成了证书:
PS C:\WINDOWS\system32> New-SelfSignedCertificate `
>> -KeyExportPolicy Exportable `
>> -Subject "CN=***.onmicrosoft.com" `
>> -KeyAlgorithm RSA `
>> -KeyLength 2048 `
>> -KeyUsage DigitalSignature `
>> -NotAfter (Get-Date).AddMonths(24) `
>> -CertStoreLocation "Cert:\CurrentUser\My" `
>> -Provider "microsoft enhanced rsa and aes cryptographic provider"
虽然我不确定为什么这突然停止工作,但我猜可能是微软更新了他们的一些东西。
不管怎样,现在看来已经可以使用了,让我们拭目以待。