检索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,然后选择管理私钥。
- 在安全性选项卡上,添加您正在运行的帐户,并具有读取 的权限。
答
当你试图读取证书的用户没有权限访问证书的私钥时,通常不会存在KeySet。你可以仔细检查你的证书上的ACL?
+0
嗨Dilip,我通过删除从CurrentUser/Local Machine Store获取证书的条件解决了此问题。其次,我也尝试导入该服务器当前用户上下文的证书。 – Amruta
感谢您的回复......我已经完成了您指定的设置。而不是只读访问权限,我在IIS_IUSRS的根级别提供了完全访问权限。现在遇到的错误是“指定了无效的提供程序类型” – Amruta
此文章没有帮助:https://blogs.msdn.microsoft.com/alejacma/2009/12/22/invalid-provider-type-specified-error-when-accessing- x509certificate2 -keykeykey-on-cng-certificates/ – LoekD
并将其转换为:http://blog.davidchristiansen.com/2016/05/521/#convert – LoekD