如何解决 Mule 4 版本中的 Mule SFTP Kerberos 用户名和密码提示:Mule 4.3

How to resolve Mule SFTP Kerberos username and password prompt in Mule 4 Version: Mule 4.3

我面临着 SFTP Kerberos 用户名和首次 运行 服务提示。随后的运行服务运行宁没问题。当 SFTP 位置在网络内时,Kerberos 不会提示。如果是不同的网络,它会要求输入 Kerberos 用户名和密码。

起始 Bean:org.mule.runtime.module.extension.internal.runtime.config.ConfigurationProviderToolingAdapter-Database_Config 信息 2020-07-29 14:21:42,151 [WrapperListener_start_runner] [处理器:;事件:] org.mule.runtime.core.privileged.lifecycle.AbstractLifecycleManager:起始 Bean:org.mule.runtime.module.extension.internal.runtime.config.ConfigurationProviderToolingAdapter-SFTP_Config Kerberos 用户名 [nmarathe]:

nmarathe 的 Kerberos 密码:

信息 2020-07-29 14:21:55,531 [WrapperListener_start_runner] [处理器:;事件:] org.mule.runtime.core.privileged.lifecycle.AbstractLifecycleManager:起始 Bean:org.mule.runtime.module.extension.internal.runtime.config.ConfigurationProviderToolingAdapter-Java_Config

关键提示:preferredAuthenticationMethods="publickey,password,keyboard-interactive" 部署应用失败。

<sftp:config name="SFTP_Config" doc:name="SFTP Config"
    doc:id="b5762201-a868-4a1a-ab96-9b7669451708">
    <sftp:connection
        workingDir="${sftp.path}"
        host="${sftp.host}" username="${sftp.user}"
        password="${sftp.password}" port="${sftp.port}" connectionTimeout="120" preferredAuthenticationMethods="publickey,password,keyboard-interactive">
        <reconnection>
            <reconnect frequency="30000" count="20" />
        </reconnection>
    </sftp:connection>
    <expiration-policy maxIdleTime="2" timeUnit="MINUTES" />
</sftp:config>

错误:元素 'publickey,password,keyboard-interactive' 未在 Mule 注册表中定义

经过大量深入研究后。我仅从文档中找到了解决方案。 参考:https://docs.mulesoft.com/sftp-connector/1.3/sftp-documentation#parameters-2

我刚刚在 SFTP 连接中添加了以下代码。 preferredAuthenticationMethods="#[['PUBLIC_KEY','KEYBOARD_INTERACTIVE','PASSWORD']]"

PFB 解决了我的问题的详细代码。

<sftp:config name="SFTP_Config" doc:name="SFTP Config">
    <sftp:connection
        workingDir="${sftp.path}"
        host="${sftp.host}" username="${sftp.user}"
        password="${sftp.wms.password}" port="${sftp.port}" connectionTimeout="120" preferredAuthenticationMethods="#[['PUBLIC_KEY','KEYBOARD_INTERACTIVE','PASSWORD']]">
        <reconnection>
            <reconnect frequency="30000" count="20" />
        </reconnection>
    </sftp:connection>
    <expiration-policy maxIdleTime="2" timeUnit="MINUTES" />
</sftp:config>