MOngoDB + Javaの設定が新しくなりました。私はJavaアプリケーションからリモートmongodbサーバーからの接続を達成しようとしています。 mongotemplateとの接続にGSSAPIメカニズムを使用したい。以下のコードは正常に実行されています。以下のコードは私の設定ファイルのものです。GSSException:有効な資格情報が提供されていません(メカニズムレベル:Kerberos tgtを見つけることができませんでした)
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);
しかし、私は、コード、私は取得しています例外の下に実行しようとしていたときに
DB db = mongoTemplate.getDb();
Set<String> dbCollections1 = db.getCollectionNames();
例外:
てGSSException:ありません有効な認証情報(メカニズムレベル:Kerberos TGTが見つかりませんでした) at sun.security.jgss.krb5.Krb5InitCredential.getInstance(Krb5InitCredential.java:147) at sun.security.jgss.krb5.Krb5MechFactory.getCredentialElement(Krb sun.security.jgssでsun.security.jgss.GSSCredentialImpl.add(GSSCredentialImpl.java:427) でsun.security.jgss.GSSManagerImpl.getCredentialElement(GSSManagerImpl.java:193) で5MechFactory.java:122) 。 GSSCredentialImpl。(GSSCredentialImpl.java:62) sun.security.jgss.GSSManagerImpl.createCredential(GSSManagerImpl.java:154) でcom.mongodbでcom.mongodb.DBPort $ GSSAPIAuthenticator.getGSSCredential(DBPort.java:622) で.DBPort $ GSSAPIAuthenticator.createSaslClient(DBPort.java:593) at com.mongodb.DBPort $ SaslAuthenticator.authenticate(DBPort.java:895) at com.mongodb.DBPort.authenticate(DBPort.java:432) at com .mongodb.DBPort.checkAuth(DBPort.java:443) at com.mongodb.DBTCPConnec tor.innerCall(DBTCPConnector.java:289)com.mongodb.DBTCPConnector.call(DBTCPConnector.java:269)で com.mongodb.DBCollectionImpl.find(DBCollectionImpl.java:84)で com.mongodb.DBで 。コマンド(DB.java:320) at com.mongodb.DB.command(DB.java:299) at com.mongodb.DB.command(DB.java:388) at com.mongodb.DBApiLayer.getCollectionNames DBApiLayer.java:152)
私はMongoDBについて何も知らないけど、そのエラーメッセージはGSSAPIがあなたにKerberosプロトコルを使いたいと思っていることを意味します - 本当ですか?はいの場合は、GSSAPIにKerberosサーバへの接続方法を伝える設定を提供しましたか? *(a)*既存のKerberosチケットがキャッシュされる場所、または(b)*パスワードを見つけてその場でチケットを作成する方法は?ところで、Sun/Oracle JVMを使用する場合は、AES256暗号化を有効にするために「無制限暗号化」ポリシーJARをダウンロードしましたか? –
はい、Kerberosプロトコルを使用します。私は2つのシステム環境変数1を設定しました。KRB5_CONFIG = krb5.conf 2.KRB5_KTNAME = username.keytabこれは設定の観点から行ったものです。私はJava Webアプリケーションからこのmongodbサーバーにアクセスしています。私はあなたの質問に答えてくれることを願っています。 –
Kerberos confの設定の詳細については、http://stackoverflow.com/questions/21375372/accessing-hive-metastore-using-jdbc-with-kerberos-keytabを参照してください(詳細はいくつか) –