У меня есть кластер, защищенный Kerberos, и у него есть REST API, который должен взаимодействовать с кластером от имени пользователя. Я использовал Spring Security с SPNEGO для аутентификации пользователя, но когда я пытаюсь использовать Hadoop SDK, он не работает по разным причинам на основе того, что я пытаюсь.Первичные учетные данные SPNEGO для безопасного кластера
Когда я пытаюсь использовать SDK непосредственно после входа пользователя в систему, он дает мне SIMPLE authentication is not enabled
.
Я заметил, что сеанс Authenticator
- это UserNamePasswordAuthenticationToken
, который не имеет смысла, так как я аутентифицируюсь в отношении области Kerberos с учетными данными пользователя.
Я пытаюсь использовать этот проект из коробки с моей учетной записи службы и Keytab: https://github.com/spring-projects/spring-security-kerberos/tree/master/spring-security-kerberos-samples/sec-server-spnego-form-auth
При использовании «Hadoop SDK» я предполагаю, что вы создаете конфигурацию Hadoop и Hadoop 'UserGroupInformation'. Как передать свойства конфигурации в «Конфигурация», неявно * (например, «drop-core-site.xml» и т. Д. В локальном каталоге и добавить каталог в CLASSPATH) * или явно? Если неявно, вы проверили, что файл (ы) действительно читаются * (в противном случае Hadoop тихо переходит в жестко кодированные значения по умолчанию, например, SIMPLE, и ваша программа будет сбой и запись бессмысленными сообщениями об исключении позже) *? –
Если это еще не так, вы можете поднять некоторые флагов отладки, как описано в https://steveloughran.gitbooks.io/kerberos_and_hadoop/content/sections/secrets.html i.e. '-Dsun.security.krb5.debug = true' и 'export HADOOP_JAAS_DEBUG = true' –
Я добавляю файлы конфигурации явно, но я стараюсь избегать использования UGI вообще, поскольку все это использует статические элементы, и мне нужно поддерживать поточно-безопасные операции. У меня, вероятно, есть фундаментальное непонимание того, что должно присутствовать для того, чтобы все работало под руководством пользователя, но я надеялся, что это будет так же просто, как получить ссылку на «Subject» и запустить мой список HDFS и т. Д. Внутри «Subject» .doAs' – Benny