如何阻止Mule SFTP连接器提示输入Kerberos用户名?



我正在尝试使用SFTP上传文件。我已经建立了一个身份文件并正确引用了。当我的流到达SFTP时,它暂停执行并提示输入Kerberos用户名和Kerberos密码。我不需要为这些输入任何东西,只是按下回车将允许执行继续,并将正确上传我的文件。对此进行研究后发现,这似乎是Java1.7的一个bug,参考如下:https://www.mulesoft.org/jira/browse/MULE-6864。在Jira任务中,他们提到"在SftpClient中将PreferredAuthentications属性设置为"publickey,password,keyboard-interactive"解决了这个问题。我在哪里设置这个属性?它不是连接器的一部分。我试着直接在XML中添加它作为属性,但也不起作用。

我在Anypoint Studio 2014年7月开发,部署到Mule 3.5.00 ee。

首选授权方法可以添加到连接器,但不能添加到端点,例如:

<sftp:connector name="sftpConnector" validateConnections="true"
                doc:name="mySftp" keepFileOnError="true" 
                preferredAuthenticationMethods="publickey,password,keyboard-interactive">
</sftp:connector>

然后在SFTP端点中引用连接器。

然而,在Mule 3.5之前,这在连接器中还不是一个可用的选项,所以如果使用的是更早的版本,就必须使用Steve的解决方案。它不是通过GUI设置的,而是应该直接放入XML中。

答案在上面列出的同一个Jira条目中。我需要创建一个java类来进行配置。只需将以下类添加到您的项目中:

package com.mycompany.utils;
import org.apache.log4j.Logger;
import org.mule.api.MuleEventContext;
import org.mule.api.lifecycle.Callable;
import com.jcraft.jsch.JSch;

public class SftpFix implements Callable{
    private static final Logger LOG = Logger.getLogger("com.mycompany");
    static
    { // A bug fix for MULE-6864, where Java 7 causes an issue SSH'ing to a Linux box with Kerberos enabled. 
        LOG.info("Applying patch to JSch for MULE-6864"); 
        JSch.setConfig("PreferredAuthentications", "publickey,password,keyboard-interactive"); 
    } 
    @Override
    public Object onCall(MuleEventContext eventContext){
        return eventContext.getMessage().getPayload();
    }
}

最新更新