首页 > 解决方案 > 获取服务主体对象的访问令牌的正确方法是什么?

问题描述

我有一个在 Azure AD 中注册为服务主体的 API。我正在尝试从客户端应用程序获取访问令牌并将其传递给 API。

作为 HttpClient 请求的一部分,我添加了此代码(来自 Microsoft 文档):

var accessToken = await tokenCredential.GetTokenAsync(
    new TokenRequestContext(scopes: new string[] { ResourceId + "/.default" }) { }
);

这有效,但它只能工作 24 小时,此时我必须重新启动应用程序服务才能使其再次工作。我猜这是因为令牌已过期并且尚未检索到新令牌。

我在某处读到,如果使用上述代码,则需要手动处理令牌的过期和缓存。

我应该如何使用 检索这些令牌Azure.Identity

标签: c#asp.netasp.net-coreazure-active-directory

解决方案


这原来是服务生命周期问题和 HttpClient 的一个狡猾的实现。切换到 IHttpClientFactory 后,问题现在似乎得到了解决。


推荐阅读