首页 > 解决方案 > 在 Azure Devops Pipeline for SPN 中使用 powershell 自动化 Connect-AzureAD

问题描述

我正在执行以下操作以使用 Azure devops Pipeline for Powershell 任务连接到 AAD

  1. 创建了一个 SPN 并授予了图表的权限
  2. 在使用下面的代码使用访问令牌进行连接时,它显示错误管道

我的代码很简单如下

    Install-Module -Name "AzureAD" -Force
   $context = [Microsoft.Azure.Commands.Common.Authentication.Abstractions.AzureRmProfileProvider]::Instance.Profile.DefaultContext
   $graphToken = [Microsoft.Azure.Commands.Common.Authentication.AzureSession]::Instance.AuthenticationFactory.Authenticate($context.Account, $context.Environment, $context.Tenant.Id.ToString(), $null, [Microsoft.Azure.Commands.Common.Authentication.ShowDialog]::Never, $null, "https://graph.microsoft.com").AccessToken
   $aadToken = [Microsoft.Azure.Commands.Common.Authentication.AzureSession]::Instance.AuthenticationFactory.Authenticate($context.Account, $context.Environment, $context.Tenant.Id.ToString(), $null, [Microsoft.Azure.Commands.Common.Authentication.ShowDialog]::Never, $null, "https://graph.windows.net").AccessToken      
  
   Write-Output "Hi I'm $($context.Account.Id)"
   Write-Output "AAD Token is  $($aadToken)"
   Connect-AzureAD -TenantId $context.tenant.id -AadAccessToken $aadToken -MsAccessToken $graphToken -AccountId $context.Account.Id 
   $outputusers= get-azureaduser -Top 5
   Write-Output "The users are listed $($outputusers)"

如果我遗漏了任何细节,请告诉我。SPN 只是一个 devops 管道,它不是 AAD 用户。因此令牌可能对身份验证无效。

我需要做什么才能让 SPN 成为 AAD 中的用户。请指教

标签: powershellazure-devopsazure-active-directoryazure-ad-graph-api

解决方案


从您的代码中,您使用Get-AzureADUser调用 Azure AD Graph,因此尝试添加 Azure Active Directory GraphDirectory.Read.All权限,可以解决您的问题。

在此处输入图像描述 在此处输入图像描述

顺便说一句,该-MsAccessToken $graphToken命令可以省略。


推荐阅读