【问题标题】:Automate Connect-AzureAD using powershell in Azure Devops Pipeline for SPN在 Azure Devops Pipeline for SPN 中使用 powershell 自动化 Connect-AzureAD
【发布时间】:2020-11-06 21:25:07
【问题描述】:

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

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

我的代码很简单如下

    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 中的用户。请指教

【问题讨论】:

    标签: powershell azure-devops azure-active-directory azure-ad-graph-api


    【解决方案1】:

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

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

    【讨论】:

    • Carl Zhao 对于身份验证问题,这是一个非常棒的答案。谢谢
    • @CarlZhao 是 Microsoft Graph API 与 Azure Active Directory Graph 的 Directory.Read.All 权限相同吗?也就是说,这两个API你选哪个都无所谓,只要是权限Directory.Read.All?
    • 不行,这两个端点的功能不同,所以需要选择Azure Active Directory Graph api下的Directory.Read.All权限。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-30
    • 1970-01-01
    • 2019-03-07
    • 2021-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多