贵州师范学院统一登录中间件对接文档

1. 后台新建一个站点应用

微信截图_20221025095338.png

点击新增站点。

微信截图_20221025095502.png

  • 应用名:站点应用的名称。
  • 应用标识: 站点应用的标识,唯一。
  • 跳转地址: 站点应用统一登录成功后的跳转地址。

微信截图_20221025095338.png

添加成功后,需要将登录地址给学校,让其配置,第三方应用需要通过回调地址来接收登录成功后的数据,在其登录成功后统一登录自动跳转到其配置的回调地址。

2. 第三方系统解密回调返回的数据

登录成功后,统一登录中间件跳转到其配置的回调地址,会带上一个token,然后第三方应用通过/getSSOData/{clientid}, 传其token, 则可以获取到登录的数据,然后根据其AES秘钥进行数据解密则可得到登录的数据。

示例代码:

/**
回调处理demo
**/
@RequestMapping(value = "/ssoRedirect")
@ResponseBody
public Resp ssoRedirect(String token) {
		System.out.println("");
		System.out.println("统一登录成功,token=" + token);
		String getDataUrl = SSO_URL + "/getSSOData/" + APPID; //APPID 用用标识
		NutMap body = NutMap.NEW();
		body.addv("token", token);		
		Header header = Header.create();
		header.addv("Content-Type", "application/json");
		Response resp = Http.post3(getDataUrl, Json.toJson(body), header, 60_000);
		NutMap respMap = NutMap.WRAP(resp.getContent());
		if(respMap.getInt("code") != 200) {
			return Resp.ERROR("SSO登录失败").data(respMap);
		}
		System.out.println("resp=" + resp.getContent());
		
		String content = AESUtils.decrypt(respMap.getString("data"), KEY); //KEY 应用数据AES加密解密秘钥
		System.out.println("数据解密结果: " + content);
		NutMap userData = NutMap.WRAP(content);
		System.out.println("拿到的登录信息: " + Json.toJson(userData));
		return Resp.OK("SSO登录成功").data(userData);
}