gpt4 book ai didi

python - 如何通过 Python 脚本对 Azure 应用服务的用户进行身份验证?

转载 作者:行者123 更新时间:2023-12-03 03:38:46 25 4
gpt4 key购买 nike

我有一个 Python 脚本,应该使用链接从 Web 资源下载数据。碰巧资源位于受 Active Directory 保护的 Azure 应用服务中。我的用户帐户被允许访问链接并下载数据(我可以从网络浏览器手动执行此操作,但希望自动执行此过程)。 Python 脚本使用 requests 库。我不知道如何正确进行身份验证,因为当我尝试运行脚本时,我得到:

Error 403 - Forbidden
The web app you have attempted to reach has blocked your access.

使用requests进行的常规身份验证不起作用(使用auth参数或session.auth或使用HttpNtlmAuth )。我知道可以使用 VS Code 向 Azure 进行身份验证,然后使用 DefaultAzureCredential,但我不知道应该在哪里使用这个 DefaultAzureCredential 对象(因为它不起作用)与请求)。

我不需要注册整个Python应用程序或以其他方式被Azure资源识别。这只是一个下载数据的脚本,不应该被生产化。

有什么想法可以如何从 Azure 中删除数据吗?

注意:我不是此 Azure 应用程序的管理员或创建者,因此无法更改任何限制设置。

简而言之,发出请求的脚本部分如下所示:

params = {"param1": param1,
"param2": param2}
session = requests.Session()
session.auth = HttpNtlmAuth(USERNAME, PASSWORD)
url = "my-app.azurewebsites.net/the-rest-of-the-path"
response = session.get(url, params=params, verify=False)

最佳答案

如果要访问 Azure 应用服务,则必须对 Azure 应用服务进行身份验证。如果您无权访问 Azure 应用服务,我们就无法访问 Azure 资源。

一般来说,当网络服务器阻止您访问您尝试在浏览器中打开的页面时,您会收到 403 禁止错误。大多数时候你无能为力。然而,有时问题出在你身上。以下是一些可能导致此错误的点。

  • 如果您有开放的公共(public) API,并且 Azure 应用服务不允许公共(public)访问。
  • 您用于调用应用服务的应用 IP 地址未列入白名单。
  • 如果您中间有网关,它也可能会阻止您的调用。

以下是您可以尝试的可能解决方案:

  • 从网络应用的“网络”页面中删除访问限制。

  • 尝试添加 0.0.0.0/0 以授予所有人访问权限。您稍后可以根据需要添加限制。

  • 限制的顺序很重要,因此请仔细检查。如果您在批准的通话之前遇到了被阻止的通话,则可能会产生影响。

  • 您还可以基于 http header (例如 X-Forwarded-For)进行限制。请仔细检查。这也可能发生在代码中,具体取决于您处理错误的方式。 Protocol support for HTTP headers in Azure Front Door | Microsoft Docs

  • 如果您的 API 位于网关后面,请检查此项 Application Gateway integration with service endpoints

关于python - 如何通过 Python 脚本对 Azure 应用服务的用户进行身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72320755/

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