京东的登录

http://blog.chinaunix.net/uid-25508399-id-3431705.html

 

 

http://passport.jd.com/new/helloService.ashx?callback=jQuery8882675&_=1466472004370 

 

Cookie:unpl=V2_ZzNtbRBREBZyX0ZTf0paBmIGFltLUEsdJQFCBnwQWVVjB0VdclRCFXIUR1NnGlwUZgsZXUpcQhJFCHZXchBYAWcCGllyBBNNIEwHDCRSBUE3XHxcFVUWF3RaTwEoSVoAYwtBDkZUFBYhW0IAKElVVTUFR21yVEIldQl2U3kQWQduAhtYcmdEJUU4Q1xzHFoAVwIiXHIVF0l8DEFQeR4RAmUKF19LVkoQRQk%3d; alc=WioZkFyioLHO7qwxz3UR2Q==; mp=%E9%A3%9E%E5%A4%9C%E6%A2%A6%E9%9B%AA; thor=185EAB6657DE6B48E3736B1C6D5A0A82F91C09D41D3F1AAA4C7463AED8303FAE2D0B690F2D6C6333EBAB9891C1FE15BD63B807EF8734C20CE23B7D6835B080507CC8A5D69AB577D9905D4775E4F776B922B32C9F445837CEE0F00CA86C97627BBA3E50DFCC9F740E82C495798CEF08B12B399E818BA744238423814080D972FE; ol=1; _tp=j1dIy9aI%2BVFh5v6XwDjADcBmwvIo3UDRg8kscUE8au4JTwsvs7VJlvNwWTeGL5Mj; logining=1; unick=%E9%A3%9E%E5%A4%9C%E6%A2%A6%E9%9B%AA; _pst=%E9%A3%9E%E5%A4%9C%E6%A2%A6%E9%9B%AA; TrackID=146OJ_-nMkyfbaPrVgojWM9b3eYT36R8o9tbVxq_aArH40YJ7gY-Ip-bS_Mvd5SFVrokysuLG6UB5MTctgNM-GA; pinId=Y6OgKhzy4XtkZcQXK_hVcQ; ceshi3.com=BrUbQ13nJeg2MnFpre9TLzk6FaSpEkTUFsiH0A35qeQ; pin=%E9%A3%9E%E5%A4%9C%E6%A2%A6%E9%9B%AA; alpin=%E9%A3%9E%E5%A4%9C%E6%A2%A6%E9%9B%AA; __jda=122270672.638438084.1466471968.1466471968.1466471969.1; __jdb=122270672.3.638438084|1.1466471969; __jdc=122270672; __jdv=122270672|baidu-pinzhuan|t_288551095_baidupinzhuan|cpc|0f3d30c8dba7459bb52f2eb5eba8ac7d_0_c7b26f165b7244578699a85c684a55f1; __jdu=638438084

 

返回值

jQuery8882675({

    "sso": [

        "\/\/sso.jd.com\/setCookie?t=sso.360buy.com&callback=?",

        "\/\/sso.jd.com\/setCookie?t=sso.jcloud.com&callback=?",

        "\/\/sso.jd.com\/setCookie?t=sso.wangyin.com&callback=?",

        "\/\/sso.jd.com\/setCookie?t=sso.jd360.hk&callback=?",

        "\/\/sso.jd.com\/setCookie?t=sso.jd.hk&callback=?",

        "\/\/sso.jd.com\/setCookie?t=sso.jdpay.com&callback=?",

        "\/\/sso.jd.com\/setCookie?t=sso.yiyaojd.com&callback=?",

        "\/\/sso.jd.com\/setCookie?t=sso.baitiao.com&callback=?"

    ],

    "info": "<a href=\"\/\/home.jd.com\" target=\"_blank\" class=\"link-user\">飞夜梦雪<\/a>&nbsp;&nbsp;<a href=\"https:\/\/passport.jd.com\/uc\/login?ltype=logout\" class=\"link-logout\">退出<\/a>"  -- 返回的这个片段被拼接到了京东的头部

})

 

=================================

后面开始往每一个xxx/setCookie发请求  redirect  触发各个站点的SSO

 

 

==================

http://order.jd.com/center/list.action  order SSO

 

