Azure devops 使用Azure AD令牌向Azure DevOps进行身份验证

Azure devops 使用Azure AD令牌向Azure DevOps进行身份验证,azure-devops,azure-active-directory,Azure Devops,Azure Active Directory,我正在写一个web API。其中一件事是使用Team Foundation核心DLL命中Azure DevOps。由于我们有Azure AD(Azure Active Directory)的支持,我想我可以让我的应用程序针对Azure AD进行身份验证,并将该令牌/授权用于Azure DevOps。这并不是它将使用的唯一服务进行身份验证。我能做这个吗?我还可以通过什么方式实现这个目标?我不想在Azure AD每次访问一个独特的服务时提示用户对其进行授权,特别是因为它们都有Azure AD的支持。

我正在写一个web API。其中一件事是使用Team Foundation核心DLL命中Azure DevOps。由于我们有Azure AD(Azure Active Directory)的支持,我想我可以让我的应用程序针对Azure AD进行身份验证,并将该令牌/授权用于Azure DevOps。这并不是它将使用的唯一服务进行身份验证。我能做这个吗?我还可以通过什么方式实现这个目标?我不想在Azure AD每次访问一个独特的服务时提示用户对其进行授权,特别是因为它们都有Azure AD的支持。

是的,您可以这样做

注意:我假设您的API由Azure AD保护,并且为了调用您的API,用户需要使用Azure AD登录到您的API客户端

假设您希望您的API不仅向Azure DevOps发出请求,还向Microsoft Graph发出请求(以Azure AD保护的另一个API为例——这当然可以是任何其他API,包括您自己的第二个API),并且您希望这些请求代表登录用户。即,代表在API接收的访问令牌中标识的用户

您可以执行以下操作(下图):

  • 用户使用Azure AD登录到客户端应用程序,客户端应用程序请求并访问您的API令牌
  • 客户端应用程序在发出任何API请求(例如,在授权标头中)时向您的API提供此访问令牌,并且您的API执行所有必要的验证
  • 您的API获取它收到的访问令牌,并将其呈现给Azure AD,从呈现的访问令牌中“代表”登录用户请求新的访问令牌,但用于不同的资源:Azure DevOps。假设所有正确的权限和同意都已到位,Azure AD将使用Azure DevOps的访问令牌响应API
  • API在向Azure DevOps发出请求时提供此访问令牌
  • 您的API还希望调用Microsoft Graph(例如,获取有关用户的更多详细信息,或发送电子邮件或其他信息),因此API再次转到Azure AD,显示在(2)中收到的访问令牌,要求向Microsoft Graph提供令牌。如果同意和权限签出,Azure AD将遵守
  • 您的API在向Microsoft Graph发出请求时使用第三个访问令牌
  • +----------++-----------++-----------------+
    (用户)+-->+-(2)--->+-(4)-->|
    
    |客户端| |你的API,所以你说我可以使用相同的Azure AD令牌访问任何Azure AD身份验证服务(例如Azure Devops)不,我是说服务可以将一个用于自身的Azure AD访问令牌交换为另一个受Azure AD保护的资源的访问令牌。是的,这就是我要传达的意思。使用AAD令牌获得Azure Devops的身份验证并获得Azure Devops令牌我的权限使用什么?我目前拥有我在setup.auth中使用的内容
    login.microsoftonline.com/${appID}
    如果它只是login.microsoftonline.com,或者我的azure devops Urit不应该是
    ../{app id}
    ,那是行不通的。权限应为
    https://login.microsoftonline.com/{租户id或域名}
              +--------+      +-----------+       +-----------------+
    (User)+--->        +-(2)-->           +-(4)--->                 |
              | Client |      | Your API  <-------+  Azure DevOps   |
              |        <------+           |       |                 |
              +----^---+      |           +-(6)+  +-----------------+
                   | |        |           <--+ |
                   | |        +---^----^--+  | |  +-----------------+
                   (1)          (3)   (5)    | +-->                 |
                   | |           ||   ||     +----+ Microsoft Graph |
                   | |        +--v----v--+        | (or other API)  |
                   | +-------->          |        |                 |
                   |          | Azure AD |        +-----------------+
                   +----------+          |
                              +----------+