尝试部署到我们的AWS VM实例(具有Mule运行时3.8.5)。我们的Jenkins职位触发了部署并获得401未经授权。验证信誉良好,并且没有特殊字符。不知道还有什么可能是错误的。有人可以从日志下面建议我。
另一个疑问是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)
401表示:HTTP 401未经授权的客户端错误状态响应代码表示该请求尚未应用,因为它缺少针对目标资源的有效身份验证凭据。
因此,可能的原因是:
Jenkins或mule-maven-plugin错误并不常见。人为错误非常普遍。
为了验证是谁导致错误?,我建议你直接将凭据验证到Anypoint http url
回顾官方插件的源代码V2.2.1关系到你的堆栈跟踪ArmDeployer.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);
并使用此网址,我找到了此身份验证请求代码段:
curl -H "Content-Type: application/json" -X POST -d '{"username":"jane","password":"doe"}' https://anypoint.mulesoft.com/accounts/login
同样在此Web中,显示了另一种身份验证方式:
资料来源:https : //help.mulesoft.com/s/article/How-to-generate-your-Authorization-Bearer-token-for-Anypoint-Platform
如果https://anypoint.mulesoft.com/accounts/login
返回成功答案,将表明你的詹金斯凭证管理器中存在某些错误,或者只是人类詹金斯管理员中存在错误。
如果https://anypoint.mulesoft.com/accounts/login
返回错误答案,例如401 Unauthorized,将表明mule-maven-plugin:2.2.1和jenkins很好,并且你的凭据错误!!!也许他们过期了。
无论如何,请尝试重设凭据或要求新的用户名/密码。
非常感谢您的分享。我确实尝试过使用证书,并通过卷毛给出了未经授权的错误。但是我们正在使用Okta登录mulesoft。所以我想我们应该使用Bearer方法(首先获取saml响应,然后获取令牌)。我收到了saml响应,但不确定之后如何进行
我在mule-maven-plugin v2.2.1的某些类中看到了Bearer令牌,因此我认为您可以查看是否可以使用Bearer代替user / password。您也可以尝试使用此插件的最新版本。换句话说,我认为okta是用于人类用户的交互式登录。但是对于非交互用户(如jenkins这样的后台进程),我认为mule-maven-plugin需要用户/密码或某种形式的万能api-key
在没有MFA的任何点平台上创建了一个新帐户(没有单个信号),并使用settings.xml中的凭据,该帐户开始工作。
很高兴我帮助找到了问题。