首页 文章

Spring Data mongodb:如何在运行副本集时添加凭据

提问于
浏览
1

我正在运行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文件中优先使用数据库凭据(甚至是密钥文件),以便在使用Spring Data MongoDB时可以对MongoDB副本集进行身份验证?

谢谢 .

1 回答

  • 0

    --keyfile选项在replicaset成员之间启用基于密钥的身份验证 . 它对您的应用程序和replicaset之间的通信没有影响 .

    您需要将用户添加到数据库 . 确保您已连接到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>
    

相关问题