文档章节

Weblogic以及Tomcat登录认证

DannyTam
 DannyTam
发布于 2015/07/28 09:57
字数 447
阅读 33
收藏 0
调用容器来做认证,我这边搞不定。 建议你们这边还是调用我们提供的接口来做。如果你们坚持想调用使用容器来做认证,可以参考下面方法。
找了一段调用tomcat6容器做认证的方法,但是只支持tomcat6,不怎么适用。其他版本都不怎么支持authenticate这个方法,如果你们这边还需要用下面方式,这个需要你们自己去研究了。
public boolean authenticate(String user, String pwd,HttpServletRequest request, HttpServletResponse response) {
                   try{
                            Class<?> clz = Class.forName("org.apache.catalina.ServerFactory");
                            Method getServerMethod = clz.getMethod("getServer", new Class[]{});
                            Object server = getServerMethod.invoke(clz, new Object[]{});
                            
                            Class<?> serverClz = server.getClass();
                            Method findServiceMethod = serverClz.getMethod("findService", new Class[]{String.class});
                            Object service = findServiceMethod.invoke(server, new Object[]{"Catalina"});
                            
                            Class<?> serviceClz = service.getClass();
                            Method getContainerMethod = serviceClz.getMethod("getContainer", new Class[]{});
                            Object container = getContainerMethod.invoke(service, new Object[]{});
                            
                            Class<?> containerClz = container.getClass();
                            Method getRealmMethod = containerClz.getMethod("getRealm", new Class[]{});
                            Object realm = getRealmMethod.invoke(container, new Object[]{});
                            
                            Class<?> realmClz = realm.getClass();
                            Method authenticateMethod = realmClz.getMethod("authenticate", new Class[]{String.class,String.class});
                            Object principal = authenticateMethod.invoke(realm, new Object[]{user,pwd});
                            
                            if(principal == null){
                                     return false;
                            }
                            return true;
                   }catch(Throwable e){
                            LoggerUtil.info("authenticate exception:" + e.getMessage(),e);
                            return false;
                   }
         }
Weblogic 登录认证
Object result = null;
		try {
			// 5、授权认证,登录的是虚拟用户,而不是umCode
			// weblogic10版本升级,weblogic.servlet.security.ServletAuthentication.login方法在wls8和wls10下参数个数不一样,需做反射处理
			// 待weblogic8环境下线以后,该方法需修改成weblogic8方法的判断
			Method meth = null;
			try {
				meth = Object.class.forName("weblogic.servlet.security.ServletAuthentication").getMethod("login",new Class[] { java.lang.String.class,java.lang.String.class,HttpServletRequest.class,HttpServletResponse.class });
				if (meth == null) {
					meth = Object.class.forName("weblogic.servlet.security.ServletAuthentication").getMethod("login",new Class[] { java.lang.String.class,java.lang.String.class,HttpServletRequest.class });
					if (meth != null) {
						result = meth.invoke(Object.class.forName("weblogic.servlet.security.ServletAuthentication"),new Object[] { v_userName, v_passWord,request });
					}
				} else {
					result = meth.invoke(Object.class.forName("weblogic.servlet.security.ServletAuthentication"),new Object[] { v_userName, v_passWord,request, response });
				}
			} catch (Exception e) {
				logger.info(e.getMessage(), e);
				meth = Object.class.forName("weblogic.servlet.security.ServletAuthentication").getMethod("login",new Class[] { java.lang.String.class,java.lang.String.class,HttpServletRequest.class });
				if (meth != null) {
					result = meth.invoke(Object.class.forName("weblogic.servlet.security.ServletAuthentication"),new Object[] { v_userName, v_passWord,request });
				}
			}
		} catch (Exception e) {
			logger.info(e.getMessage(), e);
			throw new ServletException(e.getMessage());
		}
		// 0:用户正常登陆 1:用户登陆失败
		if (result != null && result instanceof Integer) {
			if (((Integer) result).intValue() != 0) {
				logger.info(LOGIN_FAIL);
				throw new ServletException(LOGIN_FAIL);
			}
		} else if (result == null) {
			logger.info(LOGIN_FAIL);
			throw new ServletException(LOGIN_FAIL);
		}


© 著作权归作者所有

下一篇: 上传图片
DannyTam
粉丝 4
博文 111
码字总数 58790
作品 0
深圳
程序员
私信 提问
安装weblogic不同版本对JDK和Spring的支持度

现在很多人在使用SSH架构(Spring, Struts, Hibernate)开发, Tomcat 上开发完了, 认为往WebLogic上一放, 就可以正常的运行. 然而实际情况并非这么简单. 首先是JDK支持问题, Tomcat 5.0 开始都...

linuxprobe16
2018/11/29
0
0
Apache Directory Studio连接Weblogic内置LDAP

参考:Connect to WebLogic Embedded LDAP using LDAP Browser OBIEE默认使用Weblogic内置LDAP管理用户及组。 要整理已存在的用户及组,此前办法是导出安全数据,文本编辑器打开认证文件,使...

wffger
2018/07/17
0
0
浅谈WebLogic和Tomcat

J2ee开发主要是浏览器和服务器进行交互的一种结构.逻辑都是在后台进行处理,然后再把结果传输回给浏览器。可以看出服务器在这种架构是非常重要的。 这几天接触到两种Java的web服务器,做项目用...

奋斗的小菜一碟
2015/11/12
0
0
搭建weblogic12.1.3

第1章 安装weblogic 下载weblogic12.1.3版本,选择Zip distribution for Mac OSX, Windows, and Linux,将下载的wls1213_dev.zip上传到Linux系统 1.1 下载安装包 linux下安装插件:weblogic ht...

zhj134679
2018/08/15
0
0
linux下weblogic10.3.6的安装

环境准备 linux操作系统:centos64位 jdk版本:1.7 安装包:wls1036_generic.jar 到官网下载 http://www.oracle.com/technetwork/cn/middleware/weblogic/downloads/wls-main-091116-zhs.htm......

allenwe23
2018/08/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

微信小程序和百度小程序开发的一些不同点

1: initActive从onload放到onready中 2: bindtap='{{childTickeData.freeadd?"childticket":""}}',语法错误。会导致页面加载不出来,而且也不报任何错。 3:使用搬家工具,支付api名称转换......

醉雨
31分钟前
1
0
最近执行过的SQL语句查询

SELECT TOP 1000 ST.text AS '执行的SQL语句' , QS.execution_count AS '执行次数' , QS.total_elapsed_time / 10000 AS '耗时' , QS.total_logical_reads AS '逻辑读取次数' , QS.total_lo......

神手--追魂
32分钟前
2
0
从濒临解散到浴火重生,OceanBase 这十年经历了什么?

阿里妹导读:谈及国产自研数据库,就不得不提 OceanBase。与很多人想象不同的是,OceanBase 并非衔着金钥匙出生的宠儿。相反,它曾无人看好、困难重重,整个团队甚至数度濒临解散。 从危在旦...

阿里云官方博客
36分钟前
3
0
阿里开发者招聘节 | 面试题02-04:给定一个二叉搜索树(BST),找到树中第K小的节点

为帮助开发者们提升面试技能、有机会入职阿里,云栖社区特别制作了这个专辑——阿里巴巴资深技术专家们结合多年的工作、面试经验总结提炼而成的面试真题这一次将陆续放出(面试题官方参考答案...

阿里云云栖社区
52分钟前
4
0
使用Redis SETNX 命令实现分布式锁

基于setnx和getset http://blog.csdn.net/lihao21/article/details/49104695 使用Redis的 SETNX 命令可以实现分布式锁,下文介绍其实现方法。 SETNX命令简介 命令格式 SETNX key value 将 ke...

彬彬公子
52分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部