我有一个以前无法正常运行的Azure逻辑应用程序。我已经在Azure中继承了.NET核心MVC应用程序和逻辑应用程序。尚未开发出完整的解决方案(逻辑应用程序,API,DB SP等),我在跟踪所有运动部件并解决问题时遇到了一些困难。
据我所知,它应该像这样工作:
在此过程中,应用程序迭代所有可用证书并找到具有匹配指纹的证书的功能被破坏了。
在下面的代码中,它在“ var signingCert = store.Certificates ....”行上中断
private async Task<string> GetDatabaseTokenFromCert()
{
X509Certificate2 cert;
var store = new X509Store(StoreLocation.CurrentUser);
var authContext = new AuthenticationContext(_appSettings.AzureAD.AADInstance + _appSettings.AzureAD.TenantId);
try
{
store.Open(OpenFlags.ReadOnly);
var signingCert = store.Certificates.OfType<X509Certificate2>().FirstOrDefault(x => x.Thumbprint == _appSettings.AzureAD.CertificateThumbprint);
if (signingCert == null)
{
throw new FileNotFoundException("Cannot locate certificate for DB access!", _appSettings.AzureAD.CertificateThumbprint);
}
cert = signingCert;
}
finally
{
store.Close();
}
var certCred = new ClientAssertionCertificate(_appSettings.AzureAD.ClientId, cert);
var result = await Retry(() => authContext.AcquireTokenAsync(_appSettings.SqlConfig.ResourceId, certCred));
return result?.AccessToken;
}
重要的appsettings.json部分如下。此屏幕截图中的所有内容均为“ _appSettings.AzureAD.SOMETHING”:注意指纹的最后数字为黄色
以下是Azure应用服务上有问题的证书(我认为)的屏幕截图:请注意与上面的指纹相同的数字
逻辑应用发布到的C#中的方法调用:
[AllowAnonymous][HttpPost("caseDiaryEmailReport")]
public async Task<IActionResult> CaseDiaryEmailReport()
这是逻辑应用程序中发布到上述C#方法的行:
https://xxxxxRemovedxxx-reports.azurewebsites.net/api/activeReports/caseDiaryEmailReport
在我参与其中之前,我的理解是旧证书过期并且创建了新证书。如果我导出证书并将其安装在本地计算机上,并使用Fidler将其发布到报告API的URL,则该过程在本地运行良好,并填充了队列并发送了电子邮件。
Azure端需要什么配置,以便报表API可以像在开发计算机上运行时的本地证书存储区一样迭代Azure上的证书存储区?
为此困扰了好几天,谢谢!