Azure active directory AuthenticationCertCallback在Ubuntu/docker下不工作

Azure active directory AuthenticationCertCallback在Ubuntu/docker下不工作,azure-active-directory,azure-keyvault,Azure Active Directory,Azure Keyvault,我对证书密钥保险库身份验证有问题。一般来说,它在我的pc(win10)下运行良好,但当我在ubuntu/docker下运行相同的代码时,我收到空引用异常。(在这两种环境中,证书都存在) private async Task AuthenticationCertCallback(字符串权限、字符串资源、字符串范围) { 尝试 { var clientAssertionCertPfx=CertificateHelper.FindCertificateByThumbprint(_options.key

我对证书密钥保险库身份验证有问题。一般来说,它在我的pc(win10)下运行良好,但当我在ubuntu/docker下运行相同的代码时,我收到空引用异常。(在这两种环境中,证书都存在)

private async Task AuthenticationCertCallback(字符串权限、字符串资源、字符串范围)
{
尝试
{
var clientAssertionCertPfx=CertificateHelper.FindCertificateByThumbprint(_options.keyVault options.CertThumb);
var assertionCert=new ClientAssertionCertificate(_options.KeyVaultOptions.Id,clientAssertionCertPfx);
var context=newauthenticationcontext(authority,TokenCache.DefaultShared);
var-token=await-context.AcquireTokenAsync(资源,断言专家);
返回token.AccessToken;
}
捕获(例外情况除外)
{
日志错误(例如,“获取证书失败”);
返回字符串。空;
}
}
我使用Microsoft.IdentityModel.Clients.ActiveDirectory“Version=“5.2.0”


有人遇到过同样的问题吗?

好的,所以问题出在X502Certificate2类的GetRSAPrivateKey()上,因为它在.net core下返回null

好的,所以问题出在GetRSAPrivateKey()上当X502Certificate2类在.net core下返回null时

FindCertificateByThumbprint看起来像什么?FindCertificateByThumbprint看起来像什么?
private async Task<string> AuthenticationCertCallback(string authority, string resource, string scope)
        {
            try
            {
                var clientAssertionCertPfx = CertificateHelper.FindCertificateByThumbprint(_options.KeyVaultOptions.CertThumb);
                var assertionCert = new ClientAssertionCertificate(_options.KeyVaultOptions.Id, clientAssertionCertPfx);
                var context = new AuthenticationContext(authority, TokenCache.DefaultShared);
                var token = await context.AcquireTokenAsync(resource, assertionCert);
                return token.AccessToken;
            }
            catch (Exception ex)
            {
                Log.Error(ex, "Failed to acquire the certificate");
                return string.Empty;
            }
        }