在 Azure 数据工厂中使用 MSI 验证 Azure Web 作业

Authenticating Azure Web Job with MSI in Azure Data Factory

通过 ADF 中的 Web Activity 对 Azure Web 作业的 MSI 身份验证给出 错误 403 - 此 Web 应用程序已停止。 问题而同一 Web 作业正在获取通过基本身份验证调用。

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

在 ADF V2 中,我创建了一个网站 activity 并提供了以下设置:
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/

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

这是 adf 中网页 activity 的代码:

{
"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"
}

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

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

参考 - Web Apps - Run Triggered Web Job

测试结果:

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

但我发现,为了使用 MSI 验证 SCM 站点,资源应该是“https://management.core.windows.net/' and not 'https://management.azure.com”。

所以要回答上面的问题,只需更改身份验证中的资源如下:

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

参考文献 Link:https://github.com/projectkudu/kudu/issues/2957#issuecomment-477890719 指出

when requesting a MSI token, you must define https://management.core.windows.net/ as resource not https://management.azure.com/.

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