【问题标题】:Mule Maven Deployment Failure 401-UnauthorizedMule Maven部署失败401-未经授权
【发布时间】:2020-12-08 06:16:16
【问题描述】:

尝试部署到我们的 AWS VM 实例(具有 mule 运行时 3.8.5)。我们的 Jenkins Job 已触发部署并获得 401 Unauthorized。已验证凭据工作正常且没有特殊字符。不确定还有什么问题。有人可以从下面的日志中建议我吗?

另一个疑问是 aws 区域是否会导致问题? (在西部运行的实例,但在詹金斯构建工作,它显示在东部)

 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)

【问题讨论】:

  • mule maven插件的版本是多少?它以前工作过吗?
  • mule-maven-plugin:2.2.1 ,是的,它以前工作过
  • 2.2.1 版本已经使用了三年...升级...
  • 是的,计划在2021年升级。但是现在它说 401,当我尝试 -X 时它没有提供太多细节(只是说 401)

标签: maven mule mulesoft


【解决方案1】:

快速解答

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

所以,可能的原因是:

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

验证凭据

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

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

任意点登录网址

查看与你的stacktrace相关的插件官方源码v2.2.1ArmDeployer.deploy(ArmDeployer.java:38)

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

及其类(按此顺序):

我得到了基本网址:

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

通过这个url,我找到了这个认证请求sn-p:

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 为您返回成功答案,则表明您的 jenkins 中的凭据管理器存在一些错误,或者只是人类 jenkins 管理员中的错误。

直接认证:失败

如果https://anypoint.mulesoft.com/accounts/login 向您返回错误答案,例如您的 401 Unauthorized,则表明 mule-maven-plugin:2.2.1 和 jenkins 很好,而您的凭据错误!!!或者它们可能已过期。

无论如何只是尝试,重置凭据或要求新的用户/密码。

【讨论】:

  • 非常感谢您分享这个。我确实尝试过使用 creds 并通过 curl 给出未经授权的错误。但是我们使用 Okta 登录到 mulesoft。所以我想我们应该使用承载方法(首先获取 saml 响应,然后获取令牌)。我收到了 saml 响应,但不知道之后如何处理
  • 我在 mule-maven-plugin v2.2.1 的某些类中看到了 Bearer 令牌,所以我认为您可以查看是否可以使用 Bearer 代替用户/密码.您也可以尝试使用此插件的更新版本。另一方面,我认为 okta 是用于人类用户的交互式登录。但是对于非交互式用户(像 jenkins 这样的后台进程),我认为 mule-maven-plugin 需要用户/密码或某种长期存在的 api-key
  • 在没有 MFA 的任何点平台上创建了一个新帐户(没有单点登录)并使用了 settings.xml 中的凭据,它开始工作了。
  • 很高兴我帮助找到了问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-09-09
  • 2017-11-13
  • 1970-01-01
  • 2020-11-13
  • 2021-01-08
  • 2018-01-25
  • 2015-12-11
相关资源
最近更新 更多