SSO跟踪
来源:互联网 发布:网络终结者有何用 编辑:程序博客网 时间:2024/06/04 18:25
1 . 用户首次访问应用端,未携带cookie数据. 应用端会让用户重定向到服务器.
请求:http://192.168.10.110:8080/ITSSSOClient/index.jsp
重定向:http://192.168.10.110:8080/ITSSSO/SSOAuth?action=preLogin&setCookieURL=http://192.168.10.110:8080/ITSSSOClient/setCookie&gotoURL=http://192.168.10.110:8080/ITSSSOClient/
请求:http://192.168.10.110:8080/ITSSSOClient/index.jsp
重定向:http://192.168.10.110:8080/ITSSSO/SSOAuth?action=preLogin&setCookieURL=http://192.168.10.110:8080/ITSSSOClient/setCookie&gotoURL=http://192.168.10.110:8080/ITSSSOClient/
2.服务器端收到用户的请求,先取得action=preLogin.判断cookie为null,然后转发到login.jsp
用户的浏览器显示服务器端的login.jsp页面
注:服务端代码133行,地址栏上的URL不改变
3.用户填写表单,登录.
登录时,应用端会生成一个cookie值,用于传递给服务端处理.
服务器端会获取action=login(来至login页面表单里的action的name)
并进入doLogin, 读取username和password做校验
生成一个唯一码进行加密,且服务端将储存用户登录信息(用户名,登录时间,过期时间),并将加密后的cookie信息返回给应用端.
让浏览器将执行:
out.print("<script type='text/javascript'>");
out.print("document.write(\"<form id='url' method='post' action='" + setCookieURL + "'>\");");
out.print("document.write(\"<input type='hidden' name='gotoURL' value='" + gotoURL + "' />\");");
out.print("document.write(\"<input type='hidden' name='ticket' value='" + encodedticketKey + "' />\");");
out.print("document.write(\"<input type='hidden' name='expiry' value='" + expiry + "' />\");");
out.print("document.write('</form>');");
out.print("document.getElementById('url').submit();");
out.print("</script>");
setCookieURL : http://127.0.0.1:8080/ITSSSOClient/setCookie
gotoURL :http://127.0.0.1:8080/ITSSSOClient/
encodedticketKey :079482AC1F897530ED61D7B0C891A3EFBE2A3A6F2BAA762036E97E9F5415E625AD6A88B4FA37833D
expiry :604800
4.应用端执行setCookie方法,保存服务器端返回的数据参数.
页面跳转到http://127.0.0.1:8080/ITSSSOClient/
此次页面跳转,携带了服务器返回的cookie
5. 应用端拦截跳转链接,进入authCookie方法,填充action值为authTicket.
携带{{action,authTicket},{SSOID,079482AC1F897530ED61D7B0C891A3EFBE2A3A6F2BAA762036E97E9F5415E625AD6A88B4FA37833D}}信息去访问认证系统=>http://127.0.0.1:8088/ITSSSO/SSOAuth
6.服务端再次接受到应用端的请求,判断action=authTicket,并做相应处理(将步骤5中的SSOID值进行解密判断是否正确)
判断正确:
返回信息: {"error":false,"username":XXXX}
7.应用端此刻还在authCookie方法中,取得服务端返回的信息(主要是在resp中填充username的值).在http://127.0.0.1:8088/ITSSSOClient/ ,将页面返回给浏览器.(最初请求的页面)
0 0
- SSO跟踪
- sso
- SSO
- SSO
- SSO
- SSO
- sso
- SSO
- SSO
- SSO
- SSO
- sso
- SSO
- sso
- sso
- SSO
- SSO
- SSO
- gp_gather_object_size script
- Mac上使用Source Tree的一些总结
- 关于sony等机型拍照后返回重载了Activity的问题
- Python linecache、glob模块
- iOS学习 textFile的键盘
- SSO跟踪
- android支付宝支付
- android冒烟测试与单元测试
- import com.sun.image.codec.jpeg.JPEGCodec不通过 找不到包
- iOS App 账号转移 图文详解
- Android两大动画之Frame(帧动画)详解
- spring jasypt加密
- 异步网络IO_select_poll_epoll的区别__select和poll只有水平触发_select,FD_ZERO,FD_SET,FD_ISSET,FD_CLR_epoll的水平触发(ET)有
- 回音消除、噪音抑制的原理