單點登入的實現-cookie
單點登入的實現-cookie
<a name="90fd0055"></a>
單點登入的目的
同一個公司的應用,只需要登入一次。
比如我登入了支付寶,再開啟 淘寶或天貓就不用重複登入(輸入使用者名稱和密碼)。
<a name="6244a479"></a>
具體場景(Web)
小明登入了 Web應用A,再進入Web應用B時,不用重新輸入使用者名稱和密碼,就自動登入了。
<a name="a90c9ab1"></a>
問題:應用A和應用B要擁有相同的父域名嗎?
不用!!! 不用!!! 不用!!!
具體實現(基於 cookie)
otp :one time password 就是一次一密
認證中心介面
介面一:jsonp介面,獲取 otp
請求方式:jsonp
獲取 otp,同時可以判斷是否已登入
http://auth.xxx.com/authentication/otp.jsonp?callback=callbackMethod&
返回
{
"isLogined":true,
"otp":"433u23"
}
注意:jsonp 介面只需要 clientId,不需要 secret
介面二:使用 otp登入
請求方式:post
http://auth.xxx.com/authentication/login.json
引數:
username:
password:
otp:介面一獲取的** otp**
imgCode:圖形驗證碼
返回:
{
"access_token":"",
"refresh_token":"",
...
}
介面三:opt 換取 access_token<br />請求方式:post<br />http://auth.xxx.com/authentication/token.json?secret=應用的secret&clientId=應用的clientId&opt=433u23
返回:
{
"access_token":"",
"refresh_token":"",
"timeout":12000
...
}
認證中心的作用
- 判斷是否已登入;
- otp 換access_token
未登入-登入流程
<br />
應用 A 已經登入,訪問應用 B 時