无需用户代表从自定义 azure webapp api 调用 azure DevOps API

Posted

技术标签:

【中文标题】无需用户代表从自定义 azure webapp api 调用 azure DevOps API【英文标题】:Call azure DevOps API from custom azure webapp api without user behalf 【发布时间】:2021-12-18 00:40:19 【问题描述】:

我有一个 Azure WebApp,它需要调用 Azure DevOps API 来触发构建管道。 我唯一的问题是找出从我的 web api 针对 azure devops API 进行身份验证的正确方法。

我应该为此使用服务主体帐户还是托管身份? 我是否必须在 Azure AD 中创建服务帐户,授予他 Azure DevOps 的权限?

我只有一个路由然后调用 DevOps API,所以我需要在路由被 WebApp 的 Principal 调用时进行身份验证。

我有点迷失如何正确地做这件事,因为关于 auth 主题的信息太多了。

目前我在 Azure KeyVault 的 PAT 中使用我的个人帐户,这只是一个临时解决方案。

感谢和问候

【问题讨论】:

【参考方案1】:

如果您查看此 Choose the right authentication mechanism 文档,您会发现 Web App API 针对 azure DevOps API 提供了几种类型的身份验证机制。

但主要建议使用 Azure DevOps Services 客户端库进行身份验证和访问 Azure DevOps Services 资源。您可以对 Web 应用用户进行身份验证以进行 REST API 访问,这样您的应用就不会继续询问用户名和密码。

Azure DevOps Services 使用 OAuth 2.0 协议为用户授权您的应用并生成访问令牌。当您从应用程序调用 REST API 时使用此令牌。为该用户调用 Azure DevOps 服务 API 时,请使用该用户的访问令牌。访问令牌过期,所以如果访问令牌过期,请刷新它。

我建议阅读此Authorize access to REST APIs with OAuth 2.0 文档以获取更多解释和实现结果的详细方法。

如果客户端库中缺少任何必需的功能,MSAL 是与我们的 REST API 一起使用的替代身份验证机制。

【讨论】:

您好,感谢您的帮助。问题是:我没有经过身份验证的用户,只有一个调用 DeVOps API 的 Web 应用程序。

以上是关于无需用户代表从自定义 azure webapp api 调用 azure DevOps API的主要内容,如果未能解决你的问题,请参考以下文章

在 Django 中,是不是可以从自定义标签中访问当前用户会话?

从自定义视觉导出标签

Application Insights 从自定义数据源中清除数据

从自定义域使用反向代理和 SSL 访问 Service Fabric

从自定义地图链接添加 Google 地图坐标/标记

Azure Stack PaaS-网站(WebApp)背后是什么原理?