【问题标题】:Issue while retrieving KeyVault Secret检索 KeyVault 机密时出现问题
【发布时间】:2017-02-02 09:21:35
【问题描述】:

尝试使用证书通过 AD 身份验证检索 KeyVault 机密。

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; }

代码失败

var result = await context.AcquireTokenAsync(resource,AssertionCert)

InnerException 包含:“键集不存在”

有时“指定的提供程序类型无效”。发生错误 不知道问题出在哪里。

【问题讨论】:

    标签: c# certificate azure-active-directory azure-powershell azure-keyvault


    【解决方案1】:

    在以管理员身份运行我的应用程序后,我已经解决了这个问题。

    【讨论】:

    • 不需要问候/结束语(您的用户卡已显示此信息)。对于未来的访问者,它们可能会被视为噪音。
    【解决方案2】:

    假设AssertionCert 有效,则可能是访问私钥的权限问题(此处需要用于身份验证)。

    试试这个:

    • 使用证书创建 Microsoft 管理控制台 (MMC) 针对本地计算机证书存储的管理单元
    • 展开 MMC 并选择 Manage Private Keys。
    • 在“安全”选项卡上,添加您运行时使用的帐户,并使用“读取” 访问。

    【讨论】:

    • 感谢您的回复...我已经完成了您指定的设置。我已经为 IIS_IUSRS 提供了根级别的完全访问权限,而不是只读访问权限。现在遇到的错误是“指定的提供程序类型无效”
    • blog.davidchristiansen.com/2016/05/521 .....引用了此链接,但我的证书位置不在解决方案中...var stream = assembly.GetManifestResourceStream("TestApp.MyCert .pfx")...在我的情况下,此代码始终返回 null...即使指定了我的证书的完整路径..
    • 不要使用他的演示代码,使用“将您的证书密钥从 CNG 转换为 RSA”一章中概述的步骤来转换您的证书(使用适用于 Windows 的 OpenSSL)。
    【解决方案3】:

    KeySet 不存在通常发生在您尝试读取证书的用户无权访问证书的私钥时。你能在证书上仔细检查你的 ACL 吗?

    【讨论】:

    • 您好 Dilip,我通过删除从 CurrentUser/Local Machine Store 获取证书的条件解决了这个问题。其次,我还尝试在该服务器的当前用户上下文中导入证书。
    猜你喜欢
    • 2011-03-12
    • 1970-01-01
    • 2023-03-16
    • 2021-10-29
    • 2019-06-11
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    相关资源
    最近更新 更多