论坛首页 Java企业应用论坛

bboss 票据实现系统SSO功能介绍

浏览 2726 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2016-03-10   最后修改:2016-03-10
测试环境应用账号:
appid:gspoffice
secret:52ad4782-9002-4b88-9c70-83858d772b69

第一种方案:比较复杂



登录时获取ticket,自己保存在某个地方(session或者数据库都行):
String url = "http://bboss.bbossgroups.com/token/v2/genTicket.freepage?appid="+appid + "&secret="+secret + "&account="+account+ "&worknumber="+worknumber;
String ticket = org.frameworkset.spi.remote.http.HttpReqeust.httpPostforString(url);
ticket 格式:
{
ticket:令牌
resultcode: 操作结果码
livetime:ticket有效期,每次访问时会刷新访问时间,以最近访问时间为起点计算有效期,有效期内都可以使用
message:错误信息

}


每次跳转到其他系统获取带有时效性的一次性临时令牌,作为参数传递给其他系统:
String url = "http://bboss.bbossgroups.com/token/v2/getAuthTempToken.freepage?appid="+appid + "&secret="+secret + "&ticket="+ticket;
String token = org.frameworkset.spi.remote.http.HttpReqeust.httpPostforString(url);

token 格式:
{

resultcode: 操作结果码
token:临时token
message:错误信息
}

其他系统得到令牌,通过令牌获取用户账号和工号,获取完毕后临时令牌失效:

String url = "http://bboss.bbossgroups.com/checktoken/v2/checkToken.freepage?appid="+appid + "&secret="+secret + "&token="+token;
String personresult = org.frameworkset.spi.remote.http.HttpReqeust.httpPostforString(url);

personresult 格式:
{
validateResult:boolean 如果获取到用户信息则为true,否则为false
resultcode: 操作结果码
userAccount:用户账号
worknumber:用户工号
message:错误信息

}




第二种方案,更加简单

直接获取临时票据

跳转时获取一个临时性的ticket:
String url = "http://bboss.bbossgroups.com/token/v2/getTempTicket.freepage?appid="+appid + "&secret="+secret + "&account="+account+ "&worknumber="+worknumber;
String ticket = org.frameworkset.spi.remote.http.HttpReqeust.httpPostforString(url);
ticket 格式:
{
ticket:令牌
resultcode: 操作结果码
livetime:ticket有效期,每次访问时会刷新访问时间,以最近访问时间为起点计算有效期,有效期内都可以使用
message:错误信息

}




其他系统获取到临时ticket,通过临时ticket获取用户账号和工号,同时临时ticket会失效(临时ticket的有效期在令牌服务器端设置):

String url = "http://bboss.bbossgroups.com/checktoken/v2/checkTicket.freepage?appid="+appid + "&secret="+secret + "&ticket="+ticket;
String personresult = org.frameworkset.spi.remote.http.HttpReqeust.httpPostforString(url);

personresult 格式:
{
validateResult:boolean 如果获取到用户信息则为true,否则为false
resultcode: 操作结果码
userAccount:用户账号
worknumber:用户工号
message:错误信息

}


接下来我们来运行第二种方案:

在chrome浏览器中输入地址获取临时ticket:
http://bboss.bbossgroups.com/token/v2/getTempTicket.freepage?appid=gspoffice&secret=52ad4782-9002-4b88-9c70-83858d772b69&account=yinbp&worknumber=10006673


响应以下json报文,说明临时ticket生成正确,ticket的有效期是60秒:
{"resultcode":"ok","ticket":"tmptk_564b1212-7dce-4180-a885-44b235bced05","livetime":60000,"message":null}


通过上面生成的ticket获取用户账户和工号,在chrome中输入以下请求:
http://bboss.bbossgroups.com/checktoken/v2/checkTicket.freepage?appid=gspoffice&secret=52ad4782-9002-4b88-9c70-83858d772b69&ticket=tmptk_e8d179c3-cfe9-41cb-ba81-d466e19c5e0f

如果浏览器中响应以下json报文,说明通过ticket获取账号和工号正确:

{"resultcode":"ok","userAccount":"yinbp","worknumber":"10006673","message":null,"validateResult":true}


如果浏览器中响应以下json报文,说明ticket已经不存在,获取账号和工号为null:
{"resultcode":"TICKETNOTEXIST","userAccount":null,"worknumber":null,"message":null,"validateResult":false}


如果浏览器中响应以下json报文,说明ticket已经失效,获取账号和工号为null:
{"resultcode":"TICKETEXPIRED","userAccount":null,"worknumber":null,"message":null,"validateResult":false}


   发表时间:2016-03-17  
ticket译成凭证比较好吧,
0 请登录后投票
   发表时间:2016-03-23  
叫法而已,关键在功能
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics