`
bravewu
  • 浏览: 49368 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

如何从WAS上动态获取LDAP服务器主机名称和端口号

    博客分类:
  • Java
阅读更多
偶做的一个项目是使用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");
		}
	}
}


1
0
分享到:
评论
1 楼 wangqh_2008 2013-03-10  
有点没有看明白呀,你在WAS控制台已经配置LDAP主机名和端口了,怎么还需要代码?

相关推荐

    LDAP服务器资料,很经典的

    综上所述,LDAP服务器作为重要的目录服务工具,因其快速查询、跨平台访问和分布式特性,在企业级应用中广泛使用。无论是用于管理用户身份验证、存储配置信息还是安全管理,LDAP都能提供高效且灵活的解决方案。学习和...

    服务器搭建之十四LDAP服务器.docx

    本文将详细介绍如何在Xubuntu操作系统上搭建一个基于slapd、ldap-utils、db-util、phpldapadmin和apache2的LDAP服务器。尽管在尝试过程中遇到了问题,但我们将按步骤解析整个过程,以便于理解可能出现的问题。 首先...

    在Linux上搭建LDAP服务器

    "在Linux上搭建LDAP服务器" LDAP( Lightweight Directory Access Protocol,轻型目录访问协议)是一种集中管理访问、认证和授权的协议。它提供了用户和用户组管理集中化、信息存储集中化、设置安全和访问控制、...

    在Linux上建立LDAP服务器

    在 Linux 上建立 LDAP 服务器可以提供一个中央身份验证和授权系统,简化用户和组管理。 在 Linux 上建立 LDAP 服务器的过程可以分为三个步骤:安装 OpenLDAP 软件包、配置 slapd.conf 文件和安装 Berkeley DB ...

    图解使用Domino建立LDAP服务器的过程

    2. **设置LDAP端口号**:默认情况下,LDAP使用389端口。确保防火墙已打开此端口,同时防病毒软件没有监控它。 3. **配置LDAP的Internet站点参数**:如果启用了从"服务器\Internet站点"文档加载Internet配置,需在...

    LDAP服务器配置(协议+服务器+客户机+管理+安全)

    1. **安装LDAP服务器软件**:在Linux系统上,通常使用`openldap`作为LDAP服务器的软件包,可以通过包管理器(如yum、apt等)进行安装。 2. **配置LDAP目录结构**:确定目录树的顶层命名空间,如国家代码(c=)、...

    WINDOWS下搭建LDAP服务器.

    还需要为全局Catalog和RID主机等关键角色指定服务器。安装完成后,可以通过“Active Directory Users and Computers”管理工具来管理用户、组和其他资源。 **客户工具的使用** 在Windows环境中,管理AD的客户端...

    使用Delphi连接LDAP服务器

    `LDAP`(轻量级目录访问协议)则是一种用于访问和管理分布式目录服务的标准协议,常用于存储和检索用户、组织和其他资源的信息。本篇文章将深入探讨如何使用Delphi来连接并操作LDAP服务器。 首先,我们需要了解...

    LDAP服务器.pdf

    综上,LDAP服务器的易用性、跨平台兼容性和高效的数据管理能力,使其成为企业级信息存储和访问的重要工具,尤其是在需要快速查询和分布式信息同步的场景下。随着越来越多的开源和商业LDAP服务器的出现,选择和集成...

    Windows_7_下搭建LDAP服务器并使用JNDI

    // LDAP服务器地址和端口 env.put(Context.SECURITY_AUTHENTICATION, "simple"); env.put(Context.SECURITY_PRINCIPAL, "cn=manager,o=anotherbug,c=com"); // 用户DN env.put(Context.SECURITY_CREDENTIALS, ...

    将 LDIF 文件导入 LDAP 服务器.txt

    1. **创建必需的目录结构**:根据描述,需在LDAP服务器上为“EveryplaceSubscriptionManager”创建相应的目录结构。这可以通过编写特定的LDIF文件并使用`ldapadd`命令来实现,如使用`maketree.ldif`文件。 2. **...

    LdapBrowser2.82版和LDAP使用手册

    它提供了图形化的界面,方便用户浏览、编辑、管理服务器上的LDAP目录。LdapBrowser 2.82版提供了以下主要功能: 1. **目录浏览**:用户可以查看和搜索LDAP服务器中的条目,包括用户账户、组、OU(组织单元)等。 2....

    debian下ldap服务器配置

    在 Debian 系统中搭建 LDAP 服务器需要完成安装、配置和测试三个步骤。下面将详细讲解每个步骤的实现过程。 步骤1:安装LDAP 首先,需要安装 LDAP 服务器和相关工具。使用以下命令安装: ``` # apt-get install ...

    windows下的ldap服务器

    开放的windows下的LDAP(轻量级的目录处理)服务器,性能很好哦。

    连接ldap服务器实例

    这是一个可以登录ldap服务器并取出想要的结果 的一个简单例子。..

    Win7 XP LDAP服务器 客户端软件

    标题中的“Win7 XP LDAP服务器 客户端软件”指的是在Windows 7和Windows XP操作系统上使用的Lightweight Directory Access Protocol(轻量级目录访问协议)的服务器和客户端软件。LDAP是一种用于访问和管理分布式...

    CentOS 安装 LDAP 服务器

    ### CentOS 安装 LDAP 服务器知识点详解 #### 一、YUM安装 LDAP(轻量级目录访问协议)是一种基于TCP/IP的应用层协议,用于访问和管理分布式目录服务。CentOS下安装LDAP服务器通常采用YUM包管理器来简化安装过程。 ...

Global site tag (gtag.js) - Google Analytics