方式2- 单点登录-与其他应用集成
目录

单点登录-方式2

应用场景

用户的应用系统与本产品分别单独部署,用户的应用系统中集成本产品提供的安全模块,在本产品中管理用户、机构等信息。此时在用户的应用系统中可以只是提供登录窗口,单点登录时实际通过本产品系统进行登录用户的身份验证,可以根据返回的验证结果在用户的应用系统中决定下一步的操作。

验证用户名、密码,返回验证结果

通过安全调用模块的GezEntry().check()方法传递用户名、密码,发送请求到产品系统进行用户名、密码验证,验证后可获取验证结果,并做下一步处理。通过该方法完成身份验证后不会在产品系统生成session,而是自动在用户应用系统安全调用模块中记录验证通过的用户名,下次同一个用户再进行跨系统调用时,会自动在请求中添加用户名。

调用方法:JSONObject loginResult = new GezEntry (request, response).check(username, password);

参数说明:

返回值:JSONObject  {status:success} / {status:fail, msg: 用户名密码错误}

注意:check方法必须在后台调用。

验证后进行跨系统调用

通过GezEntry().check()方法完成身份验证后进行跨系统功能调用,安全调用模块将自动在请求中添加用户名,不需要手工在参数map中添加。

例如下面的示例代码,进行单点登录身份验证后就调用报表展现模块打开一张报表,若验证不通过给予提示:

<script type="text/javascript" language="javascript">
     // 单点登录方式2
    function loginSystem2(){
        //获取用户输入的用户名、密码
        var username = $("#username").val();
        var password = $("#password").val();
        var params = {"username":username,"password":password};
        //发送用户验证请求,由loginSystem.jsp在后台调用安全模块的check方法进行身份验证
        var ajax = new AjaxUtil();
        ajax.sendAjax("loginSystem.jsp",params,successFunc,errorFunc);
    }
    //用户验证通过后展现报表
    function successFunc(data){
        // 访问报表所需参数,resID:资源ID,username:用户名
        // 但通过GezEntry().check()方法通过身份验证后,username无需自行设置,将由安全调用模块自动添加
        // 因此,这里只设置参数resID
        var params = {resID : "11946"};
        <%
            Map<String, String> paramMap = new HashMap<String, String>();
            // 生成安全校验信息
            paramMap.put("resID","11946");
            String secInfo = SecInfoUtils.generate(request, paramMap); 
        %>
        // 调用报表展现功能,调用时各参数含义依次为:模块ID、所需参数、安全校验信息、展示位置,其中SR是报表展现模块的模式ID   
        // 展示位置:_blank--新页面打开、_self--本页面打开、iframeName--在指定的iframe中打开
        new GezEntry("SR", params, "<%=secInfo %>", "_blank").enter();
    }
    //用户验证失败进行提示 
    function errorFunc(data){
        alert(data.msg);
    }
</script>

loginSystem.jsp中的代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="com.customer.entry.GezEntry"%>
<%@ page import="org.json.JSONObject"%>
<%
    //获取用户名、密码
    String username = request.getParameter("username");
    String password = request.getParameter("password");
    JSONObject json = null;
    //调用GezEntry().check()方法进行身份验证并返回验证结果
    json = new GezEntry(request,response).check(username,password);
    out.print(json.toString()); 
%>