Описание: Я создал приложение, которое извлекает файл HDFS (Hadoop Distributed File System) из удаленного кластера, на котором применяется аутентификация Kerberos. Я мог выполнить HDFS.copyToLocalFile (путь1, путь2) от Eclipse, и он работал нормально. Но когда я экспортирую проект как запущенную банку и пытаюсь запустить ее через командную строку, она выдает следующую ошибку. Примечание. Я выполнил следующие шаги: https://sourceforge.net/p/jsch/mailman/message/26939797/ и успешно выполнил проект из Eclipse. Я проверил дополнительные файлы в Eclipse, но не смог найти их. У меня есть Kerberos V5 MIT устанавливается вместе с Network Identity Manager (версия 4.0)Kerberos Authentication using Credentials Кэш работает через Eclipse, но не в командной строке
Caused by: java.io.IOException: org.apache.hadoop.security.AccessControlException: Client cannot authenticate via:[TOKEN, KERBEROS]
at org.apache.hadoop.ipc.Client$Connection$1.run(Client.java:680)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Unknown Source)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1628)
at org.apache.hadoop.ipc.Client$Connection.handleSaslConnectionFailure(Client.java:643)
at org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:730)
at org.apache.hadoop.ipc.Client$Connection.access$2800(Client.java:368)
at org.apache.hadoop.ipc.Client.getConnection(Client.java:1521)
at org.apache.hadoop.ipc.Client.call(Client.java:1438)
... 70 more
Caused by: org.apache.hadoop.security.AccessControlException: Client cannot authenticate via:[TOKEN, KERBEROS]
at org.apache.hadoop.security.SaslRpcClient.selectSaslClient(SaslRpcClient.java:172)
at org.apache.hadoop.security.SaslRpcClient.saslConnect(SaslRpcClient.java:396)
at org.apache.hadoop.ipc.Client$Connection.setupSaslConnection(Client.java:553)
at org.apache.hadoop.ipc.Client$Connection.access$1800(Client.java:368)
at org.apache.hadoop.ipc.Client$Connection$2.run(Client.java:722)
at org.apache.hadoop.ipc.Client$Connection$2.run(Client.java:718)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Unknown Source)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1628)
at org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:717)
... 73 more
Примечание: Я настроил затмив соответствующие параметры в configuration.xml и в комплекте его в пути к классам.
<property>
<name>java.security.auth.login.config</name>
<value>./Configuration/login.conf</value>
</property>
<property>
<name>java.security.krb5.conf</name>
<value>./Configuration/krb5.conf</value>
</property>
<property>
<name>javax.security.auth.useSubjectCredsOnly</name>
<value>false</value>
</property>
Рекомендуемая литература: https://steveloughran.gitbooks.io/kerberos_and_hadoop/content/ –
Под _ «низкоуровневых секреты» _ у вас есть несколько советов о том, что позволяло бы Отслеживаемые трассировки Kerberos, т.е. 'export HADOOP_JAAS_DEBUG = true' и' -Dsun.security.krb5.debug = true' плюс, если вы используете интерфейс REST, '-Dsun.security.spnego.debug = true' –
Я также добавлю мой личный контакт: '-Djava.security.debug = gssloginconfig, configfile, configparser, logincontext' действительно полезен для понимания проблем конфигурации. –