在存储客户端的 HTTP 传输上配置代理只回答一个问题:该传输如何发送存储请求。而身份凭证可能使用另一个 HTTP 客户端来获取令牌。

这一区别解释了一个看似常见的矛盾:存储终结点可以通过代理访问,但 SDK 在发送预期操作之前就失败了。该失败可能属于针对身份终结点的凭证获取。

首先记录哪个目标失败了。然后检查提供给存储构建器的 HTTP 客户端,以及凭证实现所使用的配置。遵循每种传输受支持的代理选项。对于在允许的公共代理路由上可公开访问的存储和令牌终结点,HTTP 代理列表提供候选终结点;不要假设一个构建器的设置会重新配置应用中的每个对象。

阶段有用的证据
令牌获取身份终结点、所选客户端、代理质询或连接错误
存储请求存储终结点、已配置的管道、最终响应或传输失败

将代理账户与 Azure 凭证分开。成功的代理登录只授予一条路由;目标服务仍会对 Azure 操作进行授权。

历史上的回答使用了几代 Azure Storage Java 类,包括较旧的 OperationContext 和管道 API。将示例与应用当前使用的 SDK 和 HTTP 传输相匹配。对于 Data Lake SDK,存储与身份共用的 HTTP 客户端设置展示了两个构建器输入。为解决代理问题而重新引入过时的客户端类型,会多出一条需要调试的配置路径。

在日志中使用安全的终结点标识符。存储 URL 可能包含访问令牌,完整的代理 URL 可能包含密码。

相关文章