首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在将@azure/keyvault-key与@azure/identity一起使用时需要租户,而在使用azure-keyvault时不需要?

为什么在将@azure/keyvault-key与@azure/identity一起使用时需要租户,而在使用azure-keyvault时不需要?
EN

Stack Overflow用户
提问于 2020-04-09 13:57:03
回答 1查看 123关注 0票数 0

我曾经使用过azure-keyvault,但现在它已经被弃用了。我用来加密和解密东西。我需要操作的只有clientId、clientSecret和密钥标识符。

因为现在不推荐使用azure-keyvault,所以我改用@azure/keyvault-keys/@azure/identity。为此,我需要一个租户(ClientSecretCredential),这是我以前不需要的。为什么会这样,或者有没有不需要它的方法?

EN

回答 1

Stack Overflow用户

发布于 2020-04-15 16:51:01

在使用ClientSecretCredential时,因为服务主体属于特定租户,所以必须指定该租户,而不是像以前的代码那样在回调中返回该租户。

有许多不同的凭证类型,但我们建议使用DefaultAzureCredential,它支持MSI、环境凭证(使用$AZURE_TENANT_ID$AZURE_CLIENT_ID$AZURE_CLIENT_SECRET的服务主体),以及大多数语言的交互式浏览器登录-很快就会有更多的凭证,比如azure CLI和Visual Studio。通过对azure CLI的支持,这提供了与您使用的更老的软件包的奇偶校验。通过使用DefaultAzureCredential,您就可以获得所有这些,并且它默认支持不同的环境,因此您不必更改代码即可为开发、试运行或生产环境使用不同的凭据。

因此,就像在引用的示例中一样,您只需实例化一个DefaultAzureCredenial即可。如果您定义了服务主体环境变量,则在未检测到Managed Identity (MSI)时将使用它们。

代码语言:javascript
复制
import { SecretClient } from '@azure/keyvault-secrets';
import { DefaultAzureCredential } from '@azure/identity';
import { CosmosClient } from '@azure/cosmos';

const keyVaultUrl = process.env('APP_KEY_VAULT_URI');
const credential = new DefaultAzureCredential();
let storageClient;
let cosmosClient;

async function configureClients() {
    const kvClient = new SecretClient(keyVaultUrl, credential);
    const storageUri = await client.getSecret('storageUri');
    const cosmosDbConnectionString = await client.getSecret('cosmosDb');

    cosmosClient = new CosmosClient(cosmosDbConnectonString);
    storageClient = new BlobServiceClient(storageUri, credential);

凭据的顺序针对生产工作负载进行了优化,但支持开发人员机器-与我上面列出的顺序非常接近。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61114810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档