使用 LDAP InMemoryDirectoryServer 通过 Scala 验证用户
Using a LDAP InMemoryDirectoryServer to authenticate User with Scala
使用 scala 和 playFramework,我实现了一个简单的登录-注销例程。现在我想使用 LDAP 来验证用户名和密码是否正确。
我不想设置服务器,而是使用此处描述的 InMemoryDirectoryServer https://docs.ldap.com/ldap-sdk/docs/in-memory-directory-server.html 进行测试。
但是,我找不到关于如何使用它的适当文档。
我找到了这个博客,但它似乎是即兴创作的。
http://krishnasblog.com/2013/03/29/incorporating-ldap-with-play-2-x-scala-application/
到目前为止我有:
def start(): InMemoryDirectoryServer = {
val config = new InMemoryDirectoryServerConfig("dc=com");
config.setListenerConfigs(new InMemoryListenerConfig("ldapListener", InetAddress.getLocalHost(), 0, null, null, null));
config.setSchema(null);
val server = new InMemoryDirectoryServer(config);
server.startListening();
server.add("dn: dc=com", "objectClass: top", "objectClass: domain", "dc: com");
server.add("dn: dc=test,dc=com", "objectClass: top", "objectClass: domain", "dc: test");
server.add("dn: dc=roles,dc=test,dc=com", "objectClass: top", "objectClass: domain", "dc: roles");
server.add("dn: cn=group,dc=roles,dc=test,dc=com", "objectClass: groupOfUniqueNames", "cn: group");
server.add("dn: cn=user1,dc=test,dc=com", "objectClass: person", "locale: nl_BE",
"sn: NormalUser", "memberOf: cn=group,dc=roles,dc=test,dc=com", "userPassword: password");
server.add("dn: cn=user2,dc=test,dc=com", "objectClass: person", "locale: nl_BE",
"sn: NormalUser", "memberOf: cn=group,dc=roles,dc=test,dc=com", "userPassword: password");
server
}
我的问题是:
根据这个初始配置,我将如何验证用户名和密码,就像使用真正的 LDAP 服务器一样。
真的只是获取条目并相互测试字符串吗?
val retPass = entry.getAttributeValue("userPassword")
我正在实施一个 LDAP 身份验证模块,并且我正在使用一个 public LDAP server,它在测试方面运行良好。
尝试使用此 LDAP 的条目进行测试。
使用 scala 和 playFramework,我实现了一个简单的登录-注销例程。现在我想使用 LDAP 来验证用户名和密码是否正确。
我不想设置服务器,而是使用此处描述的 InMemoryDirectoryServer https://docs.ldap.com/ldap-sdk/docs/in-memory-directory-server.html 进行测试。
但是,我找不到关于如何使用它的适当文档。
我找到了这个博客,但它似乎是即兴创作的。 http://krishnasblog.com/2013/03/29/incorporating-ldap-with-play-2-x-scala-application/
到目前为止我有:
def start(): InMemoryDirectoryServer = {
val config = new InMemoryDirectoryServerConfig("dc=com");
config.setListenerConfigs(new InMemoryListenerConfig("ldapListener", InetAddress.getLocalHost(), 0, null, null, null));
config.setSchema(null);
val server = new InMemoryDirectoryServer(config);
server.startListening();
server.add("dn: dc=com", "objectClass: top", "objectClass: domain", "dc: com");
server.add("dn: dc=test,dc=com", "objectClass: top", "objectClass: domain", "dc: test");
server.add("dn: dc=roles,dc=test,dc=com", "objectClass: top", "objectClass: domain", "dc: roles");
server.add("dn: cn=group,dc=roles,dc=test,dc=com", "objectClass: groupOfUniqueNames", "cn: group");
server.add("dn: cn=user1,dc=test,dc=com", "objectClass: person", "locale: nl_BE",
"sn: NormalUser", "memberOf: cn=group,dc=roles,dc=test,dc=com", "userPassword: password");
server.add("dn: cn=user2,dc=test,dc=com", "objectClass: person", "locale: nl_BE",
"sn: NormalUser", "memberOf: cn=group,dc=roles,dc=test,dc=com", "userPassword: password");
server
}
我的问题是: 根据这个初始配置,我将如何验证用户名和密码,就像使用真正的 LDAP 服务器一样。
真的只是获取条目并相互测试字符串吗?
val retPass = entry.getAttributeValue("userPassword")
我正在实施一个 LDAP 身份验证模块,并且我正在使用一个 public LDAP server,它在测试方面运行良好。
尝试使用此 LDAP 的条目进行测试。