【问题标题】:Obtain OAuth token using Service Connection使用服务连接获取 OAuth 令牌
【发布时间】:2020-10-15 15:57:43
【问题描述】:

我正在使用 Azure DevOps 部署 Web 应用并为 SQL 数据库执行数据库迁移。我有一个服务连接设置,并且能够使用 Azure CLI 部署 Azure 资源,例如

- task: AzureCLI@2
  displayName: 'Deploy Azure resources'
  inputs:
    azureSubscription: 'My Service Connection'
    scriptType: 'bash'
    scriptLocation: inlineScript
    inlineScript: ./deploy.sh

现在,我想执行数据库迁移,并且我想使用服务连接进行身份验证(应用注册已被授予访问 SQL 数据库的权限)。我的理解是我可以使用 OAuth 令牌登录到 SQL 数据库 - 我的问题是如何使用服务连接获取该令牌。

请注意,我无法将客户端密码添加到 Azure 中的服务主体,因此无法使用client_secret/oauth2/token 进行 REST 调用(我在企业空间工作,事情已被锁定下)。

鉴于管道可以访问 Azure DevOps 服务连接,我的感觉是必须有某种方法可以使用它来获取对 https://database.windows.net/ 资源有效的 OAuth 令牌 - 但如何?

【问题讨论】:

    标签: oauth azure-devops azure-service-principal


    【解决方案1】:

    您可以尝试以下情况的解决方案:Azure Pipeline connect to SQL DB using service principal

    添加检索不记名令牌的 Azure CLI 任务。然后通过 这是使用令牌的 Azure Powershell 任务。

    $token= & az account get-access-token --resource=https://database.windows.net --query accessToken
    Write-Host("##vso[task.setvariable variable=sqlToken]$token")
    

    【讨论】:

    • 啊!所以你的意思是在AzureCLI@2 任务中将其作为inlineScript 运行?
    • 是的,你可以试试。
    猜你喜欢
    • 1970-01-01
    • 2013-07-21
    • 1970-01-01
    • 2019-04-06
    • 2016-07-04
    • 2016-08-24
    • 1970-01-01
    • 2017-03-02
    • 2020-10-11
    相关资源
    最近更新 更多