首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从java代码连接到在windows系统上使用kerberos的远程mongodb?

如何从java代码连接到在windows系统上使用kerberos的远程mongodb?
EN

Stack Overflow用户
提问于 2016-09-12 11:34:41
回答 1查看 497关注 0票数 0

我是mongodb和kerberos的新手。我有一个使用kerberos身份验证的远程mongodb设置。现在我有了一台windows机器,必须通过java代码连接到远程mongodb实例。我正在使用下面的代码连接良好,但要求用户名和密码在执行期间,我需要避免。我在google上搜索了很多,发现我需要提供keytab文件,但不确定如何在windows机器上生成它?任何帮助都将不胜感激。

注意:我无法访问运行在远程机器上的mongodb服务器和kerberos。

代码语言:javascript
复制
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));
EN

回答 1

Stack Overflow用户

发布于 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域中使用。我经常回去,并根据我在这个论坛上看到的问题编辑它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39449384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档