Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

一、自动以管理后台SSO脚本

 

 
//BI服务器地址
var macoHost =  "http://bi.xxx.com";
 
//所有登录完成后跳转到的BI页面
var redirectUrl = request.getParameter("redirectUrl");
if(redirectUrl != null && redirectUrl.length() > 0) {
    redirectUrl = java.net.URLEncoder.encode(redirectUrl, "utf-8")
}
//跳到插件页面,做统一认证跳转准备
var urlStr = macoHost+"/plugin/sso/auth.do?userRedirectUrl="+redirectUrl;
//检查header, 可以针对不同header做跳转
var userAgent = request.getHeader("User-Agent");
logger.debug("User Agent: "+userAgent);
if(userAgent != null && userAgent.indexOf("xapp")>-1){
    urlStr = macoHost+"/plugin/sso/appmobile/auth.do?app=xapp&redirectUrl="+redirectUrl;
}
logger.debug("url str: "+urlStr);
result.setSuccess(true);
//跳转
response.sendRedirect(urlStr);

 

二、插件页面:   /plugin/sso/auth

 

var version = java.lang.System.getProperty("java.version");
if (version.startsWith("1.8.0")) { 
    load("nashorn:mozilla_compat.js"); 
}
importPackage(java.lang);
importPackage(java.util);
importPackage(org.apache.commons.lang3.time);
importPackage(org.apache.commons.lang3);
importPackage(com.alibaba.fastjson);
importPackage(org.apache.commons.codec.binary);
importPackage(org.apache.http.impl.client);
importPackage(org.apache.http.client.methods);
importPackage(org.apache.http);
importPackage(com.weibaobiao.command);

//BI服务器地址
var macoHost =  "http://bi.xxx.com";

//统一认证平台服务器地址
var baseUrl = "https://idms.app.com/ms_oauth";
//统一认证平台相关参数
var client_id="xxx";
var client_secret = "yyy";

//统一认证登录后,跳转回来的地址
var callbackUrl = macoHost+"/plugin/sso/auth.do";
callbackUrl = java.net.URLEncoder.encode(callbackUrl, "utf-8");

//本页面处理完成后,跳到BI的地址,这里设置为后台管理页面,也可以跳到报表页面
var redirectUrl = macoHost+"/workbench/home.do";

//也可以根据参数来处理跳转地址
var viewreport = request.getParameter("viewreport");
logger.warn("viewreport: "+viewreport);
if(viewreport != null && viewreport === "1") {
    var theUrl = request.getParameter("redirectUrl");
    logger.warn("theUrl: "+theUrl);
    if(theUrl != null && theUrl !== "") {
        redirectUrl = java.net.URLEncoder.encode(theUrl);
    }
}

//用户在统一认证页面登录后,会跳转回本页面,并携带一个参数,一般这个参数是code
var code = request.getParameter("code");
logger.warn("oauth code: "+code);
 
//错误信息
var error_message = request.getParameter("error_message");

//当前日期
var nowTime = new Date().getTime()+"";
logger.warn("nowTime: "+nowTime);

var debugObj = new JSONObject();

