在 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/
- 我在部署 Web 作业的应用服务中启用了 MSI,并在 AAD 中确认了这一点。
- ADF 上也启用了 MSI,已在 AAD 中确认。
- 在应用程序服务中,我在 ACCESS CONTROL 中添加了我的 ADF,角色为 Contributor 并尝试了其他几个角色,例如托管应用程序操作员角色。
注意:在分配角色和启用 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。
通过 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/
- 我在部署 Web 作业的应用服务中启用了 MSI,并在 AAD 中确认了这一点。
- ADF 上也启用了 MSI,已在 AAD 中确认。
- 在应用程序服务中,我在 ACCESS CONTROL 中添加了我的 ADF,角色为 Contributor 并尝试了其他几个角色,例如托管应用程序操作员角色。
注意:在分配角色和启用 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。