当前位置: 首页 > 知识库问答 >
问题:

无法对 Maven 进行身份验证以从 ADO 管道访问 Azure 项目

田权
2023-03-14

我有一个在云中运行的azure管道,在那里,我基本上想运行黑鸭扫描。为了简化操作,黑鸭任务运行 maven 命令来构建依赖关系树。为了做到这一点,它会扫描我的pom.xml中的所有依赖关系。

我目前在Azure DevOps上有2个feeds。1个用于存储外部库,1个用于存储内部开发内部库。所有外部的依赖项,maven命令都能够检索,但是内部的依赖项不能。我一直得到一个401未授权的错误。

我已经更新了pom.xml,以包含连接到Azure工件的凭据,如下所示。我还更新了settings.xml文件,以包含连接。在运行maven命令之前,我添加了Maven身份验证任务

Yml管道:

- task: PowerShell@2
      displayName: "Modify Settings.xml"
      inputs:
        targetType: 'inline'
        script: |
          $xmlPom = [xml]"<server>
                <id>Pack-All</id>
                <username>Bob</username>
                <password>$(ado.pat)</password>
              </server>"
              
          $file = "settings.xml"
          $origin = "$(M2_HOME)\conf"

          $xdoc = new-object System.Xml.XmlDocument

          $fileXml = resolve-path(“$origin\$file”)

          $xdoc.load($fileXml)

          $xdoc.settings.servers.AppendChild($xdoc.ImportNode($xmlPom.server, $true))

          $xdoc = [xml] $xdoc.OuterXml.Replace(" xmlns=`"`"", "")

          $xdoc.Save(“$origin\$file”)
- task: MavenAuthenticate@0
      displayName: 'Maven Authenticate'
      inputs:
        artifactsFeeds: 'Pack-All'
- task: SynopsysDetectTask@2  
      displayName: "Run Black Duck analysis"
      condition: and(succeeded(), eq('${{ parameters.blackduck }}', 'true'))
      continueOnError: true
      inputs:
        Products: 'BD'
        BlackDuckService: 'Black Duck'
        DetectVersion: 'latest'
        DetectArguments: '--detect.project.name=$(Build.Repository.Name)Test --detect.binary.scan.file.path=$(Build.SourcesDirectory)\app.war --detect.maven.build.command=-DmavenFeedAuthenticate=true'

黑鸭任务执行的Maven命令:

C:\ProgramData\chocolatey\lib\maven\apache-maven-3.6.3\bin\mvn.cmd -DmavenFeedAuthenticate=true dependency:tree -T1

错误日志:

[ERROR] Failed to execute goal on project dimload-ms-app-agg: Could not resolve dependencies for project ca.test-ms-app-agg:war:0.0.1-SNAPSHOT: Failed to collect dependencies at ca.cn.boot:helpers:jar:0.4.28950: Failed to read artifact descriptor for ca.test.boot:helpers:jar:0.4.28950: Could not transfer artifact ca.test.boot:helpers:pom:0.4.28950 from/to Test-All (https://pkgs.dev.azure.com/Test-Int/_packaging/Pack-All/maven/v1): Authentication failed for https://pkgs.dev.azure.com/Test-Int/_packaging/Pack-All/maven/v1/ca/test/boot/helpers/0.4.28950/helpers-0.4.28950.pom 401 Unauthorized -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/DependencyResolutionException

共有1个答案

陈淳
2023-03-14

从Yaml Sample中,您添加了MavenAuthenticate任务。此任务将自动生成设置。目标提要的xml。

所以你不需要手动添加这个文件(settings.xml)。这也可以帮助你简化你的代码。

https://pkgs.dev.azure.com/ 的身份验证失败。...401 未经授权

此问题的可能原因是生成服务帐户对源没有足够的权限。

您可以尝试以下步骤:

>

  • 导航到“工件”-

    在目标源中将项目生成服务(项目名称生成服务(组织名称))设置为参与者角色。

    或者,您可以启用“允许项目范围的生成”选项。

    另一方面,从提要URL来看,它似乎是一个组织范围的提要。

    您可以在项目设置中检查将作业授权范围限制为当前项目的非发布管道选项是否已启用-

    您可以尝试禁用该选项。

    注意:要禁用此选项,您需要在<代码>组织设置-中禁用该选项

  •  类似资料:
    • null 身份验证工作流会是什么样子?有任何可用的例子吗?我们可以通过使用MSAL来实现吗? 假设我们已经创建了一个Azure密钥库,并在该库中保存了一些秘密。如何在Windows 10下运行的桌面应用程序中实现以下功能: 当前Windows用户是Azure AD组GroupA的一部分,位于Azure密钥库的同一承租人之下。 当当前用户从同一用户会话启动桌面应用程序时,应用程序可以访问所述密钥库中

    • ii)$jboss_home/bin/kcadm.sh配置凭据--服务器http://localhost:8080/auth--realm master-user uadmin--password${UADMIN_PWD} iii)$jboss_home/bin/kcadm.sh create realms-s realm=myrealm-s enabled=true 最重要的是- 对于领域创建过

    • 我已经在azure中创建了一个web应用,我正在使用azure AD身份验证(OpenID Connect)对我的web应用进行身份验证。但我无法在少数机器上验证web应用。 在一些机器中,它(AAD认证)在谷歌chrome中工作,而不是在IE、Edge、Firefox中工作。 删除了所有cookie和声明 清除会话并在私有模式下测试 当我试图用Azure AAD登录时。我收到了错误消息,比如“我

    • 直到昨天,我还没有遇到任何关于gsutil工具的问题,我有读写的权限,但昨天每当我尝试运行gsutil命令时,它突然开始说: 我试图与之进行身份验证的用户是项目的所有者。 我希望你能帮助我。

    • 问题内容: 简短的问题: 我在.NET中有一个Web API服务,而一个站点仅由HTML和AngularJS组成。 如何仅对我的网站授权给我的服务? 我正在寻找一个似乎很常见但不是常见问题的安全答案。在最近的日子里,我读了很多答案,想法和各种各样的东西,但是找不到解决方案。 假设我有一个来自MS的Web Api服务(最新的)。所以我必须要消耗它的应用程序。让我们定义两个方案。 方案1: 在同一个I