powershell - 在 Azure Devops Pipeline for SPN 中使用 powershell 自动化 Connect-AzureAD
问题描述
我正在执行以下操作以使用 Azure devops Pipeline for Powershell 任务连接到 AAD
- 创建了一个 SPN 并授予了图表的权限
- 在使用下面的代码使用访问令牌进行连接时,它显示错误管道
我的代码很简单如下
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 中的用户。请指教
解决方案
推荐阅读
- azure-devops - 如何仅在合并的拉取请求上触发任务?
- python - 如何修复此 AttributeError:“NoneType”对象没有属性“文本”?
- database - 如何优化 InfluxQL 查询以加载 Influxdb 1.8 上的所有内核
- cypress - 为什么我不能通过返回 false 来打破柏树中的每个循环?
- java - 日志行需要 10 毫秒
- http - 请求到达服务器计算机进入 Netty http 服务器应用程序后会发生什么?我想知道技术细节
- java - 将 json obects 列表压缩为 JAVA 中的 gzip 文件
- mysql - 如何在 Laravel 中定义三向关系
- mysql - 需要帮助将此 JSON 数据转换为 MySQL 的数组
- arrays - 稀疏矩阵每一行中非零元素的平均值