我创建了一个新的Azure应用程序,但我没有添加任何与Azure DevOps相关的权限。
然后,我将此应用程序添加到 Azure DevOps 组织中的 Project Collection Administrators 组中。我尝试使用 REST API 创建一个项目,并且成功了。
我很困惑为什么它能够在不添加任何 Azure DevOps 权限的情况下成功进行 REST API 调用。
首先,Entra ID 中的应用程序可以使用同一租户中任何 API 的客户端凭据流获取访问令牌,而无需为其分配权限。 这使得 API 本身进行授权的场景成为可能。
其次,当您在 Azure DevOps 中分配应用程序时,其 id/objectId 存储在那里。访问令牌也包含此 ID,因此 Azure DevOps 知道正是该应用程序已被分配角色,因此允许执行该操作。