Spring+MongoDB验证安全的配置

Spring+MongoDB验证安全的配置

引言:在网上搜到的很多MongoDB安装教程都没有关于用户角色身份的验证安全策略的相关配置以及说明,所以这样安装的MongoDB其实相当于在网络上 “裸奔” 式的运行,而MongoDB本身又存在一些漏洞,会存在被黑客攻击(“偷走”数据并删库要挟比特币)的事情发现…

  • 两种配置方式(本人已知的)
  • 其他配置
  • 相关资料链接

mongodb在spring中大致有两种配置方式(本人已知的):

1)、根据系统自身提供的各种参数一一对应设置参数值,此时最好开一个mongodb.properties文件枚举各个参数值:

<mongo:mongo id="mongoClient" host="${mongo.host}" port="${mongo.port}">
    <mongo:options connections-per-host="${mongo.connectionsPerHost}"
                   threads-allowed-to-block-for-connection-multiplier="${mongo.threadsAllowedToBlockForConnectionMultiplier}"
                   connect-timeout="${mongo.connectTimeout}"
                   max-wait-time="${mongo.maxWaitTime}"
                   auto-connect-retry="${mongo.autoConnectRetry}"
                   socket-keep-alive="${mongo.socketKeepAlive}"
                   socket-timeout="${mongo.socketTimeout}"
                   slave-ok="${mongo.slaveOk}"
                   write-number="1"
                   write-timeout="0"
                   write-fsync="true" />
</mongo:mongo>

<mongo:db-factory username="${mongo.username}" password="${mongo.password}" dbname="${mongo.dbname}" mongo-ref="mongoClient" />

<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
    <constructor-arg ref="mongoClient" />
    <constructor-arg name="databaseName" value="${mongo.dbname}" /><!-- 数据库的名称 -->
</bean>

备注:本方法可以一对一设置每个参数的值,对于需要简单配置使用以及 “小白” 可以参考理解一下其中的各参数的作用,但是存在没有安全验证的信息配置,对于应用于需要正式发布运营的项目来说是“禁止”使用该方法的(PS:也可能是本人还没有找到对的地方去设置)。


2)、直接在mongodb的工厂配置信息这里使用URI属性也可以实现配置

首先:咱们先来了解一个系统类com.mongodb.MongoClientURI,上面的URI需要的options属性可以根据该类的属性字段来对应配置;

然之:****URI配置非常简单,但是使用之前一定要了解里面的各个属性字段的意义,例如:(使用到了上面的mongodb.properties文件)

<mongo:db-factory id="mongoDbFactory" uri="mongodb://${mongo.username}:${mongo.password}@${mongo.host}:${mongo.port}/${mongo.dbname}?authSource=${mongo.authenticationDbname}&amp;authMechanism=${mongo.authMechanism}"/>

<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
    <constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />
</bean>

其他配置:

1)、验证方式authMechanism:SCRAM-SHA-1、MONGODB-CR(自己去百度区别)
2)、mongodb的etc目录下面的mongodb.conf文件配置:


#数据库数据存放目录
dbpath=/data/db/mongodb/data
#数据库日志存放目录
logpath=/data/db/mongodb/logs/mongodb.log
#以追加的方式记录日志
logappend=true
#端口号 默认为27017
port=27017 
#以后台方式运行进程
fork=true 
#开启用户认证
auth=true
#关闭http接口,默认关闭http端口访问
nohttpinterface=true
#mongodb所绑定的ip地址
bind_ip=127.0.0.1
#启用日志文件,默认启用
journal=true 
#这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false
quiet=true

3)、对数据库创建用户并且配置用户角色权限步骤如下:

show dbs;

use xxxxxtest;//切换到需要配置的数据库

db.createUser( { //创建用户
    user: "xxxx",
    pwd: "xxxxxx",
    roles: [  "readWrite"  ] //这里可以配置多个角色权限
});

db.auth('xxx','xxxxxx');//对用户的权限进行校验确认


相关资料链接:

MongoDB:多种方式关闭服务命令:https://www.cnblogs.com/PheonixHkbxoic/p/5665499.html

robomongo 连不上mongodb 权限问题:https://blog.csdn.net/sonycong/article/details/50466142

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring配置MongoDB权限,可以通过以下几个步骤实现: 1. 配置MongoDB连接属性: 在Spring配置文件(如application.properties或application.yml)中,设置MongoDB的连接属性,包括主机名、端口号、数据库名称等。示例如下: ```properties spring.data.mongodb.host=localhost spring.data.mongodb.port=27017 spring.data.mongodb.database=mydatabase ``` 2. 配置MongoDB的认证信息: 如果MongoDB启用了认证,你需要在配置文件中提供用户名和密码。示例如下: ```properties spring.data.mongodb.authentication-database=admin spring.data.mongodb.username=myusername spring.data.mongodb.password=mypassword ``` 这里的`authentication-database`属性指定了认证所使用的数据库,通常是`admin`。 3. 配置MongoDB权限: MongoDB的权限配置可以通过在数据库中创建用户并为其分配角色来实现。可以使用Mongo shell或其他管理工具来执行以下操作: a. 连接到MongoDB服务器: ``` mongo --host localhost --port 27017 -u adminusername -p adminpassword --authenticationDatabase admin ``` b. 创建用户并分配角色: ``` use mydatabase db.createUser( { user: "myuser", pwd: "mypassword", roles: [ { role: "readWrite", db: "mydatabase" } ] } ) ``` 这里创建了一个名为`myuser`的用户,并为其分配了`readWrite`角色,该角色对`mydatabase`数据库具有读写权限。 4. 使用配置的权限: 在应用程序中使用MongoDB时,可以使用Spring Data MongoDB提供的功能来连接数据库,并使用在步骤3中创建的用户进行权限验证。示例代码如下: ```java @Configuration @EnableMongoRepositories(basePackages = "com.example.repository") public class MongoConfig extends AbstractMongoClientConfiguration { @Value("${spring.data.mongodb.host}") private String host; @Value("${spring.data.mongodb.port}") private int port; @Value("${spring.data.mongodb.database}") private String database; @Value("${spring.data.mongodb.username}") private String username; @Value("${spring.data.mongodb.password}") private String password; @Override protected String getDatabaseName() { return database; } @Override public MongoClient mongoClient() { MongoCredential credential = MongoCredential.createCredential(username, database, password.toCharArray()); return new MongoClient(new ServerAddress(host, port), credential, MongoClientOptions.builder().build()); } } ``` 这里的`MongoConfig`类继承了`AbstractMongoClientConfiguration`类,配置MongoDB的连接和认证信息。通过`@EnableMongoRepositories`注解启用Spring Data MongoDB的功能,并指定了存储库的包路径。 这样,你就可以使用Spring连接到MongoDB,并在配置的权限下进行操作了。请根据实际情况修改配置文件和代码中的参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值