我们公司最近从基本身份验证更改为LDAP身份验证,常规应用现在在URL上使用authSource=$external&authMechanism=PLAIN
。
这在普通应用程序上工作正常,但我不知道如何使用Spring Data进行设置。当然有办法做到了吧?
答案 0 :(得分:0)
如下所示,您无法设置authSource / authMechanism之类的内容,因此必须更改为使用URI。另请注意,在使用URI时,您不能使用主机/端口和用户名/密码。这些都需要输入URI。
类似
export spring_data_mongodb_database=db
export spring_data_mongodb_uri = mongodb://username:password@host:port?authSource=$external&authMechanism=PLAIN
这是您当前可以在春季启动中为mongodb配置的所有属性。
https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html
spring.data.mongodb.authentication-database= # Authentication database name.
spring.data.mongodb.database=test # Database name.
spring.data.mongodb.field-naming-strategy= # Fully qualified name of the FieldNamingStrategy to use.
spring.data.mongodb.grid-fs-database= # GridFS database name.
spring.data.mongodb.host=localhost # Mongo server host.
spring.data.mongodb.password= # Login password of the mongo server.
spring.data.mongodb.port=27017 # Mongo server port.
spring.data.mongodb.repositories.enabled=true # Enable Mongo repositories.
spring.data.mongodb.uri=mongodb://localhost/test # Mongo database URI. When set, host and port are ignored.
spring.data.mongodb.username= # Login user of the mongo server.
答案 1 :(得分:0)
如果您将Spring-Boot mongodb api与LDAP一起使用,则uri必须位于application.properties
文件夹中的resources
文件中:
spring.data.mongodb.uri="mongodb://username:password@host:port/?authSource=$external&authMechanism=PLAIN"
spring.data.mongodb.database="databasThatYouWantToConnectTo"
不需要其他参数,例如spring.data.mongodb.username
,spring.data.mongodb.password
等,因为spring.data.mongodb.uri
authSource=$external&authMechanism=PLAIN
中的子字符串spring.data.mongodb.uri
说Mongo认证和授权是通过LDAP进行的。
您可以检查下面的图像,该图像取自MongoDB的Connection String URI format文档形式
如果您使用的是Mongo Db提供的Mongo Java驱动程序,则必须进行如下连接:
import com.mongodb.MonogoClient;
import com.mongodb.MongoClientURI;
import com.mongodb.client.MongoDatabase;
public class MongoConnect{
public static void main(String args[]){
MongoClientURI connString = new MongoClientURI("mongodb://username:password@host:port/?authSource=$external&authMechanism=PLAIN");
MongoClient mongoClient = new MongoClient(connString);
MongoDatabase database = mongoClient.getDatabase("databasThatYouWantToConnectTo");
System.out.println(database.getName()+" "+ mongoClient.getCredentialList());
}
}