Cookie:unpl=V2_ZzNtbRBREBZyX0ZTf0paBmIGFltLUEsdJQFCBnwQWVVjB0VdclRCFXIUR1NnGlwUZgsZXUpcQhJFCHZXchBYAWcCGllyBBNNIEwHDCRSBUE3XHxcFVUWF3RaTwEoSVoAYwtBDkZUFBYhW0IAKElVVTUFR21yVEIldQl2U3kQWQduAhtYcmdEJUU4Q1xzHFoAVwIiXHIVF0l8DEFQeR4RAmUKF19LVkoQRQk%3d; _tp=j1dIy9aI%2BVFh5v6XwDjADcBmwvIo3UDRg8kscUE8au4JTwsvs7VJlvNwWTeGL5Mj; unick=%E9%A3%9E%E5%A4%9C%E6%A2%A6%E9%9B%AA; _pst=%E9%A3%9E%E5%A4%9C%E6%A2%A6%E9%9B%AA; TrackID=146OJ_-nMkyfbaPrVgojWM9b3eYT36R8o9tbVxq_aArH40YJ7gY-Ip-bS_Mvd5SFVrokysuLG6UB5MTctgNM-GA; pinId=Y6OgKhzy4XtkZcQXK_hVcQ; ceshi3.com=BrUbQ13nJeg2MnFpre9TLzk6FaSpEkTUFsiH0A35qeQ; pin=%E9%A3%9E%E5%A4%9C%E6%A2%A6%E9%9B%AA; __jda=122270672.638438084.1466471968.1466471968.1466471969.1; __jdb=122270672.3.638438084|1.1466471969; __jdc=122270672; __jdv=122270672|baidu-pinzhuan|t_288551095_baidupinzhuan|cpc|0f3d30c8dba7459bb52f2eb5eba8ac7d_0_c7b26f165b7244578699a85c684a55f1; thor=13DF58128E1C0435E8EC024B066F155FEF507191AD96C4E5D1E1D62F7DFE23BF84DFB096628DF965A2E501A5B6D99185CFDE55F66C10DC35972BBE7E65AC8406E7EF0077091A89B0749F87762659552B4615C38DAC135C369E1EC0E52B0720DC19AA7A33D318DED83C5A4B626A329A0B2D3C8CE11716E890255D6657C3B5E4BD; __jdu=638438084

 

页面展示

 

ajax 拉取数据

 

===============

有一个TrackId,我猜测这个Trackid是用户登录之后记录的,用来统计用户的访问轨迹

TrackID=146OJ_-nMkyfbaPrVgojWM9b3eYT36R8o9tbVxq_aArH40YJ7gY-Ip-bS_Mvd5SFVrokysuLG6UB5MTctgNM-GA

TrackID=146OJ_-nMkyfbaPrVgojWM9b3eYT36R8o9tbVxq_aArH40YJ7gY-Ip-bS_Mvd5SFVrokysuLG6UB5MTctgNM-GA; 

 

=================================

top部分的复用

 

 

==================================

http://passport.jd.com/new/helloService.ashx 是可以请求的

 

Cookie:unpl=V2_ZzNtbURRS0Z3DhZULxwLUmIBQglKBxBCfVoTVy4fXFY3ARtZclRCFXIUR1NnGlwUZwIZXEJcQBRFCHZXchBYAWcCGllyBBNNIEwHDCRSBUE3XHxcFVUWF3RaTwEoSVoAYwtBDkZUFBYhW0IAKElVVTUFR21yVEIldQl2VHkRVQJgAhNZRWdzEkU4dlF%2fG1QEbjMTbUNnAUEpDEBVchtaSGcBGlRFUEIUcQ92VQ%3d%3d; alc=0S5UnYekCE0Ktf0L2MX7ZQ==; mp=%E9%A3%9E%E5%A4%9C%E6%A2%A6%E9%9B%AA; ol=1; _tp=j1dIy9aI%2BVFh5v6XwDjADcBmwvIo3UDRg8kscUE8au4JTwsvs7VJlvNwWTeGL5Mj; unick=%E9%A3%9E%E5%A4%9C%E6%A2%A6%E9%9B%AA; _pst=%E9%A3%9E%E5%A4%9C%E6%A2%A6%E9%9B%AA; TrackID=1uL0-U3bK1lDz304tAKixrlZGTVdEFxVM7gdlr7j7yQB_gxiq3AWcTG_7Lc3nbbGdUSZCqBdo8UXnz2XPd_Nx0w; pinId=Y6OgKhzy4XtkZcQXK_hVcQ; ceshi3.com=BrUbQ13nJeg2MnFpre9TLzk6FaSpEkTUFsiH0A35qeQ; pin=%E9%A3%9E%E5%A4%9C%E6%A2%A6%E9%9B%AA; alpin=%E9%A3%9E%E5%A4%9C%E6%A2%A6%E9%9B%AA; __jdv=122270672|baidu-pinzhuan|t_288551095_baidupinzhuan|cpc|0f3d30c8dba7459bb52f2eb5eba8ac7d_0_779b37a1e4ff43ae9abf9cd2d71ba385; thor=F7ABC65679950B29E5949CEB9811F2783EC5395D45BB767A1C1B14951B8192AD44012FF82CFA7F1618A4CD5DC37C8577C66584F4884473F471516351F790E4F6440C017E17195FE0E2CC359001CDEE2FA4E40D2CD9EF1E0A66F5D7544B190587070974BD7405606E5A284635E494604B09C80570A33D158A0D417B25D06F0F7A; __jda=122270672.1398660056.1466474502.1466474502.1466474503.1; __jdb=122270672.6.1398660056|1.1466474503; __jdc=122270672; __jdu=1398660056

 

