我是MOngoDB + Java配置的新手.我试图从远程mongodb服务器到Java应用程序的连接.我想使用GSSAPI机制来连接mongotemplate.下面的代码已成功执行.下面的代码来自我的配置文件.
List<ServerAddress> serverAddresses = new ArrayList<ServerAddress>();
ServerAddress address = new ServerAddress(host, port);
serverAddresses.add(address);
List<MongoCredential> credentials = new ArrayList<MongoCredential>();
MongoCredential credential = MongoCredential.createGSSAPICredential(userName);
credential.withMechanismProperty("SERVICE_NAME", gssapiServiceName);
credential.withMechanismProperty("CANONICALIZE_HOST_NAME", true);
credentials.add(credential);
return new MongoClient(serverAddresses, credentials);
Run Code Online (Sandbox Code Playgroud)
但是当我尝试执行下面的代码时,我会遇到异常
DB db = mongoTemplate.getDb();
Set<String> dbCollections1 = db.getCollectionNames();
Run Code Online (Sandbox Code Playgroud)
例外:
GSSException:没有提供有效凭据(机制级别:无法找到任何Kerberos tgt)sun.security.jgss.krb5.Krb5InitCredential.getInstance(Krb5InitCredential.java:147)sun.security.jgss.krb5.Krb5MechFactory.getCredentialElement(Krb5MechFactory) .java:122)sun.security.jgss.GSSManagerImpl.getCredentialElement(GSSManagerImpl.java:193)at sun.security.jgss.GSSCredentialImpl.add(GSSCredentialImpl.java:427)at sun.security.jgss.GSSCredentialImpl.(GSSCredentialImpl .java:62)在sun.security.jgss.GSSManagerImpl.createCredential(GSSManagerImpl.java:154)com.mongodb.DBPort $ GSSAPIAuthenticator.getGSSCredential(DBPort.java:622)com.mongodb.DBPort $ GSSAPIAuthenticator.createSaslClient( DBPort.java:593)com.mongodb.DBPort $ SaslAuthenticator.authenticate(DBPort.java:895)at com.mongodb.DBPort.authenticate(DBPort.java:432)at com.mongodb.DBPort.checkAuth(DBPort.java) :443)com.mongodb.DBTCPConnector.innerCall(DBTCPConnector.java:289)at com.mongodb.DBTCPConnector.call(DBTCPConn)ector.java:269)com.mongodb.DBCollectionImpl.find(DBCollectionImpl.java:84)at com.mongodb.DB.command(DB.java:320)at com.mongodb.DB.command(DB.java:299) )com.mongodb.DB.command(DB.java:388)com.mongodb.DBApiLayer.getCollectionNames(DBApiLayer.java:152)