Azure AD 身份提供程序中的 VSO 范围

Posted

技术标签:

【中文标题】Azure AD 身份提供程序中的 VSO 范围【英文标题】:VSO scope in Azure AD identity provider 【发布时间】:2021-02-03 14:33:17 【问题描述】:

我正在构建一个机器人,它将调用 Azure DevOps 来更新工作项(需要范围 - vso.work_write Update Work item)。为此,我想让用户使用 OAuth 进行身份验证。在Authentication doc 之后,我创建了机器人通道注册,然后是身份提供者,然后在我的机器人中注册了身份提供者。现在,当我在 API 权限下转到身份提供者 -> 添加权限 -> Azure Devops 时,我看到的只是“user_impersonation”权限,而我的要求是添加 vso.work_write 权限来修改 ado 工作项。

如何向我的身份提供者添加 vso.work_write 权限,以便我的机器人在构建令牌时获取所需的范围?或者有什么方法可以在机器人代码中手动输入范围?

注意:- 我尝试提供“user_impersonation”范围并使用该范围生成令牌,但我仍然得到 401。

编辑 1 :- 我能够生成一个 jwt 令牌,但使用该令牌我无法访问 ado 端点,这就是为什么我怀疑它只是一个范围问题。

【问题讨论】:

嗨@Ashish Agarwal。这张票有更新吗?如果答案能给你一些帮助,请随时告诉我。只是提醒this。 嘿@KevinLu-MSFT 我实际上在答案和您提到的另一张票中都遵循了步骤,但它没有帮助。作为一种解决方法,我在 bot 服务中创建了一个通用 OAuth 提供程序,其端点为令牌 url,刷新 url 指向我的 localhost,其中构建了一个控制器来处理此请求。 感谢您的更新。您可以添加答案以分享您的方法并接受答案。这将对其他成员有所帮助。谢谢。 【参考方案1】:

您可以尝试以下步骤:

    您可以使用 URL:https://token.botframework.com/.auth/web/redirect 创建应用注册。

    user_impersonation授予APP并生成secret。

    转到Bot服务->设置->OAuth连接设置->添加设置

选择Azure Active Directory并输入信息。

Scopes:openid、电子邮件、个人资料和offline_access。你可以选择openid

根据您的描述,vso.work_write 范围存在于 Outh Token 和 PAT (Personal Access token) 中。

您也可以参考the doc 生成 Azure Devops 输出令牌并在机器人服务设置中使用它。

这里a ticket也有类似问题,可以参考一下。

【讨论】:

以上是关于Azure AD 身份提供程序中的 VSO 范围的主要内容,如果未能解决你的问题,请参考以下文章

如何使用身份服务器 3 和 microsoft 团队应用程序使用 Azure AD 令牌进行身份验证

如何验证 Azure AD 访问的 appid

如何使用 Azure AD 对 VueJS 应用程序进行身份验证?

Unity for Android 中的 Azure AD 身份验证出错

使用 Xamarin Forms 使用自签名证书对 Azure AD 进行身份验证

Hashicorp Vault OIDC 身份验证方法与 Azure AD 错误验证签名