Mule Maven部署失败401-未授权

Mule Maven Deployment Failure 401-Unauthorized

正在尝试部署到我们的 AWS VM 实例(havng mule runtimes 3.8.5)。我们的 Jenkins 作业已触发部署并获得 401 Unauthorized。验证信用工作正常,没有特殊字符。不知道还有什么问题。有人可以从下面的日志中给我建议吗?

另一个疑问是 aws 区域是否会导致问题? (实例 运行 在西边,但在 jenkins 构建作业上显示在东边)

 Failed: 401 Unauthorized: Unauthorized
[ERROR] Failed to deploy XXXX: Failed to deploy application XXXX
org.mule.tools.maven.plugin.mule.DeploymentException: Failed to deploy application XXX
    at org.mule.tools.maven.plugin.mule.arm.ArmDeployer.deploy(ArmDeployer.java:55)
    at org.mule.tools.maven.plugin.mule.DeployMojo.deployWithDeployer(DeployMojo.java:194)
    at org.mule.tools.maven.plugin.mule.DeployMojo.arm(DeployMojo.java:177)
    at org.mule.tools.maven.plugin.mule.DeployMojo.doExecute(DeployMojo.java:154)
    at org.mule.tools.maven.plugin.mule.AbstractMuleMojo.execute(AbstractMuleMojo.java:214)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:154)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:146)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:309)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:194)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:107)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:993)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:345)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:191)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.mule.tools.maven.plugin.mule.ApiException: 401 Unauthorized: Unauthorized
    at org.mule.tools.maven.plugin.mule.AbstractMuleApi.validateStatusSuccess(AbstractMuleApi.java:78)
    at org.mule.tools.maven.plugin.mule.AbstractMuleApi.getBearerToken(AbstractMuleApi.java:69)
    at org.mule.tools.maven.plugin.mule.AbstractMuleApi.init(AbstractMuleApi.java:60)
    at org.mule.tools.maven.plugin.mule.arm.ArmDeployer.deploy(ArmDeployer.java:38)

快速回答

401 表示:HTTP 401 Unauthorized 客户端错误状态响应代码表示请求尚未应用,因为它缺少目标资源的有效身份验证凭据。

所以,可能的原因是:

  • 凭据不正确
  • jenkins 不正确的凭据注入或 jenkins 错误
  • mule-maven-plugin:2.2.1 bug

验证凭据

Jenkins 或 mule-maven-plugin 错误并不常见。人为错误很常见。

为了验证是谁导致了错误?,我建议您验证您的凭据 直接到 Anypoint http url

任意点登录url

查看插件官方源代码 v2.2.1 与您的堆栈跟踪相关 ArmDeployer.deploy(ArmDeployer.java:38) :

https://github.com/mulesoft/mule-maven-plugin/tree/v2.2.1

及其类(按此顺序):

我得到了基地 url:

ArmApi(null, "https://anypoint.mulesoft.com", USERNAME, PASSWORD, ENVIRONMENT, "", false);

通过这个 url,我找到了这个身份验证请求片段:

curl -H "Content-Type: application/json" -X POST -d '{"username":"jane","password":"doe"}' https://anypoint.mulesoft.com/accounts/login

同样在此网站中,显示了另一种身份验证方法:

  • 表单参数
  • bearer(用于 mule-maven-plugin:2.2.1)

来源:https://help.mulesoft.com/s/article/How-to-generate-your-Authorization-Bearer-token-for-Anypoint-Platform

直接认证:成功

如果 https://anypoint.mulesoft.com/accounts/login returns 你 成功回答,将表明你的 jenkins 中的凭据管理器存在一些错误,或者只是人类詹金斯管理员。

直接验证:失败

如果 https://anypoint.mulesoft.com/accounts/login returns 你的 错误答案 就像你的 401 Unauthorized,将表明 mule- maven-plugin:2.2.1 和 jenkins 很好,而你的凭据 是错误的!!! 或者它们可能已过期。

无论如何只是为了尝试,重置凭据或要求一个新的 user/password。