c# - Azure Key Vault 证书证书标识符、 secret 标识符、 key 标识符之间的区别

标签 c# .net azure azure-active-directory azure-keyvault

我曾经使用过存储在 Azure Key Vault 中的 secret ,但这是第一次使用证书而不是 secret 进行身份验证。

我有一个存储在 Azure Key Vault 中的证书。我想使用此证书通过 Azure AD 应用程序进行身份验证。

据我了解,对于存储在 Azure Key Vault 中的 secret ,我们可以使用 @Microsoft.KeyVault(SecretUri='secretIdentifier') 通过应用程序设置在 Azure Function 中引用它们。

我注意到证书有三种类型的标识符: key 、 secret 和证书标识符。它们之间有什么区别以及它们各自的用途是什么?

此外,我们可以使用 @Microsoft.KeyVault(SecretUri='Certificate's Secret Identifier') 通过 secret 标识符访问证书并使用 if 进行身份验证吗?如果可以的话,这种方法有什么注意事项吗?

最后,为什么使用证书进行身份验证被认为是比使用 key 更好的方法?

到目前为止,我还没有找到一个对于以前没有使用过证书的人来说很容易理解的解释。任何建议/解释将不胜感激。

最佳答案

有关 key 、 secret 和证书之间的区别,请参阅对象类型下的 Azure Key Vault 文档:

https://learn.microsoft.com/en-us/azure/key-vault/general/about-keys-secrets-certificates#object-types

将 Secrets 视为密码和连接字符串。 key 是可以使用各种算法生成的加密 key 。证书是具有可选策略(例如自动轮换)的 key (或 key 对)。

使用证书而不是 key 进行身份验证有一个优点。优点是证书具有私钥和公钥部分。 API 调用的接收者可以仅使用证书的公共(public)部分来验证您的身份,同时您可以安全地保护 key 保管库中的私有(private)部分。 secret 在主叫方和被叫方之间共享,并通过线路传输,因此泄露的机会更多。

关于c# - Azure Key Vault 证书证书标识符、 secret 标识符、 key 标识符之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64795535/

相关文章:

c# - 如何获取 SQL Server 中所有弹性池的名称?

c# - BadImageFormatException 无法加载文件或程序集或其依赖项之一。试图加载格式不正确的程序

c# - 如何使用 C# 从 IOS 设备获取 IMEI

c# - 控制台应用程序 - 重新创建 Azure CLI `az --login` 的 Web 浏览器本地主机回调身份验证技术

c# - 一行上的 RDLC 多个值

c# - 有没有办法将数组的不连续子集作为单个数组公开?

c# - 如何在 LINQ 表达式中对多个级别进行排序?

.net - ASMX 操作 404s,但 ASMX 服务描述没有,url 路由问题?

azure - 日志分析中未收集某些 Azure 虚拟机自定义性能计数器

c# - 在本地运行一次计时器触发的 Azure 函数的最简单方法是什么?