0

通过 ADF 中的 Web 活动对 Azure Web 作业进行 MSI 身份验证给出错误 403 - 此 Web 应用程序已停止。问题,而通过基本身份验证调用相同的 Web 作业。

Web 作业作为手动触发托管在 Windows 应用服务上。

在 ADF V2 中,我创建了一个网络活动并提供了以下设置:
URL:https://<web app name>.scm.azurewebsites.net/api/triggeredwebjobs/<webjobname>/run
Method: POST
Headers: NA
Body: {}
Authentication: MSI with resource as https://management.azure.com/
  • 我已在部署 Web 作业的应用服务中启用了 MSI,并在 AAD 中确认了这一点。
  • MSI 也在 ADF 上启用,在 AAD 中确认。
  • 在应用程序服务中,我在ACCESS CONTROL中添加了我的 ADF ,角色为Contributor并尝试了其他几个角色,例如Managed Application Operator Role

注意:在分配角色和启用 MSI 后,我也重新启动了我的应用服务。

这是 adf 中网络活动的代码:

{
"name": "pipeline1",
"properties": {
    "activities": [
        {
            "name": "Web1",
            "type": "WebActivity",
            "dependsOn": [],
            "policy": {
                "timeout": "7.00:00:00",
                "retry": 0,
                "retryIntervalInSeconds": 30,
                "secureOutput": false,
                "secureInput": false
            },
            "userProperties": [],
            "typeProperties": {
                "url": "https://<webappname>.scm.azurewebsites.net/api/triggeredwebjobs/<webjobname>/run",
                "method": "POST",
                "authentication": {
                    "type": "MSI",
                    "resource": "https://management.azure.com/"
                }
            }
        }
    ],
    "annotations": []
},
"type": "Microsoft.DataFactory/factories/pipelines"
}

我希望身份验证成功并且应该触发 Web 作业,但实际上 Web 应用程序没有通过 MSI 身份验证被调用,并且活动失败并输出错误 403 - 此 Web 应用程序已停止。

4

2 回答 2

1

您需要将 更改urlhttps://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{name}/triggeredwebjobs/{webJobName}/run?api-version=2016-08-01,然后它会正常工作。

参考 - Web 应用程序 - 运行触发的 Web 作业

测试结果

在此处输入图像描述

在此处输入图像描述

于 2019-08-16T02:45:40.040 回答
-1

大多数 MSDN 文档指出,为了对 SCM 站点进行身份验证,应使用基本身份验证。参考:https ://github.com/projectkudu/kudu/wiki/WebJobs-API#invoke-a-triggered-job

但我能够发现,为了使用 MSI 对 SCM 站点进行身份验证,资源应该是“ https://management.core.windows.net/ ”而不是“ https://management.azure.com ”。

因此,要回答上述问题,只需将 Authentication 中的资源更改如下:

Authentication: MSI with resource as https://management.azure.com/

参考链接:https ://github.com/projectkudu/kudu/issues/2957#issuecomment-477890719其中指出

请求 MSI 令牌时,您必须将 https://management.core.windows.net/定义为资源而不是 https://management.azure.com/

我当然相信这可能有助于使用 MSI 身份验证访问 KUDU。

于 2019-08-17T11:16:40.227 回答