gpt4 book ai didi

azure - 是否有一种服务连接类型和相应的任务可以方便Graph API调用?

转载 作者:行者123 更新时间:2023-12-02 06:41:00 25 4
gpt4 key购买 nike

Current Azure Pipelines Task

作为 CI/CD 管道的一部分,我们希望在 AAD B2C 租户中执行几次对 GraphAPI 的调用。为了实现这一点,我们创建了一个具有所需权限的服务主体。截至目前,该管道使用标准的 powershell 任务,该任务又使用 secret 来获取 Graph API 的不记名 token 。目标类似于这篇文章:https://learn.microsoft.com/en-us/azure/active-directory-b2c/deploy-custom-policies-devops

我们即将将此授权代码扩展到其他管道,但我犹豫是否将此授权代码复制到更多地方。在 Azure DevOps 中,我可以使用变量组来提供一些帮助,但我仍然需要分享一些 Powershell 代码。

有什么东西可以将身份验证转移到 Azure DevOps 吗?类似于 Azure Powershell 任务?我仍然需要某种脚本编写能力,因为我们的 GraphAPI 调用使用存储在存储库中的数据。

一个选项是包装现有的 Powershell 任务并公开诸如 $bearerToken 之类的内容用于 API 调用,但我找不到任何现有的解决方案。

最佳答案

您可以尝试将powershell任务转换为task group (右键单击 powershell 任务,然后选择创建任务组)。然后该项目中的另一个管道可以添加任务组。您将需要在 powershell 任务中使用内联脚本,这样您就不需要在其他存储库中创建 .ps1 文件。如果您想将$bearerToken输出到后续任务中,可以使用 logging command echo "##vso[task.setvariable variable=Token]$bearerToken" 在脚本中。然后您可以在后续任务中通过 $(Token)

引用该 Token

但是您仍然需要使用变量组来存储 secret 并将其链接到其他管道。

或者,您可以在 azure powershell 任务中使用 azure powershell cli 来获取 Graph API 的承载 token ,因为 azure powershell 任务可以使用服务连接进行身份验证。您可以创建service connection使用您创建的服务主体。

然后,您可以使用服务连接中配置的 secret 在 azure powershell 任务中获取 Graph API 的 token 。请参阅下面的脚本:

$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

echo "##vso[task.setvariable variable=Token]$graphToken"

azure cli 任务的等效命令如下:

$graphToken= & az account get-access-token --resource=https://graph.microsoft.com --query accessToken

echo "##vso[task.setvariable variable=Token]$graphToken"

这样就可以创建服务连接了。并使用 azure cli 任务或 azure powershell 任务来运行上述内联脚本。并将任务转换为任务组。然后就可以在其他pipeline中使用该任务组,并在其他任务中使用该token,引用$(Token)

通过使用azure cli任务或azure powershell任务,您只需在服务连接中配置secret。您不需要暴露任务或脚本中的任何 secret 。

关于azure - 是否有一种服务连接类型和相应的任务可以方便Graph API调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62680867/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com