---------------------------------

入参 签名 防止入参被随意修改

 

=======================================

 

  京东SSO单点登陆实现分析  2012-12-06 13:22:44

分类: Web开发

 

京东的sso流程:
初始访问状态:
cookies:
http请求:
 
1.在首页点击登陆,跳转至passport.360buy.com,给予验证cookie alc( 可以试试在提交登陆信息前删除该cookie
cookies
 
http请求
 
2.填写用户名密码,提交登陆,验证alc,登陆成功则给予sso的cookie ceshi3.com,跳转至首页
cookies:
 
3.首页异步ajax,向passport.360buy.com发起hello请求,hello请求返回json对象a,a包含sso(url地址数组,含请求参数)
http请求:
发起hello请求的脚本如下:

点击(此处)折叠或打开

  1. <script type="text/javascript">
  2.                     (function ($) {
  3.                         $("#shortcut .menu").Jdropdown({ delay: 50 });
  4.                         var helloUrl = window.location.protocol + "//passport.360buy.com/new/helloService.ashx?m=ls";
  5.                         jQuery.ajax({ url: helloUrl,
  6.                             dataType: "jsonp",
  7.                             scriptCharset: "gb2312",
  8.                             success: function (a) {
  9.                                 //if (a && a.info) { $("#loginbar").html(a.info); }
  10.                                 if (&& a.sso) {
  11.                                     $.each(a.sso, function () { $.getJSON(this) })
  12.                                 } 
  13.                             } 
  14.                         });
  15.                     }
  16.                       )(jQuery);</script>
【以上这段是在登出页发现的,京东首页实际使用的是压缩过的,来自http://misc.360buyimg.com/lib/js/2012/lib-v1.js?t=20121204的脚本,两者相同】
 
a.sso的内容
"http://sso.360buy.com/setCookie?t=sso.360top.com&callback=?"
"http://sso.360buy.com/setCookie?t=sso.minitiao.com&callback=?"
"http://sso.360buy.com/setCookie?t=sso.ehaoyao.com&callback=?"
"http://sso.360buy.com/setCookie?t=sso.jcloud.com&callback=?"
"http://sso.360buy.com/setCookie?t=sso.qianxun.com&callback=?"
 
4.客户端回调函数,遍历a.sso,逐个发起getjson 请求(此时请求目标还是在同一个主域名下,firebug网络面板中setcookie系列请求,如下图),
相关代码:     $.each(a.sso, function () { $.getJSON(this) })
http请求:
 
5.setcookie系列请求,各自响应一个与setcookie所接受的t参数相应域名的jsonp请求地址(即是接下来的跨域请求),并包含统一的一个c参数
 
* 5到6的衔接,猜测是setcookie的响应同时触发了sign系列的请求,那必须返回一个js代码片段,发起getjson请求。
 
6.客户端发起sign系列请求,包含c参数,跨主域名请求,响应即为设置ceshi3.com cookie
http://sso.360top.com/sign?  c=6d324d99805593c4aac6abfdd17e67399d73......54763628040
http://sso.minitiao.com/sign?c=6d324d99805593c4aac6abfdd17e67399d73......54763628040
http://sso.jcloud.com/sign?  c=6d324d99805593c4aac6abfdd17e67399d73......54763613889
http://sso.ehaoyao.com/sign? c=6d324d99805593c4aac6abfdd17e67399d73......54763613889
http://sso.qianxun.com/sign? c=6d324d99805593c4aac6abfdd17e67399d73......54763613890
(上面省略的部分包含了类似“48bd&callback=jsonp1354763638164&_=1354763638814&t=1354763”)
 
 
7.所有京东涉及登陆信息的页面,可对ceshi3.com cookie进行解析,以此作为登陆凭证。
**可以验证一下
登陆京东后,打开京东奢侈品(360top),删除cookie ceshi3.com 刷新后显示未登陆,再打开京东迷你挑(此时又同步了一次cookie),再回京东奢侈品(360top),刷新后依旧是登陆状态。(迷你挑测试中偶尔会有问题,可以换一个京东产品试试)
 
8.退出时,跳转到登出页面,JS发起getjson请求,删除所有cookie
京东登出页上找到以下代码

点击(此处)折叠或打开

  1. <script type="text/javascript">
  2. jQuery.getJSON("http://sso.360top.com" + "/exit?callback=?");
  3. jQuery.getJSON("http://sso.qianxun.com" + "/exit?callback=?");
  4. jQuery.getJSON("http://sso.ehaoyao.com" + "/exit?callback=?");
  5. jQuery.getJSON("http://sso.360buy.com" + "/exit?callback=?");
  6. jQuery.getJSON("http://sso.minitiao.com" + "/exit?callback=?");
  7. jQuery.getJSON("http://sso.jcloud.com" + "/exit?callback=?");
  8. </script>
 
总结,整体的关键在于360buy.com下客户端js发起jsonp跨域请求时,传递的参数c(猜测是对称加密后的数据,与登录凭据cookie ceshi3.com 的值有对应关系)。其他细节都在于服务器端对各系列请求的处理。
如果A域名和B域名(指主域名不同的情况)要共享登陆
B域名下的cookie还是要B自己写的,jsonp的处理就是告诉B,该写个什么值,当然传递过程中最好进行加密(上面的参数c)。当ABCD等等各产品都设置了统一的凭据,那么就完成了“单点登陆”的要求。不过,对这个凭据进行解析的需求也是很重要的,这里倒未提及。因为涉及到ceshi3.com这个cookie里信息的具体内容,这个验证过程也只有京东的开发人员才知道了。

 ==============================

https://passport.jd.com/uc/loginService?uuid=03444217-07a9-480f-b505-407888c8240d&ReturnUrl=http%3A%2F%2Fwww.jd.com

https请求,用抓包工具是无法得到请求内容的,但是可以用浏览器查看



 

此请求的返回值会set一堆的cookie

 Cache-Control:max-age=0
Connection:close
Content-Length:34
Date:Tue, 21 Jun 2016 05:42:49 GMT
Expires:Tue, 21 Jun 2016 05:42:49 GMT
P3P:CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"
Pragma:no-cache
Server:JengineD/1.7.2.1
Set-Cookie:mp=%E9%A3%9E%E5%A4%9C%E6%A2%A6%E9%9B%AA; Expires=Thu, 21-Jul-2016 05:42:49 GMT; Path=/; HttpOnly;
Set-Cookie:thor=A61E3B2A8F27526A3605E2684E4C29B4091EC04BD652C3E98AFCFD791D10E4732CFB22B55DBB3FD66414FCCED7C303AA1741D1883F32E4F2547B1804B9BE3D1BBDCDE8E0E385E5BB1A3DC7DA21431DE69218BFD13D4F13F6BBE781B1A6CFEEBA664514B6619FE154082BA0B8CF6DD33C052EC8BCC574EA915B5B51E31653757F; Domain=.jd.com; Expires=Wed, 21-Jun-2017 05:42:49 GMT; Path=/; HttpOnly;
Set-Cookie:ol=1; Path=/; HttpOnly;
Set-Cookie:_tp=j1dIy9aI%2BVFh5v6XwDjADcBmwvIo3UDRg8kscUE8au4JTwsvs7VJlvNwWTeGL5Mj; Domain=.jd.com; Expires=Thu, 21-Jul-2016 05:42:49 GMT; Path=/;
Set-Cookie:logining=1; Domain=.jd.com; Path=/;
Set-Cookie:unick=%E9%A3%9E%E5%A4%9C%E6%A2%A6%E9%9B%AA; Domain=.jd.com; Expires=Thu, 21-Jul-2016 05:42:49 GMT; Path=/; HttpOnly;
Set-Cookie:_pst=%E9%A3%9E%E5%A4%9C%E6%A2%A6%E9%9B%AA; Domain=.jd.com; Expires=Thu, 21-Jul-2016 05:42:49 GMT; Path=/; HttpOnly;
Set-Cookie:TrackID=1jPlmRhmscMlPiYwhWQPFmnE20jkCnZVlDI_EtsXAq-mKMeb4twHfWOcY0J3Jib9V4tMbmBlU-GNQoeURmNUygQ; Domain=.jd.com; Expires=Sun, 20-Jun-2021 05:42:49 GMT; Path=/;
Set-Cookie:pinId=Y6OgKhzy4XtkZcQXK_hVcQ; Domain=.jd.com; Expires=Wed, 21-Jun-2017 05:42:49 GMT; Path=/;
Set-Cookie:ceshi3.com=BrUbQ13nJeg2MnFpre9TLzk6FaSpEkTUFsiH0A35qeQ; Domain=.jd.com; Path=/; HttpOnly;
Set-Cookie:pin=%E9%A3%9E%E5%A4%9C%E6%A2%A6%E9%9B%AA; Domain=.jd.com; Expires=Thu, 21-Jul-2016 05:42:49 GMT; Path=/;
Set-Cookie:_ntnDTIJ=""; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/
version:sdk-version

 

 

 

 

 

 

 

 

猜你喜欢

转载自curious.iteye.com/blog/2306289