【问题标题】:How to get user token silently for Azure DevOps and use it for accessing DevOps REST APIs?如何为 Azure DevOps 静默获取用户令牌并将其用于访问 DevOps REST API?
【发布时间】:2020-01-08 21:37:50
【问题描述】:

问题陈述: 我正在尝试在 C# 控制台应用程序中创建一个模块,我打算在 Azure Bot 运行后插入并使用它。我想将我的机器人与 Azure DevOps 连接起来。我可以使用 PAT 令牌做到这一点,但我需要机器人仅显示登录用户有权访问的 DevOps 资源。

尝试:

  • 我可以使用 PAT 令牌获取必要的详细信息。无论登录的用户详细信息如何,它都会为我提供所有项目。
  • 我尝试为登录用户使用 Azure AD 令牌,但在尝试使用它调用 Azure DevOps REST API 时出现未经授权的错误
  • 参考this 文章,但我无法静默获取授权码或令牌。

总而言之,我基本上是在寻找:

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

【问题讨论】:

    标签: c# azure azure-devops azure-bot-service


    【解决方案1】:

    个人访问令牌从创建它的用户那里继承权限。因此,如果您作为项目集合管理员创建一个令牌,该令牌与您一样具有 samwe 权限。

    遗憾的是,没有可用于在运行时创建令牌的公共 REST API。它们必须由登录用户通过门户创建。

    另一个选项是使用OAuth。 OAuth 要求用户登录,然后为您提供可以在 REST API 中使用的令牌。不幸的是,这不符合您的标准,即用户无需执行任何操作,

    我看到的唯一其他方法是将用户添加到他们有权访问的资源中。然后从您的 REST API 中,您可以使用管理员 PAT 检查他们的权限,然后只检索他们允许查看的内容。这也不是很漂亮:-(

    【讨论】:

    • Wouter - 非常感谢您的意见。所以基本上没有一个直接的解决方案来实现这一点。收集所有用户并管理组、资源和访问权限的任务对于集成解决方案来说将是繁琐的开销。在 Bot 界面的 SSO 方面,我也有类似的经历。从集成/开发人员的角度来看,SSO 体验似乎与 Bot 接口和 Azure DevOps 等服务没有无缝连接。
    • 恐怕你是对的 :( PAT 是目前最好的。所有 SSO 方法都不适用于非用户交互的东西。我希望微软能改进这一点。允许我们添加服务帐户用户或支持 OAuth 的东西会很棒。
    • 您是否知道是否已经提出了可以投票的 SSO 请求?
    猜你喜欢
    • 2020-06-16
    • 2020-04-05
    • 2020-04-23
    • 2020-07-27
    • 2019-10-14
    • 2021-10-20
    • 2019-10-24
    • 2021-08-05
    • 2019-10-28
    相关资源
    最近更新 更多