Azure DevOps API 使用通过 Azure Entra ID 应用程序通过 OAuth 2.0 流获取的访问令牌来响应“对象已移动”页面

问题描述 投票:0回答:1

我的设置

  1. 我已在 Azure Active Directory 中创建了一个多租户应用程序。我已在 “API 权限” 选项卡中为此应用程序注册 Azure DevOps API 添加了两个范围:

    user_impersonation
    vso.profile

  2. 我已经实现了OAuth2身份验证代码流程:

    1. 我使用下一个URL进行授权:

      https://login.microsoftonline.com/common/oauth2/v2.0/authorize? 
      response_type=code
      &client_id=<MY_APP_CLIENT_ID>
      &scope=offline_access%20https%3A%2F%2Fapp.vssps.visualstudio.com%2Fuser_impersonation%20https%3A%2F%2Fapp.vssps.visualstudio.com%2Fvso.profile
      &redirect_uri=<MY_REDIRECT_URI>
      

      注意,我在查询参数中使用与应用程序中配置的相同范围:

      https://app.vssps.visualstudio.com/user_impersonation

      https://app.vssps.visualstudio.com/vso.profile

      以及在

      offline_access
      响应中接收
      refresh_token 
      的额外
      /token
      范围。

    2. 我使用下一个 URL 进行代码(到令牌)交换:

      https://login.microsoftonline.com/common/oauth2/v2.0/token

    3. 将代码交换为令牌后,我收到一对具有下一个范围的访问/刷新令牌:

       https://app.vssps.visualstudio.com/vso.code_full
       https://app.vssps.visualstudio.com/vso.code_status
       https://app.vssps.visualstudio.com/vso.code_write
       https://app.vssps.visualstudio.com/vso.profile 
       https://app.vssps.visualstudio.com/vso.project
      

问题

我正在尝试获取Profile API和其他Azure DevOps Repos API,例如存储库列表提交详细信息。 但我总是收到状态为302的响应和标题为对象已移动的 HTML 页面。

问题

  1. 我在应用程序注册过程中是否遗漏了某些内容,或者是否遗漏了 OAuth2 流程中的某些参数?

  2. 当我尝试执行相同的流程,但使用此范围时:

    offline_access 499b84ac-1321-427f-aa17-267ca6975798/.default

    我可以使用 200 状态代码进行 API 调用并从 Azure API 检索数据。这是一些错误吗?正如我所看到的,数字
    499b84ac-1321-427f-aa17-267ca6975798
    表示资源 id
    https://app.vssps.visualstudio.com

  3. 当我使用其他租户的用户凭据时 - 在输入用户电子邮件并点击 Next 按钮后立即收到错误:

    This username may be incorrect. Make sure you typed it correctly. Otherwise, contact your admin.
    我怎样才能让它与用户一起工作 来自另一个租户?

  4. 我是否应该使用旧版 Azure DevOps OAuth 2.0 来访问 Azure DevOps API 而不是 Microsoft Entra ID 应用程序?

azure azure-devops azure-active-directory microsoft-entra-id azure-entra-id
1个回答
0
投票

对于 Q1 和 Q2:“499b84ac-1321-427f-aa17-267ca6975798”是 Azure DevOps API 资源的唯一范围标识符。令牌的

scope
应为
499b84ac-1321-427f-aa17-267ca6975798/.default
,它提供对 Azure DevOps Services REST API 的访问。这不是一个错误。

对于Q3:根据错误信息,您的帐户和许可证似乎有问题。请检查您是否可以使用此受影响的帐户访问您的 Azure Entra ID。

第四季度:根据他的文档,建议新应用程序开发人员应使用 Microsoft Entra ID OAuth 与 Azure DevOps 集成。

© www.soinside.com 2019 - 2024. All rights reserved.