偶做的一个项目是使用LDAP(Lightweight Directory Access Protocol)服务器进行用户认证,而对于新用户还需要从LDAP服务器上获取当前用户的所有基本信息(姓,名,电子邮箱等),关于如何从LDAP上获取数据,本文就不讲了,因为网上很多文章讲这个,本文主要想讲一下如何从WAS(WebSphere Application Server)上动态获取LDAP服务器主机名称和端口号。
进入正文前,我首先想提出两个问题:
1. 为什么需要动态获取?
因为在测试服务器上用的是测试LDAP服务器,而生产服务器上是生产LDAP服务器。两个服务的主机名不一样,有时甚至端口也不一样。
所以在连接LDAP时,需要用不同的LDAP服务器主机名称和端口号。
在我提供这个方案之前,我们这个项目一直都是采用将LDAP服务器名称和端口号存储在一个属性文件中,但我们需要在测试与生产两个环境中提供不同的属性文件。因此使我们最终提供的部署文件不是很独立。每次往生产服务器上发布时都需要特别小心地更改这个配置文件。有时候很容易搞错。
2. 为什么可以从WAS上获取?
要使用LDAP服务器来进行用户认证,必须要在WAS administration console 上配置所使用的LDAP服务器主机名和端口号。这样我们就可以直接从WAS上获取到LDAP服务器主机名称和端口号。这样就不需要配置文件了,当然更不需要人为地做任何更改,完全实现了部署文件的独立性。即测试服务器与生产服务器使用相同的包。
以下是我在实现这个解决方案时所用的代码:
package org.brad.woo.ladp;
import java.io.File;
import java.util.*;
import javax.naming.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
public class LDAPHelper {
private final static String LDAP_HOST_PREFIX="ldap://";
private final static String LDAP_SSL_PORT="636";
private static Hashtable env = null;
static{
env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
String ldapHost = null;
String ldapPort = null;
try {
System.out.println("LDAPHelper - begin to parse ldap info");
System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
StringBuffer tempPath=new StringBuffer();
tempPath.append(new File(".").getAbsolutePath());
tempPath.append("/config/cells/");
File tempDirectory=new File(tempPath.toString());
if(tempDirectory.exists()&&tempDirectory.list()[0]!=null){
tempPath.append(tempDirectory.list()[0]);
tempPath.append("/security.xml");
File file = new File(tempPath.toString());
if(file.exists()){
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(file);
doc.getDocumentElement().normalize();
NodeList nodeLst = doc.getElementsByTagName("hosts");
Node fstNode = nodeLst.item(0);
if (fstNode.getNodeType() == Node.ELEMENT_NODE) {
Element fstElmnt = (Element) fstNode;
ldapHost = fstElmnt.getAttribute("host");
System.out.println("LDAPHelper - ldapHost : " + ldapHost);
ldapPort = fstElmnt.getAttribute("port");
System.out.println("LDAPHelper - ldapPort : " + ldapPort);
}
}
}
System.out.println("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@");
System.out.println("LDAPHelper - end to parse ldap info");
} catch (Exception e) {
e.printStackTrace();
}
env.put(Context.PROVIDER_URL, LDAP_HOST_PREFIX+ldapHost+":"+ldapPort);
if(ldapPort.equals(LDAP_SSL_PORT)){
env.put("java.naming.ldap.derefAliases", "never");
env.put("java.naming.ldap.version", "3");
env.put(Context.REFERRAL, "follow");
env.put("java.naming.ldap.referral;.bind", "true");
env.put(Context.SECURITY_PROTOCOL, "ssl");
}
}
}
分享到:
相关推荐
综上所述,LDAP服务器作为重要的目录服务工具,因其快速查询、跨平台访问和分布式特性,在企业级应用中广泛使用。无论是用于管理用户身份验证、存储配置信息还是安全管理,LDAP都能提供高效且灵活的解决方案。学习和...
本文将详细介绍如何在Xubuntu操作系统上搭建一个基于slapd、ldap-utils、db-util、phpldapadmin和apache2的LDAP服务器。尽管在尝试过程中遇到了问题,但我们将按步骤解析整个过程,以便于理解可能出现的问题。 首先...
"在Linux上搭建LDAP服务器" LDAP( Lightweight Directory Access Protocol,轻型目录访问协议)是一种集中管理访问、认证和授权的协议。它提供了用户和用户组管理集中化、信息存储集中化、设置安全和访问控制、...
在 Linux 上建立 LDAP 服务器可以提供一个中央身份验证和授权系统,简化用户和组管理。 在 Linux 上建立 LDAP 服务器的过程可以分为三个步骤:安装 OpenLDAP 软件包、配置 slapd.conf 文件和安装 Berkeley DB ...
2. **设置LDAP端口号**:默认情况下,LDAP使用389端口。确保防火墙已打开此端口,同时防病毒软件没有监控它。 3. **配置LDAP的Internet站点参数**:如果启用了从"服务器\Internet站点"文档加载Internet配置,需在...
1. **安装LDAP服务器软件**:在Linux系统上,通常使用`openldap`作为LDAP服务器的软件包,可以通过包管理器(如yum、apt等)进行安装。 2. **配置LDAP目录结构**:确定目录树的顶层命名空间,如国家代码(c=)、...
还需要为全局Catalog和RID主机等关键角色指定服务器。安装完成后,可以通过“Active Directory Users and Computers”管理工具来管理用户、组和其他资源。 **客户工具的使用** 在Windows环境中,管理AD的客户端...
`LDAP`(轻量级目录访问协议)则是一种用于访问和管理分布式目录服务的标准协议,常用于存储和检索用户、组织和其他资源的信息。本篇文章将深入探讨如何使用Delphi来连接并操作LDAP服务器。 首先,我们需要了解...
综上,LDAP服务器的易用性、跨平台兼容性和高效的数据管理能力,使其成为企业级信息存储和访问的重要工具,尤其是在需要快速查询和分布式信息同步的场景下。随着越来越多的开源和商业LDAP服务器的出现,选择和集成...
// LDAP服务器地址和端口 env.put(Context.SECURITY_AUTHENTICATION, "simple"); env.put(Context.SECURITY_PRINCIPAL, "cn=manager,o=anotherbug,c=com"); // 用户DN env.put(Context.SECURITY_CREDENTIALS, ...
1. **创建必需的目录结构**:根据描述,需在LDAP服务器上为“EveryplaceSubscriptionManager”创建相应的目录结构。这可以通过编写特定的LDIF文件并使用`ldapadd`命令来实现,如使用`maketree.ldif`文件。 2. **...
它提供了图形化的界面,方便用户浏览、编辑、管理服务器上的LDAP目录。LdapBrowser 2.82版提供了以下主要功能: 1. **目录浏览**:用户可以查看和搜索LDAP服务器中的条目,包括用户账户、组、OU(组织单元)等。 2....
在 Debian 系统中搭建 LDAP 服务器需要完成安装、配置和测试三个步骤。下面将详细讲解每个步骤的实现过程。 步骤1:安装LDAP 首先,需要安装 LDAP 服务器和相关工具。使用以下命令安装: ``` # apt-get install ...
开放的windows下的LDAP(轻量级的目录处理)服务器,性能很好哦。
这是一个可以登录ldap服务器并取出想要的结果 的一个简单例子。..
标题中的“Win7 XP LDAP服务器 客户端软件”指的是在Windows 7和Windows XP操作系统上使用的Lightweight Directory Access Protocol(轻量级目录访问协议)的服务器和客户端软件。LDAP是一种用于访问和管理分布式...
### CentOS 安装 LDAP 服务器知识点详解 #### 一、YUM安装 LDAP(轻量级目录访问协议)是一种基于TCP/IP的应用层协议,用于访问和管理分布式目录服务。CentOS下安装LDAP服务器通常采用YUM包管理器来简化安装过程。 ...