cas

cas添加url单点漫游认证

2017-09-08  本文已影响47人  sweetMemories

url单点漫游认证

url单点漫游认证模式说明

应用场景

接入方式

userName //业务系统用户帐号  
strSysDatetime//时间戳  
verify//校验码  
url//访问业务系统的某个地址
pt_key//为双方约定的密钥,通常采用字符串方式

补充说明

代码部分,可参考cas4.2.7添加新页面

controller代码(部分)

@Controller
public class UrlSSOController extends AbstractUrlViewController {

    private final DataSource dataSource;
    private final JdbcTemplate jdbcTemplate;

    @Autowired
    public UrlSSOController(@Qualifier("dataSource")
                                    final DataSource dataSource) {
        this.dataSource = dataSource;
        jdbcTemplate = new JdbcTemplate(dataSource);

    }

    @Override
    protected String getViewNameForRequest(HttpServletRequest request) {

        String appid = request.getParameter("appid");
        String url = request.getParameter("url");

        //获取用户名,因为session会被销毁,无法存储信息,故根据ip从登录日志中查找
        String ip = getRemoteAddr(request);
        CsUserLogin csUserLogin = getUserLogin(ip);
        String userName = csUserLogin.getLoginName();

        //获取ptKey
        List<CsWebappNode> webappNodeList = getWebapp(appid);
        String ptKey = webappNodeList.get(0).getAppSecret();
        //获取系统时间
        String strSysDatetime = DateUtils.getDateTime();
        //获取MD5,明文为appID+userName+ptKey+sysDatetime
        String md5Info = userName+ptKey+strSysDatetime;
        MD5Util md5Util = MD5Util.getInstance();
        String md5 = md5Util.calcMD5(md5Info);

        String returnUrl ="";


        try {
            String params = "userName="+userName+"&strSysDatetime="+URLEncoder.encode(strSysDatetime, "utf-8")+"&verify="+md5;
            if (url.contains("?")){
                returnUrl = url+params;
            }else{
                returnUrl = url+"?"+params;
            }
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return "redirect:"+returnUrl;
    }

}

配置WEB-INF/spring-configuration/applicationContext.xml,新增bean并配置

web.xml配置

上一篇 下一篇

猜你喜欢

热点阅读