【问题标题】:Spring Data mongodb: how to add credentials when running a replica setSpring Data mongodb:运行副本集时如何添加凭据
【发布时间】:2013-05-16 16:18:58
【问题描述】:

我正在运行 MongoDB 2.2。我可以像这样添加凭据来访问我的单实例 MongoDB:

<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
  <property name="writeResultChecking" value="EXCEPTION"/>
  <property name="writeConcern" value="FSYNC_SAFE"/>
  <constructor-arg ref="myRs"/>
  <constructor-arg name="databaseName" value="mydb"/>
  <constructor-arg name="userCredentials" ref="userCredentials"/>
</bean>

<bean id="userCredentials" class="org.springframework.data.authentication.UserCredentials">
  <constructor-arg name="username" value="username" />
  <constructor-arg name="password" value="password" />
</bean>

但文档说只有密钥文件身份验证可用于副本集: http://docs.mongodb.org/v2.2/administration/replica-sets/#replica-set-security

如何在应用上下文 XML 文件中最好使用 DB 凭据(甚至是密钥文件),以便在使用 Spring Data MongoDB 时对 MongoDB 副本集进行身份验证?

谢谢。

【问题讨论】:

    标签: mongodb authentication credentials spring-data-mongodb


    【解决方案1】:

    --keyfile 选项启用副本集成员之间基于密钥的身份验证。它不会影响您的应用程序和副本集之间的通信。

    您需要将用户添加到数据库。确保您已连接到 Primary。

    $ mongo
    PRIMARY> use the_database_i_want_to_be_authenticated
    switched to db the_database_i_want_to_be_authenticated
    PRIMARY> db.addUser("myusername","mypassword")
    {
        "user" : "myusername",
        "readOnly" : false,
        "pwd" : "a6de521abefc2fed4f5876855a3484f5",
        "_id" : ObjectId("5194932444ef978a730c22d4")
    }
    

    在数据库中创建用户后,您将能够通过以下方式连接它

    <bean id="userCredentials" class="org.springframework.data.authentication.UserCredentials">
        <constructor-arg name="username" value="username" />
        <constructor-arg name="password" value="password" />
    </bean>
    

    【讨论】:

    • 谢谢。我确实将“auth=true”行添加到主服务器上的 /etc/mongodb.conf 并重新启动它。然后,我按照您显示的方式通过外壳添加了用户。所以我预计下次我使用 mongo shell 连接到主服务器时会受到凭据的挑战,但我没有。我错过了什么吗?
    • 除非您切换到经过身份验证的数据库,否则不会询问您的凭据。即使您切换了,也不会提示您输入用户名/密码。但是,如果您尝试运行任何命令,例如 show collections,它会显示身份验证错误。你需要写 db.auth('your_username','your_password')
    • 你也可以通过提供用户名和密码连接到 mongo shell.. $ mongo your_db_name -u username -p
    猜你喜欢
    • 2012-10-08
    • 1970-01-01
    • 2015-07-02
    • 2015-10-28
    • 1970-01-01
    • 2016-05-22
    • 2019-02-13
    • 2022-01-23
    • 2021-12-21
    相关资源
    最近更新 更多