我正在尝试在Azure Pipelines中运行Azure Resource Group Deployment task。我已经部署了Azure Pipelines self-hosted agent on an Azure VM running Windows,并且在我的Azure DevOps组织中已经建立了Azure Resource Manager service connection to a VM with a managed service identity。
但是,当尝试使用具有托管身份的服务连接来配置Azure资源组部署任务时,出现以下错误:
GetUserAccessToken:无法获取标识的访问令牌。 AAD返回了静默失败。
屏幕截图:
我已经确认我已向目标资源组授予对VM的托管身份的访问权限(提供者):
服务连接的范围也仅限于Azure订阅:
感谢您对诊断此问题的任何帮助。谢谢!
答案 0 :(得分:2)
如果这对其他人有用,则在通过Azure DevOps修改服务连接时遇到类似的问题。查理·布朗(Charlie Brown)提供的解决方案为我指明了正确的方向:AAD中的用户不会自动添加到Azure DevOps企业应用程序中,因此,如果遇到此问题,可能意味着您需要添加尝试添加该用户或组的用户或组。通过DevOps访问它。
就我而言,我只是通过Azure门户-> Azure Active Directory->企业应用程序-> Azure DevOps添加了自己以及所有者和用户。
我不必创建其他用户,也无需使用MFA进行任何修改。
答案 1 :(得分:0)
问题似乎是由于已通过Azure DevOps身份验证的用户帐户而引起的,该用户帐户正在检索订阅信息。 Azure DevOps 不使用托管身份来检索订阅信息。
尤其是,我原来的Azure DevOps用户帐户已打开MFA以对Azure订阅进行身份验证(例如,portal.azure.com),但未已打开MFA以对Azure DevOps进行身份验证(例如dev.azure.com/)。我认为这是导致无法获取访问令牌的问题:
我在Azure AD中创建了一个不同的用户帐户,向其授予我的Azure DevOps组织的访问权限,并确保此新用户帐户具有对目标订阅的读权限,并且未打开MFA 强>。这解决了使用托管身份时获取订阅信息的问题:
答案 2 :(得分:0)
我遇到此错误的情况是将服务连接添加到Azure DevOps中的管理组
GetUserAccessToken:无法获取身份访问令牌 {{GUID}}。 AAD返回了静默失败。
修复后,我将我的帐户添加为DevOps中的项目集合管理员...以下详细信息:
尝试所有可能的权限... GA,ROOT Mgmt组所有者(通过AAD设置),目标Mgmt组所有者,订阅所有者,应用程序管理员...在devops中,我是项目管理员,并且在服务中具有管理员安全性角色连接。
我在这里有一个有趣的区别,我的Azure AD家庭租户不同于我的Azure Subscription AD租户(我是B2B客户)。
我实际上试图使用一个具有与Azure订阅租户绑定的AAD的不同DevOps租户,并且它起作用了:(这使我进一步研究了不同之处。除了DevOps-> AAD链接之外,我还工作中的管理员,只有收集失败的管理员,我只有我拥有管理组所有者的权限,然后将我的帐户添加为项目收集管理员-已完成!
参考:https://developercommunity.visualstudio.com/solutions/1246044/view.html
答案 3 :(得分:-1)
会话过期后通常会发生获取访问令牌失败的情况。
要解决这些问题:
参考: