`
Dead_knight
  • 浏览: 1200937 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
博客专栏
752c8642-b795-3fe6-946e-a4e845bffdec
Spring Securi...
浏览量:240190
33caa84e-18a6-3036-a82b-6e2106a4de63
clojure专题
浏览量:48914
E17ca077-44df-3816-a3fe-471c43f6e1e5
WebLogic11g
浏览量:236872
社区版块
存档分类
最新评论

模拟用户登录JAAS验证模块的weblogic应用

阅读更多
登录JAAS验证模块的weblogic应用,有两种方法
一、直接使用weblogic本身的api进行实现
import java.io.IOException;

import javax.security.auth.Subject;
import javax.security.auth.callback.CallbackHandler;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import weblogic.security.SimpleCallbackHandler;

public class LoginService extends HttpServlet
{
    protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException
    {
        this.doPost(arg0, arg1);
    }

    protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
    {
        String userName = req.getParameter("userName");
        String password = req.getParameter("password");
        //登录成功后所要访问的url
        String url = req.getParameter("url");

        try
        {
            CallbackHandler handler = new SimpleCallbackHandler(userName, password);
            Subject subject = weblogic.security.services.Authentication.login(handler);
            weblogic.servlet.security.ServletAuthentication.runAs(subject, req);

            res.sendRedirect(req.getContextPath() + "/" + url);
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
    }
}

采用这种方式,weblogic会调用JAAS LoginModule的的login,commit操作

二、使用httpclient框架
                HttpClient client = new HttpClient();
                client.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
                //登录成功后需要访问的url
                GetMethod authget = new GetMethod(url);
                
                try
                {
                    client.executeMethod(authget);
                }
                catch(HttpException httpe)
                {
                    httpe.printStackTrace();
                }
                catch(IOException ioe)
                {
                    ioe.printStackTrace();
                }
                finally
                {
                    authget.releaseConnection();
                }

                NameValuePair[] data = new NameValuePair[2];
                data[0] = new NameValuePair(J_USERNAME, user.getName());
                data[1] = new NameValuePair(J_PASSWORD, user.getPassword());

                /**
                 * 登录页面提交,获取cookie即sessionid
                 * 由于servlet规范中默认session的cookiename属性为:JSESSIONID
                 * 如果本域采用默认JSESSIONID作为cookie的name,则与请求域cookie发生冲突,导致请求域session失效,重新登录
                 * 可在weblogic.xml中配置session的cookiename属性
                 * <session-descriptor>
                 * <session-param>
                 *     <param-name>CookieName</param-name>
                 *     <param-value>LOGIN_SESSIONID</param-value>
                 * </session-param>
                 * </session-descriptor>
                 */
                //JAAS验证servlet,如:REDIRECT_LOGIN=/j_security_check
                PostMethod authpost = new PostMethod(context + REDIRECT_LOGIN);
                authpost.setRequestBody(data);
                try
                {
                    client.executeMethod(authpost);
                    org.apache.commons.httpclient.Cookie[] cookies = client.getState().getCookies();
                    for(int i = 0; i < cookies.length; i++)
                    {
                        javax.servlet.http.Cookie cookie = new javax.servlet.http.Cookie(cookies[i].getName(), cookies[i].getValue());
                        /**
                         * response添加登录成功后产生的cookie
                         */
                        response.addCookie(cookie);
                    }
                    /**
                     * 重定向至目标地址
                     */
                    response.sendRedirect(forword);
                }
                catch(HttpException httpe)
                {
                    httpe.printStackTrace();
                    return;
                }
                catch(IOException ioe)
                {
                    ioe.printStackTrace();
                    return;
                }
                finally
                {
                    authpost.releaseConnection();
                }
2
8
分享到:
评论

相关推荐

    Weblogic扩展JAAS身份验证案例

    JAAS提供了一个框架,通过认证模块(LoginModule)来处理用户登录和验证。每个认证模块可以实现不同的验证逻辑,如基于用户名和密码的验证、智能卡验证等。WebLogic服务器默认集成了多种认证模块,但有时我们需要...

    JAAS登录验证文档

    ### JAAS登录验证知识点 #### 一、JAAS概述 Java Authentication and Authorization Service(JAAS)是Java平台...以上介绍的是JAAS登录验证的基本流程和技术要点,实际应用中可能还需要根据具体需求进行扩展和定制。

    JAAS登录验证文档,里面有详细步骤及例子

    在“JAAS登录验证文档”中,你可能会学到以下关键知识点: 1. **JAAS架构**:JAAS由几个主要组件组成,包括登录模块(Login Module)、主体(Subject)、认证回调(Callback)和配置(Configuration)。登录模块...

    JAAs验证机制.doc

    JAAS的核心是登录配置文件,这是一个XML或文本文件,定义了应用程序使用的登录模块及其配置参数。登录模块是实现具体认证逻辑的组件,如数据库认证、LDAP认证等。登录配置文件中定义了如何组合这些登录模块来完成...

    java JAAS登陆验证

    **JAAS 登录验证机制** JAAS的核心概念是登录模块(LoginModule),它是处理用户身份验证逻辑的组件。开发者可以编写自定义的LoginModule来适应各种认证需求,如用户名/密码、数字证书、智能卡等。每个LoginModule...

    JAAS 身份验证技术入门

    ### JAAS身份验证技术入门详解 #### 一、JAAS概览 JAAS,全称为Java ...通过深入了解JAAS的原理和工作流程,开发人员能够构建出更加安全、灵活的应用程序,有效管理用户身份验证和授权,提升整体系统的安全性。

    JAAS(JAVA验证与授权服务)完整示例

    它为应用程序提供了一种标准化的方式来处理用户身份验证和权限分配,从而确保只有经过验证的用户才能访问受保护的资源。本示例将通过具体的代码演示JAAS的核心功能。 在JAAS中,认证过程涉及验证用户的身份,而授权...

    利用JAAS实现简单的页面验证与授权

    Java Authentication and Authorization Service (JAAS) 是 Java 平台提供的一种安全框架,它主要用于实现应用级别的身份验证和授权服务。JAAS 的出现是对 Java 安全性的增强,尤其是在用户认证与授权方面。 在 ...

    在JBOSS下自定义JAAS登录模块的示例

    本示例利用JBoss提供的JAAS支持,通过很简单的代码实现了登录和访问控制,能够很好的从一个应用移植到另一个应用(当然仅限JBoss环境),只要修改一些xml和数据库的配置就可以了。 本示例用了一些hibernate的东西读取...

    websphere 6 JAAS登陆例子

    LDAP是一种开放标准的目录访问协议,常用于存储用户账户信息并提供快速查找。在Websphere环境中,可以配置LDAP服务器作为认证源,使得用户可以通过他们的 LDAP 账户登录到应用服务器,这样可以集中管理用户身份和...

    JAAS简介及实例

    Java Authentication and Authorization Service(JAAS)是Java平台标准版(Java SE)的一部分,它提供了一种框架,用于在Java应用程序中实现用户身份验证和授权。JAAS的主要目标是解决安全问题,确保只有经过身份...

    JAAS in Web Applications

    - **JAAS模块(Login Modules)**:JAAS的核心是登录模块,它们是可插入的组件,负责实际的身份验证工作。登录模块可以是基于数据库的、LDAP目录的,甚至可以是kerberos等更复杂的身份验证机制。 **2. JAAS配置** -...

    JAAS:灵活的Java安全机制

    通过添加验证主题(即用户或其他实体)的能力以及基于验证标识的授权功能,JAAS极大地增强了Java的安全性。JAAS通过引入一个抽象层,使得应用程序能够独立于底层的具体验证和授权机制,从而简化了涉及Java Security...

    jaas规范实现代码

    4. **配置文件(Configuration File)**:JAAS 使用配置文件来指定哪些登录模块应用于哪个主体(Subject,代表用户或实体),以及它们的配置选项。 现在,让我们来看看如何使用纯 Java 文件实现一个简单的 JAAS ...

    JAAS学习笔记

    - 它的核心概念包括:Subject(主体)、Principal(角色)、CallbackHandler(回调处理器)和LoginModule(登录模块)。 2. **认证过程**: - 用户尝试访问受保护的资源时,JAAS会启动认证过程。 - LoginModule...

    JAAS简介及示例代码

    3. **验证**:登录模块使用配置的验证机制来检查用户凭证的有效性。如果验证成功,登录模块将创建一个`Subject`对象,该对象包含了用户的身份信息和其相关的权限。 4. **授权**:一旦用户被验证,系统会检查`...

    JAAS In Action download

    在JAAS中,认证过程通过一个名为“登录模块”(Login Module)的插件化机制来实现,它负责收集和验证用户的凭证。 2. **授权(Authorization)**: 授权是在用户通过认证后,决定用户可以访问哪些资源或执行哪些操作...

    JAAS认证与授权教程

    Java Authentication and Authorization Service (JAAS) 是Java平台中用于安全性的关键组件,它提供了一种框架,使得应用程序能够实现用户身份验证和权限管理。在这个教程中,我们将深入探讨JAAS的核心概念、工作...

Global site tag (gtag.js) - Google Analytics