我是mongodb和kerberos的新手。我有一个使用kerberos身份验证的远程mongodb设置。现在我有了一台windows机器,必须通过java代码连接到远程mongodb实例。我正在使用下面的代码连接良好,但要求用户名和密码在执行期间,我需要避免。我在google上搜索了很多,发现我需要提供keytab文件,但不确定如何在windows机器上生成它?任何帮助都将不胜感激。
注意:我无法访问运行在远程机器上的mongodb服务器和kerberos。
System.setProperty("javax.security.auth.useSubjectCredsOnly", "false");
System.setProperty("java.security.krb5.realm", "have a proper value here");
System.setProperty("java.security.krb5.kdc", "have a proper value here");
String server = "have a valid host here";
String user = "valid user name";
String databaseName = "valid database name";
MongoCredential credential = MongoCredential.createGSSAPICredential(user);
MongoClient mongoClient = new MongoClient(new ServerAddress(server, "valid port"), Arrays.asList(credential));发布于 2017-02-13 04:03:27
您的问题是如何在Windows机器上生成密钥选项卡。必须使用ktpass.exe命令在Active域的成员服务器或域控制器上生成Keytab。使用Windows内置实用程序ktpass.exe创建密钥选项卡。请注意,必须在Windows上创建密钥选项卡,因为它们不能在工作站操作系统(如Windows7、8或Windows10)上创建。在运行ktpass.exe时,命令行外壳(cmd.exe)必须“作为管理员”运行。如果启用了用户帐户控制(UAC),则必须禁用该控件。创建keytab的方式必须包括服务主体名称、领域名称和与keytab中的服务主体相关的AD用户或计算机帐户密码的加密散列。为此,下面给出了一个示例命令。
ktpass -out centos1 1-dev-local.keytab -mapUser krbCentos@DEV.LOCAL +rndPass -mapOp set +DumpSalt -crypto -crypto 275-SHA 1 -ptype KRB5_NT_PRINCIPAL -princ HTTP/centos1.dev.local@DEV.LOCAL
上面的命令示例创建一个名为centos1-dev-local.keytab的keytab,以便在名为DEV.LOCAL的AD域中使用。我经常回去,并根据我在这个论坛上看到的问题编辑它。
https://stackoverflow.com/questions/39449384
复制相似问题