Mongodb spring数据mongo db ldap身份验证

Mongodb spring数据mongo db ldap身份验证,mongodb,ldap,Mongodb,Ldap,我们公司最近从基本身份验证改为LDAP身份验证,常规应用现在在URL上使用authSource=$external&authMechanism=PLAIN 这在普通的应用程序上运行良好,但我不知道如何使用Spring数据设置这些。当然有一种方法可以做到这一点,对吗?正如您在下面看到的,您不能设置类似authSource/authMechanism的内容,因此必须更改以使用URI。还要注意,当使用URI时,不能使用主机/端口和用户名/密码。这些都需要放到URI中 差不多 export spring

我们公司最近从基本身份验证改为LDAP身份验证,常规应用现在在URL上使用
authSource=$external&authMechanism=PLAIN


这在普通的应用程序上运行良好,但我不知道如何使用Spring数据设置这些。当然有一种方法可以做到这一点,对吗?

正如您在下面看到的,您不能设置类似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
这里是您当前可以在spring boot中为mongodb配置的所有属性

  • 如果将Spring Boot mongodb api与LDAP一起使用,则uri必须是
    文件夹中
    应用程序.properties
    文件中的以下uri:

    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

  • spring.data.mongodb.uri
    中的子字符串
    authSource=$external&authMechanism=PLAIN
    表示Mongo通过LDAP进行身份验证和授权

  • 您可以查看下面的图片,该图片取自文档表单MongoDB

  • 如果您使用的是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());
        } 
    }
    

能否向我们展示创建连接的代码?我使用的是环境变量:export-spring\u-data\u-mongodb\u-database=export-spring\u-data\u-mongodb\u-host=export-spring\u-data\u-mongodb\u-password=export-spring\u-data\u-mongodb\u-port=export-spring\u-data\u-mongodb\u-username=因此我没有找到任何允许我指定连接的属性authSource和authMechanism。下划线(而不是点)的原因是它被部署到OpenShift,这将把下划线转换成点。谢谢,uri是关键。我以前以为我有问题,但也许没有。答案对你有用吗?如果是,请考虑接受解决方案。
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());
    } 
}