检索KeyVault密钥时发生问题

问题描述:

尝试使用证书通过AD身份验证检索KeyVault密钥。而检索KeyVault密钥时发生问题

VAR的结果=等待context.AcquireTokenAsync(资源,AssertionCert)

的InnerException包含

Documentation Reffered for Creating KeyVault & AD application using Certificate

public static async Task<string> GetAccessToken(string authority, string resource, string scope) { 
    var context = new AuthenticationContext(authority, TokenCache.DefaultShared); 
    var result = await context.AcquireTokenAsync(resource, AssertionCert); 
    return result.AccessToken; } 

代码失败:“键集不存在“

而且有时“指定了无效的提供程序类型”。发生错误 不确定问题在哪里。

任何建议非常感谢。

谢谢

假设AssertionCert是有效的,它可能是权限问题访问私有密钥(这是需要验证在这里)。

试试这个:

  • 与证书创建Microsoft管理控制台(MMC) 管理单元为目标的本机证书库
  • 展开MMC,然后选择管理私钥。
  • 在安全性选项卡上,添加您正在运行的帐户,并具有读取 的权限。
+0

感谢您的回复......我已经完成了您指定的设置。而不是只读访问权限,我在IIS_IUSRS的根级别提供了完全访问权限。现在遇到的错误是“指定了无效的提供程序类型” – Amruta

+0

此文章没有帮助:https://blogs.msdn.microsoft.com/alejacma/2009/12/22/invalid-provider-type-specified-error-when-accessing- x509certificate2 -keykeykey-on-cng-certificates/ – LoekD

+0

并将其转换为:http://blog.davidchristiansen.com/2016/05/521/#convert – LoekD

当你试图读取证书的用户没有权限访问证书的私钥时,通常不会存在KeySet。你可以仔细检查你的证书上的ACL?

+0

嗨Dilip,我通过删除从CurrentUser/Local Machine Store获取证书的条件解决了此问题。其次,我也尝试导入该服务器当前用户上下文的证书。 – Amruta