Как использовать аутентификацию JGit https с использованием Kerberos

Я пытаюсь клонировать Git-репозиторий через HTTPS с сервера Windows. Этот сервер использует единый вход и, следовательно, относится к Kerberos5. Имея мало знаний с этим мой простой код:

CloneCommand clone = Git.cloneRepository();

clone.setURI("https://gerrit.intra.infineon.com/dcgr/sys/sysbox");
clone.setCredentialsProvider(new UsernamePasswordCredentialsProvider("user", "pass"));
clone.setDirectory(new File("C:\\userdata\\temp\\gittest"));
clone.setBranch("master");
clone.call();

приводит к исключению:

org.eclipse.jgit.errors.TransportException: https://gerrit.mycompany.com/sampleRepo: cannot open git-upload-pack
    at org.eclipse.jgit.transport.TransportHttp.connect(TransportHttp.java:518)
    at org.eclipse.jgit.transport.TransportHttp.openFetch(TransportHttp.java:296)
    at org.eclipse.jgit.transport.FetchProcess.executeImp(FetchProcess.java:136)
    at org.eclipse.jgit.transport.FetchProcess.execute(FetchProcess.java:122)
    at org.eclipse.jgit.transport.Transport.fetch(Transport.java:1138)
    at org.eclipse.jgit.api.FetchCommand.call(FetchCommand.java:130)
    ... 22 more
Caused by: java.io.IOException
    at org.eclipse.jgit.transport.HttpAuthMethod$Negotiate.configureRequest(HttpAuthMethod.java:547)
    at org.eclipse.jgit.transport.TransportHttp.httpOpen(TransportHttp.java:561)
    at org.eclipse.jgit.transport.TransportHttp.httpOpen(TransportHttp.java:523)
    at org.eclipse.jgit.transport.TransportHttp.connect(TransportHttp.java:462)
    ... 27 more
Caused by: GSSException: No valid credentials provided (Mechanism level: No valid credentials provided (Mechanism level: Attempt to obtain new INITIATE credentials failed! (null)))
    at sun.security.jgss.spnego.SpNegoContext.initSecContext(SpNegoContext.java:454)
    at sun.security.jgss.GSSContextImpl.initSecContext(GSSContextImpl.java:248)
    at sun.security.jgss.GSSContextImpl.initSecContext(GSSContextImpl.java:179)
    at org.eclipse.jgit.transport.HttpAuthMethod$Negotiate.configureRequest(HttpAuthMethod.java:541)
    ... 30 more
Caused by: GSSException: No valid credentials provided (Mechanism level: Attempt to obtain new INITIATE credentials failed! (null))
    at sun.security.jgss.krb5.Krb5InitCredential.getTgt(Krb5InitCredential.java:343)
    at sun.security.jgss.krb5.Krb5InitCredential.getInstance(Krb5InitCredential.java:145)
    at sun.security.jgss.krb5.Krb5MechFactory.getCredentialElement(Krb5MechFactory.java:122)
    at sun.security.jgss.krb5.Krb5MechFactory.getMechanismContext(Krb5MechFactory.java:187)
    at sun.security.jgss.GSSManagerImpl.getMechanismContext(GSSManagerImpl.java:224)
    at sun.security.jgss.GSSContextImpl.initSecContext(GSSContextImpl.java:212)
    at sun.security.jgss.GSSContextImpl.initSecContext(GSSContextImpl.java:179)
    at sun.security.jgss.spnego.SpNegoContext.GSS_initSecContext(SpNegoContext.java:875)
    at sun.security.jgss.spnego.SpNegoContext.initSecContext(SpNegoContext.java:317)
    ... 33 more
Caused by: javax.security.auth.login.LoginException: No password provided
    at com.sun.security.auth.module.Krb5LoginModule.promptForPass(Krb5LoginModule.java:919)
    at com.sun.security.auth.module.Krb5LoginModule.attemptAuthentication(Krb5LoginModule.java:760)
    at com.sun.security.auth.module.Krb5LoginModule.login(Krb5LoginModule.java:617)
    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:497)
    at javax.security.auth.login.LoginContext.invoke(LoginContext.java:755)
    at javax.security.auth.login.LoginContext.access$000(LoginContext.java:195)
    at javax.security.auth.login.LoginContext$4.run(LoginContext.java:682)
    at javax.security.auth.login.LoginContext$4.run(LoginContext.java:680)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:680)
    at javax.security.auth.login.LoginContext.login(LoginContext.java:587)
    at sun.security.jgss.GSSUtil.login(GSSUtil.java:255)
    at sun.security.jgss.krb5.Krb5Util.getTicket(Krb5Util.java:158)
    at sun.security.jgss.krb5.Krb5InitCredential$1.run(Krb5InitCredential.java:335)
    at sun.security.jgss.krb5.Krb5InitCredential$1.run(Krb5InitCredential.java:331)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.security.jgss.krb5.Krb5InitCredential.getTgt(Krb5InitCredential.java:330)
    ... 41 more

Сообщение об ошибке "Пароль не указан" мне кажется странным. Кто-нибудь уже сделал это и может привести рабочий пример?

0 ответов

Другие вопросы по тегам