【发布时间】:2020-07-08 03:36:00
【问题描述】:
-
我在 azure key vault 中添加了 pfx 证书。
-
我有一个 asp.net web api 应用程序,我试图通过其中一个端点访问密钥库中的证书信息。
public class ValuesController : ControllerBase { public async Task<string> Get() { AzureServiceTokenProvider azureServiceTokenProvider = new AzureServiceTokenProvider(); var keyVaultClient = new KeyVaultClient( new KeyVaultClient.AuthenticationCallback(azureServiceTokenProvider.KeyVaultTokenCallback)); var secret = await keyVaultClient.GetSecretAsync("<certificateSecretIdentifier>").ConfigureAwait(false); X509Certificate2 certificateWithPrivateKey = new X509Certificate2(Convert.FromBase64String(secret.Value)); return certificateWithPrivateKey.FriendlyName; } } -
我正在使用 Azure 托管标识,并且所有配置都正确。
-
当我在本地 IIS express 中运行 web 应用程序时,没有错误和端点给我想要的结果。
-
现在,当我通过 azure 和应用服务应用发布 Web 应用并尝试调用端点时,出现此错误,
我已使用 azure key vault 的访问策略(获取、列表)添加了我的应用服务应用,请建议可能是什么原因?
2020-07-08 03:20:48.986 +00:00 [错误] Microsoft.AspNetCore.Server.IIS.Core.IISHttpServer:连接 ID“16717361818409901973”,请求 ID“80001f98-0000-e800-b63f-84710c7967bb ":应用程序抛出了未处理的异常。 Internal.Cryptography.CryptoThrowHelper+WindowsCryptographicException:系统找不到指定的文件。 在 Internal.Cryptography.Pal.CertificatePal.FilterPFXStore(字节 [] rawData,SafePasswordHandle 密码,PfxCertStoreFlags pfxCertStoreFlags) 在 Internal.Cryptography.Pal.CertificatePal.FromBlobOrFile(Byte[] rawData, String fileName, SafePasswordHandle password, X509KeyStorageFlags keyStorageFlags) 在 System.Security.Cryptography.X509Certificates.X509Certificate..ctor(字节 [] 数据) 在 System.Security.Cryptography.X509Certificates.X509Certificate2..ctor(Byte[] rawData) 在 C:\Work\AzureAdAuth\Gateway\Controllers\ValuesController.cs:line 26 中的 Gateway.Controllers.ValuesController.Get() 在 lambda_method(闭包,对象) 在 Microsoft.Extensions.Internal.ObjectMethodExecutorAwaitable.Awaiter.GetResult() 在 Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.AwaitableObjectResultExecutor.Execute(IActionResultTypeMapper 映射器,ObjectMethodExecutor 执行器,对象控制器,对象 [] 参数) 在 Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.g__Awaited|12_0(ControllerActionInvoker 调用程序,ValueTask
1 actionResultValueTask) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeInnerFilterAsync>g__Awaited|13_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|19_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Logged|17_1(ResourceInvoker invoker) at Microsoft.AspNetCore.Routing.EndpointMiddleware.<Invoke>g__AwaitRequestTask|6_0(Endpoint endpoint, Task requestTask, ILogger logger) at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context) at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context) at Microsoft.AspNetCore.Server.IIS.Core.IISHttpContextOfT1.ProcessRequestAsync()
【问题讨论】:
-
WEBSITE_LOAD_USER_PROFILE = 1在应用服务配置中工作:)
标签: azure-web-app-service azure-keyvault asp.net-core-3.1 azure-managed-identity