if(error_message != null && error_message !== ""){
    result.setSuccess(false);
    result.setData(error_message);
} else if(code == null || code === "") {
    
	//如果code参数是空,就跳转到统一认证的登录页面
	
	//可以用session记录一些参数
    var userRedirectUrl = request.getParameter("userRedirectUrl");
    logger.warn("userRedirectUrl: "+userRedirectUrl);
    if(userRedirectUrl != null && userRedirectUrl.length > 0) {
        request.getSession().setAttribute("userRedirectUrl", userRedirectUrl);
    }
 
	//统一认证的登录页面,自行根据文档调整参数
    var goUrl = baseUrl+"/oauth2/authorize?client_id="+client_id+"&response_type=code&redirect_uri="+callbackUrl+"&scope=xxx"+"&redirectUrl="+redirectUrl;
    logger.warn("OAuth2 url: "+goUrl);
    response.sendRedirect(goUrl);
} else {
    
	//如果code参数不为空,说明用户已经在统一认证登录页面登录成功了,需要根据code参数调用统一认证平台的接口获取用户信息
 
    var userRedirectUrl = request.getSession().getAttribute("userRedirectUrl");
    request.getSession().setAttribute("userRedirectUrl", null);
    if(userRedirectUrl != null && userRedirectUrl.length > 0 && userRedirectUrl !== "null") {
        logger.warn("userRedirectUrl: "+userRedirectUrl);
        redirectUrl = userRedirectUrl;
    }
    
    logger.warn("redirectUrl: "+redirectUrl);
    
	//自行根据文档跳转这里的逻辑

    var access_token = null;
    
    try{

        //获取access_token
        if(true){
            debugObj.put("code", code);
            var authStr = client_id+ ":"+client_secret;
            authStr = ""+new java.lang.String(org.apache.commons.codec.binary.Base64.encodeBase64(authStr.getBytes("utf-8")), "utf-8");
            logger.error("Authorization: "+"Basic " + authStr);
            var goUrl = baseUrl+"/oauth2/tokens?grant_type=authorization_code&redirect_uri="+callbackUrl+"&code="+code;
            logger.warn("Auth code url: "+goUrl);
            var httpclient = org.apache.http.impl.client.HttpClients.createDefault();
        	var post = new HttpPost(goUrl);
        	post.addHeader("Authorization", "Basic " + authStr);
        	var resp = httpclient.execute(post);
        	var status = resp.getStatusLine().getStatusCode();
        	logger.error("status: "+status);
        	if (status === 200) {
        		var entity = resp.getEntity();
        		var content = org.apache.http.util.EntityUtils.toString(entity);
        		logger.error("content: "+content);
				var respObj = JSON.parseObject(content);
        		access_token = StringUtils.substringBetween(content, "\"access_token\":\"", "\"");
        		logger.error("access_token: "+access_token);
        	}

        	result.setData("["+status+"] "+code);
        }
        
        
        
    	//获取用户信息
    	if(access_token != null) {
    	    debugObj.put("access_token", access_token);
            var goUrl = baseUrl+"/resources/userprofile/me";
            logger.warn("User profile url: "+goUrl);
            var httpclient = org.apache.http.impl.client.HttpClients.createDefault();
        	var post = new HttpGet(goUrl);
        	post.addHeader("Authorization", access_token);
        	var resp = httpclient.execute(post);
        	var status = resp.getStatusLine().getStatusCode();
        	logger.error("status: "+status);
        	if (status === 200) {
        		var entity = resp.getEntity();
        		var content = org.apache.http.util.EntityUtils.toString(entity);
        		logger.error("User profile: "+content);
        		//var contentObj = com.alibaba.fastjson.JSONObject.parseObject(content);
        		var uid = StringUtils.substringBetween(content, "\"uid\":\"", "\"");
        		logger.error("uid: "+uid);
        		var userDao = beanService.getBean("userDaoImpl");
        		var loginUser = userDao.findByUsername(uid);
        		if(loginUser == null) {
        		    uid = uid.toLowerCase();
        		    loginUser = userDao.findByUsername(uid);
        		}
        		logger.error("loginUser: "+loginUser);
        		if(loginUser == null){
        		    var sb = new StringBuilder();
        		    
        		    sb.append("<p><img style=\"margin:0;height:128px;\" src=\"data:image/jpeg;base64,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\"/><p/>");
        		    sb.append("<p>------------------------------------------------------------------------------------------------------------------------------------------------------<p/>");
                    sb.append("<p>Sorry, you do not have permission to login DaaS Mobile. </p>");
                    sb.append("<p>Please contact platform administrator to start data exploration journey.</p>");
                    sb.append("<p>Platform administrators:<br/>Fangxin.Zhou@bmw-brilliance.cn<br/>Xinying.Wang@partner.bmw-brilliance.cn </p>");
                    sb.append("<p>See more: <br/><a href=\"https://atc.bmw-brilliance.cn/confluence/display/P20191209002/User+Entrance\">https://atc.bmw-brilliance.cn/confluence/display/P20191209002/User+Entrance</a></p>");
                    sb.append("<p>------------------------------------------------------------------------------------------------------------------------------------------------------<p/>");
                    
                    response.setContentType("text/html;charset=utf-8");
                    request.getSession().setAttribute("pageTitle", "DaaS Workbench sccess denied.");
                    request.getSession().setAttribute("message", sb.toString());
                    var urlStr = "/view/message.do";
                    response.sendRedirect(urlStr);
                }else{
                    var userService = beanService.getBean("userServiceImpl");
                    var uc = new UserCommand();
    				uc.setUsername(uid);
    				uc.setPassword(loginUser.getPassword());
    				userService.userLogin(request, uc, false);
                    response.sendRedirect(redirectUrl);
                    logger.error("Redirect to: "+redirectUrl);
                }
        	}
    	    
    	}
    }catch(e){
        logger.error(e.toString());
    }
    
    //var tokenResp = webService.post(goUrl, header, "");
    
  
}

result.setSuccess(false);

 

 

 

 

 

 

 

 

 

 

 

 

  • No labels