gpt4 book ai didi

Azure 返回有效的访问 token 和无效的客户端 key

转载 作者:行者123 更新时间:2023-12-03 01:07:58 24 4
gpt4 key购买 nike

在多线程环境中运行时,即使 secret 无效,也会返回 Azure 访问 token 。

我有一个集成测试,用于检查获取 Azure 访问 token 时无效的客户端 key 是否不会通过。

当单独运行时,测试每次都会通过,这意味着无效的客户端 key 不会返回 Azure 访问 token 。

但是,当与其他集成测试(在多个线程上)一起运行时,即使客户端密码明显无效,该函数也会返回访问 token 。

即使指定完全无效的客户端 key ,我也看不出有任何合理的理由将其作为客户端 ID 的缓存 token 。

请注意,当客户端 ID 无效时,不会发生此行为。

此行为有解释吗?

    private async Task<string> GetAccessToken(string authority, string resource, string scope)
{
var clientCredential = new ClientCredential(clientId, clientSecret);

var context = new AuthenticationContext(authority, TokenCache.DefaultShared);
var result = await context.AcquireTokenAsync(resource, clientCredential);

Debug.WriteLine("----------------------------------");
Debug.WriteLine(clientId);
Debug.WriteLine(clientSecret);
Debug.WriteLine(result.AccessToken);

return result.AccessToken;
}

调试输出为

Debug Trace:
----------------------------------
<...client id...>
invalid secret
<...valid token...>

最佳答案

这是因为您的缓存中仍然有有效的访问 token 。 ADAL 首先检查缓存,如果访问 token 仍然有效(未过期),则返回访问 token 。 token 缓存将 client_id 作为 key 的维度之一,因此无效的 client_id 会按预期失败。要强制库使用 key 并进行网络调用,您必须从缓存中删除 token

关于Azure 返回有效的访问 token 和无效的客户端 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43196010/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com