对于Azure CLI,有没有办法使用代理身份验证?我们的代理服务器需要对所有请求进行身份验证,但我没有看到任何相关文档。使用 HTTP_PROXY 环境变量,我可以指示 az cli 使用特定的代理服务器,但我无法将其定义为使用代理身份验证,或者是否有办法做到这一点,我不知道。我们的代理身份验证必须通过 NTLM 或 Kerberos 完成。
相关团队可以检查一下我们是否可以配置az cli以使用Kerberos代理身份验证吗?
答案的根源在于 Azure CLI 是基于 Python 构建的。现在就身份验证而言,Azure CLI 使用基于 AAD 的协议,该协议由 Python 的 ADAL 库处理,其源代码在此处发布。
因此,如果对此感兴趣并且有人想查看线级详细信息,请深入此处。
如前所述,Azure CLI 构建于 Python 之上,原因之一是赋予它广泛的跨平台范围,因为它可以跨 Windows、Mac、Linux(并且可能还有其他端口可用)。
ADAL Python 基于流行的 Python HTTP 库。虽然可以配置代理(这不是这里的问题),但所提出的问题以及企业想要的是一种使用 Kerberos/NTLM 来验证请求的方法,同时通过代理传送请求。因此,如果您深入研究 Python HTTP 库的文档,您可以看到命名请求,其代理支持可以内联或通过环境变量配置(同样,不是 ASK)。 现在,当您深入研究代理请求时的身份验证时,该文档仅提到 HTTP 基本身份验证,而没有提及 Kerberos/NTLM 类型的身份验证。现在,如果一个人曾与任何具有安全意识的企业合作过,那么就很难获得例外。一些企业已提出这一要求,他们希望在其外部代理上的所有 Azure CLI 请求在离开外围之前对其进行身份验证(安全要求)。
当前的答案是,对于存在代理的场景,没有支持的方法来执行此操作,除非实现了身份验证处理程序来执行此操作。如果我没记错的话,这个请求完全属于 Python HTTP 库所有者。
对于仍在寻找此问题答案的人,可以在
这里
# Non-authenticated HTTP server:
HTTP_PROXY=http://10.10.1.10:1180
# Authenticated HTTP server:
HTTP_PROXY=http://username:
[email protected]:1180
# Non-authenticated HTTPS server:
HTTPS_PROXY=http://10.10.1.10:1180
# Authenticated HTTPS server:
HTTPS_PROXY=http://username:[email protected]:1180
显然不是最安全的方法,并且要小心对任何特殊字符进行 url 编码。
就我而言,我必须从变量字符串中删除协议“http|https”
谢谢,@Matus Cic 的回答解决了我的问题。 使用不带 http/https 后缀的 HTTP_PROXY/HTTPS_PROXY,这在 Linux 系统上通常是默认的。