如何在Azure DevOps中默默获取用户令牌,并将其用于访问DevOps REST API?

9 浏览
0 Comments

如何在Azure DevOps中默默获取用户令牌,并将其用于访问DevOps REST API?

问题陈述:

我正在尝试在C#控制台应用程序中创建一个模块,一旦它开始运行,我就打算在Azure Bot中插入和使用它。我想将我的机器人与Azure DevOps连接起来。我能够使用PAT令牌做到这一点,但我希望机器人只显示登录用户有权限访问的DevOps资源。

尝试:

  • 我能够使用PAT令牌获取必要的详细信息。它给我所有项目,而不管登录用户的详细信息。
  • 我尝试使用已登录用户的Azure AD令牌,但在尝试使用它调用Azure DevOps REST API时,它给我未经授权的错误。
  • 参考了这篇文章,但我无法静默获取授权代码或令牌。

总结一下,我基本上想要:

  • 静默获取Azure DevOps的用户令牌(无需用户点击确认)
  • 使用REST API获取项目、工作项等详细信息。
0
0 Comments

问题的原因是Azure DevOps没有提供一个公共的REST API来在运行时创建用户令牌,因此用户必须通过登录到门户来创建令牌。此外,使用OAuth也不能满足用户不需要进行任何操作的要求。

解决方法是将用户添加到他们具有权限的资源中,然后通过使用管理员PAT来检查他们的权限,并仅检索他们被允许看到的内容。然而,这并不是一个优雅的解决方法。

文章如下:

如何在Azure DevOps中静默获取用户令牌并用于访问DevOps REST API?

在Azure DevOps中,用户令牌是继承创建它的用户的权限的。因此,如果您作为项目集合管理员创建了一个令牌,那么该令牌将具有与您相同的权限。

不幸的是,Azure DevOps没有提供一个公共的REST API来在运行时创建令牌。令牌必须由已登录的用户通过门户来创建。

另一个选择是使用OAuth。OAuth要求用户登录,然后为您提供一个可以在REST API中使用的令牌。然而,这并不符合您希望用户无需进行任何操作的要求。

我唯一看到的其他方法是将用户添加到他们具有权限的资源中。然后,您可以使用管理员PAT来检查他们的权限,然后仅检索他们被允许看到的内容。然而,这也不是一个非常好的解决方法。

您的回答中提到的服务账户用户或支持OAuth的用户添加将是很好的改进。

目前,PATs是最好的解决方法。所有SSO方法都不适用于非用户交互式的操作。我希望Microsoft能够改进这一点。允许我们添加服务账户用户或支持OAuth将是很好的。

您是否知道是否已经提出了关于可投票的SSO请求?

以上就是如何在Azure DevOps中静默获取用户令牌并用于访问DevOps REST API的原因和解决方法。

0