bboss 票据实现系统SSO功能介绍 博客分类: bboss 安全认证SSO平台 bbosssso令牌票据
程序员文章站
2024-03-13 11:48:15
...
测试环境应用账号:
appid:gspoffice
secret:52ad4782-9002-4b88-9c70-83858d772b69
第一种方案:比较复杂
登录时获取ticket,自己保存在某个地方(session或者数据库都行):
每次跳转到其他系统获取带有时效性的一次性临时令牌,作为参数传递给其他系统:
token 格式:
{
resultcode: 操作结果码
token:临时token
message:错误信息
}
其他系统得到令牌,通过令牌获取用户账号和工号,获取完毕后临时令牌失效:
第二种方案,更加简单
直接获取临时票据
跳转时获取一个临时性的ticket:
其他系统获取到临时ticket,通过临时ticket获取用户账号和工号,同时临时ticket会失效(临时ticket的有效期在令牌服务器端设置):
接下来我们来运行第二种方案:
在chrome浏览器中输入地址获取临时ticket:
响应以下json报文,说明临时ticket生成正确,ticket的有效期是60秒:
通过上面生成的ticket获取用户账户和工号,在chrome中输入以下请求:
如果浏览器中响应以下json报文,说明通过ticket获取账号和工号正确:
如果浏览器中响应以下json报文,说明ticket已经不存在,获取账号和工号为null:
如果浏览器中响应以下json报文,说明ticket已经失效,获取账号和工号为null:
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}
上一篇: 因果论 博客分类: 转载