Azure CLI 的代理身份验证

问题描述 投票:0回答:4

对于Azure CLI,有没有办法使用代理身份验证?我们的代理服务器需要对所有请求进行身份验证,但我没有看到任何相关文档。使用 HTTP_PROXY 环境变量,我可以指示 az cli 使用特定的代理服务器,但我无法将其定义为使用代理身份验证,或者是否有办法做到这一点,我不知道。我们的代理身份验证必须通过 NTLM 或 Kerberos 完成。

相关团队可以检查一下我们是否可以配置az cli以使用Kerberos代理身份验证吗?

azure authentication proxy command-line-interface kerberos
4个回答
4
投票

答案的根源在于 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 库所有者。

对于仍在寻找此问题答案的人,可以在

这里

2
投票
找到答案

# 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”


0
投票

谢谢,@Matus Cic 的回答解决了我的问题。
使用不带 http/https 后缀的 HTTP_PROXY/HTTPS_PROXY,这在 Linux 系统上通常是默认的。

0
投票

© www.soinside.com 2019 - 2024. All rights reserved.