談?wù)劵ヂ?lián)網(wǎng)后端基礎(chǔ)設(shè)施 - 后端技術(shù)雜談 | 颯然Hang
http://www.rowkey.me/blog/2016/08/27/server-basic-tech-stack/
統(tǒng)一認(rèn)證中心
單點登錄系統(tǒng)
但是以上方案的一個問題是由于所有api請求都要經(jīng)過網(wǎng)關(guān),它很容易成為系統(tǒng)的性能瓶頸。因此,可以采取的方案是:去掉api網(wǎng)關(guān),讓業(yè)務(wù)應(yīng)用直接對接統(tǒng)一認(rèn)證中心,在基礎(chǔ)框架層面保證每個api調(diào)用都需要先通過統(tǒng)一認(rèn)證中心的認(rèn)證,這里可以采取緩存認(rèn)證結(jié)果的方式避免對統(tǒng)一認(rèn)證中心產(chǎn)生過大的請求壓力。
統(tǒng)一認(rèn)證中心
統(tǒng)一認(rèn)證中心,主要是對app用戶、內(nèi)部用戶、app等的認(rèn)證服務(wù),包括
用戶的注冊、登錄驗證、token鑒權(quán)
內(nèi)部信息系統(tǒng)用戶的管理和登錄鑒權(quán)
App的管理,包括app的secret生成,app信息的驗證(如驗證接口簽名)等。
之所以需要統(tǒng)一認(rèn)證中心,就是為了能夠集中對這些所有app都會用到的信息進(jìn)行管理,也給所有應(yīng)用提供統(tǒng)一的認(rèn)證服務(wù)。尤其是在有很多業(yè)務(wù)需要共享用戶數(shù)據(jù)的時候,構(gòu)建一個統(tǒng)一認(rèn)證中心是非常必要的。此外,通過統(tǒng)一認(rèn)證中心構(gòu)建移動app的單點登錄也是水到渠成的事情(模仿web的機(jī)制,將認(rèn)證后的信息加密存儲到本地磁盤中供多個app使用)。
單點登錄系統(tǒng)
目前很多大的在線web網(wǎng)站都是有單點登錄系統(tǒng)的,通俗的來說就是只需要一次用戶登錄,就能夠進(jìn)入多個業(yè)務(wù)應(yīng)用(權(quán)限可以不相同),非常方便用戶的操作。而在移動互聯(lián)網(wǎng)公司中,內(nèi)部的各種管理、信息系統(tǒng)同樣也需要單點登錄系統(tǒng)。目前,比較成熟的、用的最多的單點登錄系統(tǒng)應(yīng)該是耶魯大學(xué)開源的CAS, 可以基于https://github.com/apereo/cas/tree/master/cas-server-webapp來定制開發(fā)的。此外,國人開源的kisso的這個也不錯?;旧希瑔吸c登錄的原理都類似下圖所示:
統(tǒng)一登陸/單點登陸
【大前端之打通賬號系統(tǒng)】passport應(yīng)該如何落地? - 葉小釵 - 博客園
http://www.cnblogs.com/yexiaochai/p/5681066.html
騰訊客服-騰訊開放平臺-第三方應(yīng)用開發(fā)安全規(guī)范
http://kf.qq.com/info/66897.html
嚴(yán)禁在自己系統(tǒng)處理用戶Login,必須使用騰訊公司統(tǒng)一提供的登錄接口或者參數(shù)openid/openkey登錄。
獲取到openid/openkey后必須進(jìn)行校驗才能使用,校驗規(guī)則請見這里。
前言和名詞定義 - 黃頁開發(fā)者文檔中心
http://open.huangye.miui.com/wiki/%E5%89%8D%E8%A8%80%E5%92%8C%E5%90%8D%E8%AF%8D%E5%AE%9A%E4%B9%89
小米帳號互通:是一種使用系統(tǒng)帳號直接登錄的技術(shù),基于Oathu2.0。
小米賬號OAuth 2.0授權(quán) - 黃頁開發(fā)者文檔中心
http://open.huangye.miui.com/wiki/%E5%B0%8F%E7%B1%B3%E8%B4%A6%E5%8F%B7OAuth_2.0%E6%8E%88%E6%9D%83
帳號開放平臺接入方法 - 小米開放平臺
http://dev.xiaomi.com/docs/passport/way/
服務(wù)上線測試要求 - 黃頁開發(fā)者文檔中心
http://open.huangye.miui.com/wiki/%E6%9C%8D%E5%8A%A1%E4%B8%8A%E7%BA%BF%E6%B5%8B%E8%AF%95%E8%A6%81%E6%B1%82
提交審核前的自查列表:
我們提供了一份checklist,幫助開發(fā)者自我檢查,當(dāng)所有條件都符合后,就達(dá)到了提測的標(biāo)準(zhǔn)。
請點擊這里下載《上線前Checklist》

//安全問題
設(shè)計安全的賬號系統(tǒng)的正確姿勢 - CoderZh Blog
http://blog.coderzh.com/2016/01/03/security-design/
防范方法
防范的方法簡單來說數(shù)據(jù)從用戶鍵盤敲出的那一刻,到服務(wù)器后臺存儲都要保持正確的姿勢。比如:
用正確的姿勢保存密碼。
用正確的姿勢傳輸數(shù)據(jù)。
用正確的姿勢加密敏感信息。
用正確的姿勢對數(shù)據(jù)進(jìn)行備份和監(jiān)控。
//用正確的姿勢保存密碼
- 低級錯誤:明文保存密碼
- 低級錯誤:可逆加密密碼
- 錯誤方法:md5 加密密碼
- 正確方法:加鹽 hash 保存密碼
4. salt 的值不要和最終 hash 的結(jié)果存在同一個數(shù)據(jù)庫。
15.app后端怎么設(shè)計用戶登錄方案 - 曾健生的專欄 - 博客頻道 - CSDN.NET
http://blog.csdn.net/newjueqi/article/details/44062849
- 保證登錄的安全性,最起碼要使用https協(xié)議
2.基本的用戶登錄方案
在傳統(tǒng)的web網(wǎng)站中,可以使用cookie+session來實現(xiàn)用戶的登錄維護(hù),那么在app后端,可以怎么實現(xiàn)呢?
16.app后端如何保證通訊安全--url簽名 - 曾健生的專欄 - 博客頻道 - CSDN.NET
http://blog.csdn.net/newjueqi/article/details/44154791
- url簽名詳解
- url簽名的不足之處
url簽名有兩個缺點:
1.當(dāng)用戶第一次登錄后token是明文返回,有被截取的風(fēng)險 - url簽名只能保護(hù)token值卻沒法保護(hù)其他敏感數(shù)據(jù),例如,當(dāng)用戶更新自己的個人信息時,所有的信息在傳輸過程中應(yīng)該是被加密的
怎么解決這兩個問題?使用下篇介紹的對稱加密的算法就可以了。
17.app后端如何保證通訊安全--aes對稱加密 - 曾健生的專欄 - 博客頻道 - CSDN.NET
http://blog.csdn.net/newjueqi/article/details/44177063
1.對稱加密的原理
- api請求中AES算法的應(yīng)用
(2)怎么保證token在初次返回時的安全
注意:Token-Param是自己定義的http header,這里是因為個人習(xí)慣才命名為Token-Param
secretKey就是密鑰,使用http header中的Token-Param中的16位長度。
服務(wù)端返回時加密token的方法是用AES加密,密鑰是secretKey。
客戶端解密token的方法是用AES解密,密鑰是secretKey。
--EOF--