登錄授權儒将、TCP/IP、HTTPS和代理

1.登錄與授權的概念區(qū)別

1.登錄:是用戶身份認證对蒲,系統(tǒng)確認用戶身份的過程钩蚊。
2.授權:是由身份或者持有的令牌來確認用戶享有某些權限,登錄過程實質(zhì)上的目的是為了確認權限蹈矮。

2.HTTP中確認授權的兩種方式

1.通過cookie
2.通過Authorization Header

Cookie

1.起源:有Netscape瀏覽器團隊開發(fā)實現(xiàn)了購物車功功能砰逻。
2.工作機制:

1.服務器端需要客戶端存儲的數(shù)據(jù)都會通過set-cookie放在reponse的header里面返回,客戶端自動保存泛鸟。
2.客戶端保存的cookie蝠咆,在之后的請求中,會放在request的header里面發(fā)送給服務端北滥。
3.客戶端保存cookie是按照域名來區(qū)分的刚操。
4.客戶端保存的cookie有超時時間,如果未設置超時時間再芋,則在瀏覽器關閉時刪除cookie菊霜,另外服務器還可以主動刪除未過期的客戶端cookie。

3.cookie的作用:

1.會話管理:比如用戶登錄狀態(tài)祝闻,用戶購物車管理占卧。
2.用戶的個性化設置:比如主題,顏色联喘,壁紙等等华蜒。
3.分析用戶行為:可以使用cookie來追蹤用戶行為。

4.HttpOnly與Secure屬性

1.如果在cookie中設置了HttpOnly屬性豁遭,那么通過程序(比如JS腳本叭喜,Applet等)就無法讀取cookie信息,這樣能有效預防XSS攻擊蓖谢。
2.secure屬性:當設置為true時捂蕴,表示創(chuàng)建的cookie只能以安全的形式傳送給服務器譬涡,也就是說只能在HTTPS連接中被瀏覽器傳遞到服務器端進行會話驗證,如果是HTTP連接啥辨,那么就不會傳遞信息涡匀,所以不會被竊取到Cookie的具體內(nèi)容。

5.XSS

跨站腳本攻擊溉知,利用JavaScript來拿到瀏覽器的cookie之后陨瘩,發(fā)送到自己的網(wǎng)站,以此來盜取用戶信息级乍。

6.XSRF

跨站請求偽造舌劳,在用戶不知情的情況下訪問已經(jīng)保存了cookie的網(wǎng)站,以此來越權操作用戶賬戶玫荣。

Authorization

兩種主流方式 Basic 和 Bearer

Basic
1.格式:Authorization: Basic<username:password(Base64)>
2.Basic認證過程
1.瀏覽器發(fā)送請求到服務器
                GET / HTTP /1.1
                Host:xxx.xxx.com
2.服務端發(fā)送驗證請求401
                HTTP/1.1 401 Unauthorised
                Server: bfe/1.0.8.18
                WWW-Authenticate: Basic realm="XXXXX.com"
                Content-Type: text/html; charset=utf-8
3.客戶端收到401返回值后甚淡,將自動彈出登錄窗口,等待用戶輸入用戶名捅厂,密碼
4.將用戶名密碼進行Base64編碼后發(fā)送給服務端進行驗證
                GET / HTTP/1.1
                Host: xxx.xxx.xxx.com
                Authorization: Basic xxxxxxxxxxxxxxxxxxxxxxxxxxxx
5.服務端取出Authorization中頭信息贯卦,并與數(shù)據(jù)庫進行比對,如果合法則返回200恒傻,不合法脸侥,則返回401。
Bearer
1.格式:Authorization: Bearer <bearer token>
2.bearer token 的獲取方式:通過OAuth2的授權流程
3.OAuth2的流程
            1.第三方網(wǎng)站向授權網(wǎng)站申請授權合作盈厘,拿到client id和client secret
            2.用戶在使用第三方網(wǎng)站的時候睁枕,點擊通過授權,第三方網(wǎng)站將跳轉授權網(wǎng)站沸手,并將clientid傳遞給授權網(wǎng)站外遇。
            4.授權方網(wǎng)站根據(jù)clientid,將第三方網(wǎng)站的信息和第三方網(wǎng)站需要的用戶權限展示給用戶契吉,詢問用戶是否同意授權跳仿。
            5.當用戶點擊同意授權,授權方網(wǎng)站返回第三方網(wǎng)站捐晶,并傳入Authorization code作為用戶認可的憑證菲语。
            6.第三方網(wǎng)站將Authorization code上送給自己的服務器,服務器將Authorization code跟自己服務器端存儲的client secret發(fā)送給授權方服務器惑灵,授權方服務器通過驗證后山上,返回給access token,整個OAuth2流程結束英支。
            7.在整個OAuth流程結束后佩憾,第三方網(wǎng)站服務器可以試用access token 作用用戶授權的token,用此來向授權方網(wǎng)站請求獲取用戶信息等操作。
        
4.問題:
            為什么OAuth認證要引入Authorization code妄帘,并且需要申請授權的第三方將Authorization code傳給第三方服務器楞黄,并且通過第三方服務器將Authorization code傳遞給授權方服務器。然后再獲取授權方服務器的access token抡驼。這樣做的目的是為了通信安全鬼廓,因為OAuth不強制使用HTTPS,因此需要保證通信路徑中存在竊聽者的時候致盟,還能保證足夠的安全桑阶。
            
5.第三方APP通過微信登錄的流程:
            這是一個標準的OAuth2的流程。
            1.第三方APP向騰訊方申請合作勾邦,拿到client id 和client secret
            2.當用戶在第三方APP上需要微信登錄的時候,第三方APP將使用微信SDK打開微信授權頁面割择,并且傳入client id作為自己授權id眷篇。
            3.微信拿到第三方app的client id后,提交微信后臺荔泳,驗證成功蕉饼,則返回給第三方app Authorization code。
            4.第三方app拿到Authorization code后玛歌,將Authorization code傳遞給自己的服務器昧港,第三方app的服務端將Authorization code 與 client secret 傳遞給微信后臺,微信后臺驗證后返回access token支子。
            5.第三方app后臺通過access token 想微信后臺請求獲取用戶信息创肥,微信驗證通過后,則返回用戶信息值朋。
            6.服務器接受到用戶信息后叹侄,在自己的數(shù)據(jù)庫中建立一個賬戶,并將從微信獲取的用戶信息填入數(shù)據(jù)庫中昨登。并創(chuàng)建用戶id趾代,并將此id與微信id做好關聯(lián)。
            7.當?shù)谌絘pp后臺創(chuàng)建好用戶后丰辣,想客戶端的請求發(fā)出響應撒强,并回傳會剛剛創(chuàng)建的用戶信息。
            8.客戶端響應笙什,獲取用戶信息飘哨,登錄成功。
            
6.在自家APP中使用Bearer token
            部分app會在api設計中得湘,將登錄和授權設計出類似于OAuth2的過程杖玲,他會簡化掉Authorization code的概念。既直接在接口請求成功后淘正,返回access token摆马,然后再之后的客戶端的請求中臼闻,使用這個access token 作為Bearer token進行用戶操作。
            
7.Refresh token
            Access token 都會有失效時間囤采,當他失效后述呐,第三方app的服務端會通過refresh token 接口傳入refresh token 來獲取新的access token。這樣的的原因是安全蕉毯,因為refresh token是放置在服務端的乓搬,即使access token被竊取,他也是有失效時間的代虾。

3 TCP/IP 協(xié)議族

1.概念

兩臺計算機之間的通訊是通過TCP/IP協(xié)議在因特網(wǎng)上進行的进肯。實際上TCP/IP是兩個協(xié)議
TCP:Transmission Control Protocol 傳輸控制協(xié)議 IP:Internet Protocol 網(wǎng)際協(xié)議

IP:計算機之間的通信
IP協(xié)議是計算機用來相互識別的通信的一種機制,每臺計算機都有一個IP棉磨。用來在internet上標識這臺計算機江掩。IP負責在因特網(wǎng)上發(fā)送和接受數(shù)據(jù)包。通過IP乘瓤,消息(或者其他數(shù)據(jù))被分割為小的獨立的包环形,并且通過因特網(wǎng)再計算機之間傳送。IP負責將每個包路由至他的目的地衙傀。
IP協(xié)議僅僅是允許計算機相互發(fā)送消息抬吟,但他并不檢查消息是否以發(fā)送的次序到達并且沒有損壞(只檢查關鍵的頭部信息)。為了提供消息檢驗功能统抬,直接再IP協(xié)議上設計了傳輸控制協(xié)議TCP火本。

TCP:應用程序之間的通信
TCP確保數(shù)據(jù)以正確的次序到達,并且嘗試確認數(shù)據(jù)包的內(nèi)容沒有改變聪建。TCP在IP地址之上引端口(port)发侵,他允許計算機通過網(wǎng)絡提供各種服務。一些端口號為不變通的服務器保留妆偏,而且這些端口號是眾所周知的刃鳄。
服務或者守護進程:在提供服務的機器上,有程序監(jiān)聽特定端口上的通信流钱骂。例如大多數(shù)電子郵件通信流出現(xiàn)在端口25上叔锐,用于www的HTTP通信流出現(xiàn)在80端口上。
當應用程序希望通過TCP與另一個應用程序通信時见秽,他會發(fā)送一個通信請求愉烙。這個請求必須被送到一個確切的地址。再雙方"握手"之后解取,TCP將兩個應用程序直接建立全雙工(full-duplex)的通信步责,占用兩個計算機之間的整個通信線路。TCP用于從應用程序到網(wǎng)絡的數(shù)據(jù)傳輸控制。TCP負責在數(shù)據(jù)傳送之前將他們分割為IP包蔓肯,然后再他們到達的時候?qū)⑺麄冎亟M遂鹊。

TCP/IP就是TCP和IP兩個協(xié)議在一起的協(xié)同工作,有上下層的關系蔗包。

TCP負責應用軟件和網(wǎng)絡軟件之間的通信秉扑,IP負責計算機之間的通信。TCP負責將數(shù)據(jù)分割并裝入IP包调限,IP負責將包發(fā)送至接受者舟陆,傳輸過程中藥經(jīng)IP路由器負責跟進通信量、網(wǎng)絡中的錯誤或者其他參數(shù)來進行正確尋址耻矮,然后再他們到達的時候重新組合他們秦躯。

2.為什么要分層

因為網(wǎng)絡具有不穩(wěn)定行,保證通信正常裆装。

3.具體分層

image.png
 1. 網(wǎng)絡接口層:

實際上TCP/IP參考模型沒有真正描述這一層的實現(xiàn)宦赠,只是要求能夠提供給其上層-網(wǎng)絡互連層一個訪問接口,以便在其上傳遞IP分組米母。由于這一層次未被定義,所以其具體的實現(xiàn)方法將隨著網(wǎng)絡類型的不同而不同毡琉√鳎  

2. 網(wǎng)絡層:

網(wǎng)絡層是整個TCP/IP協(xié)議棧的核心。它的功能是把分組發(fā)往目標網(wǎng)絡或主機桅滋。同時慧耍,為了盡快地發(fā)送分組,可能需要沿不同的路徑同時進行分組傳遞丐谋。因此芍碧,分組到達的順序和發(fā)送的順序可能不同,這就需要上層必須對分組進行排序号俐。網(wǎng)絡互連層定義了分組格式和協(xié)議泌豆,即IP協(xié)議(Internet Protocol)。網(wǎng)絡互連層除了需要完成路由的功能外吏饿,也可以完成將不同類型的網(wǎng)絡(異構網(wǎng))互連的任務踪危。除此之外,網(wǎng)絡互連層還需要完成擁塞控制的功能猪落≌暝叮  

  3. 傳輸層:

在TCP/IP模型中,傳輸層的功能是使源端主機和目標端主機上的對等實體可以進行會話笨忌。在傳輸層定義了兩種服務質(zhì)量不同的協(xié)議蓝仲。即:傳輸控制協(xié)議TCP(transmission control protocol)和用戶數(shù)據(jù)報協(xié)議UDP(user datagram protocol)。  

TCP協(xié)議是一個面向連接的袱结、可靠的協(xié)議亮隙。它將一臺主機發(fā)出的字節(jié)流無差錯地發(fā)往互聯(lián)網(wǎng)上的其他主機。在發(fā)送端擎勘,它負責把上層傳送下來的字節(jié)流分成報文段并傳遞給下層咱揍。在接收端,它負責把收到的報文進行重組后遞交給上層棚饵。TCP協(xié)議還要處理端到端的流量控制煤裙,以避免緩慢接收的接收方?jīng)]有足夠的緩沖區(qū)接收發(fā)送方發(fā)送的大量數(shù)據(jù)≡胙 

UDP協(xié)議是一個不可靠的硼砰、無連接協(xié)議,主要適用于不需要對報文進行排序和流量控制的場合欣硼√夂玻 

 4. 應用層 :

  TCP/IP模型將OSI參考模型中的會話層和表示層的功能合并到應用層實現(xiàn)。應用層面向不同的網(wǎng)絡應用引入了不同的應用層協(xié)議诈胜。其中豹障,有基于TCP協(xié)議的,如文件傳輸協(xié)議(File Transfer Protocol焦匈,F(xiàn)TP)血公、虛擬終端協(xié)議(TELNET)、超文本鏈接協(xié)議(Hyper Text Transfer Protocol缓熟,HTTP)累魔,也有基于UDP協(xié)議的。

4.TCP連接

推薦文章:TCP建立連接三次握手和釋放連接4次握手

推薦文章:長連接與短連接

TCP短連接

client向server發(fā)起連接請求够滑,server接到請求垦写,然后雙方建立連接。client向server 發(fā)送消息彰触,server回應client梯投,然后一次讀寫就完成了,這時候雙方任何一個都可以發(fā)起close操作况毅,不過一般都是client先發(fā)起 close操作晚伙。為什么呢,一般的server不會回復完client后立即關閉連接的俭茧,當然不排除有特殊的情況咆疗。從上面的描述看,短連接一般只會在 client/server間傳遞一次讀寫操作

短連接的優(yōu)點是:管理起來比較簡單母债,存在的連接都是有用的連接午磁,不需要額外的控制手段

TCP長連接

client向server發(fā)起連接尝抖,server接受client連接,雙方建立連接迅皇。Client與server完成一次讀寫之后昧辽,它們之間的連接并不會主動關閉,后續(xù)的讀寫操作會繼續(xù)使用這個連接登颓。

首先說一下TCP/IP詳解上講到的TCP苯淋瘢活功能,笨蛄活功能主要為服務器應用提供咕痛,服務器應用希望知道客戶主機是否崩潰,從而可以代表客戶使用資 源喇嘱。如果客戶已經(jīng)消失茉贡,使得服務器上保留一個半開放的連接,而服務器又在等待來自客戶端的數(shù)據(jù)者铜,則服務器將應遠等待客戶端的數(shù)據(jù)腔丧,保活功能就是試圖在服務 器端檢測到這種半開放的連接作烟。

如果一個給定的連接在兩小時內(nèi)沒有任何的動作愉粤,則服務器就向客戶發(fā)一個探測報文段,客戶主機必須處于以下4個狀態(tài)之一:

客戶主機依然正常運行拿撩,并從服務器可達衣厘。客戶的TCP響應正常绷雏,而服務器也知道對方是正常的,服務器在兩小時后將辈劳ぃ活定時器復位涎显。

客戶主機已經(jīng)崩潰,并且關閉或者正在重新啟動兴猩。在任何一種情況下期吓,客戶的TCP都沒有響應。服務端將不能收到對探測的響應倾芝,并在75秒后超時讨勤。服務器總共發(fā)送10個這樣的探測 ,每個間隔75秒晨另。如果服務器沒有收到一個響應潭千,它就認為客戶主機已經(jīng)關閉并終止連接。

客戶主機崩潰并已經(jīng)重新啟動借尿。服務器將收到一個對其迸偾纾活探測的響應屉来,這個響應是一個復位,使得服務器終止這個連接狈癞。

客戶機正常運行茄靠,但是服務器不可達,這種情況與2類似蝶桶,TCP能發(fā)現(xiàn)的就是沒有收到探查的響應慨绳。

從上面可以看出,TCP闭媸活功能主要為探測長連接的存活狀況脐雪,不過這里存在一個問題,存活功能的探測周期太長疼邀,還有就是它只是探測TCP連接的存活喂江,屬于比較斯文的做法,遇到惡意的連接時旁振,被裱活功能就不夠使了。

在長連接的應用場景下拐袜,client端一般不會主動關閉它們之間的連接吉嚣,Client與server之間的連接如果一直不關閉的話,會存在一個問 題蹬铺,隨著客戶端連接越來越多尝哆,server早晚有扛不住的時候,這時候server端需要采取一些策略甜攀,如關閉一些長時間沒有讀寫事件發(fā)生的連接秋泄,這樣可 以避免一些惡意連接導致server端服務受損;如果條件再允許就可以以客戶端機器為顆粒度规阀,限制每個客戶端的最大長連接數(shù)恒序,這樣可以完全避免某個蛋疼的 客戶端連累后端服務。

長連接和短連接的產(chǎn)生在于client和server采取的關閉策略谁撼,具體的應用場景采用具體的策略歧胁,沒有十全十美的選擇,只有合適的選擇

4.HTTPS

定義:

HTTP over SSL 的簡稱厉碟,既工作在SSL(或TLS)上的HTTP喊巍,就是加密通信的HTTP。

工作原理:

在客戶端與服務端之間協(xié)商出一套對稱秘鑰箍鼓,每次發(fā)送消息之前都將內(nèi)容加密崭参,收到之后解密,達到內(nèi)容的加密傳輸款咖。

為什么不使用非對稱加密:

考慮到網(wǎng)絡通信的性能阵翎,非對稱加密逢并,運算復雜,會影響通信性能郭卫。

HTTPS 建立通信的過程:

1. Client Hello
2. Server Hello
3. 服務器?證書 信任建?立
4. Pre-master Secret
5. 客戶端通知:將使?用加密通信 6. 客戶端發(fā)送:Finished
7. 服務器?通知:將使?用加密通信 8\. 服務器?發(fā)送:Finished

推薦文章:[SSL/TLS協(xié)議運行機制的概述](http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html)
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末砍聊,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子贰军,更是在濱河造成了極大的恐慌玻蝌,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件词疼,死亡現(xiàn)場離奇詭異俯树,居然都是意外死亡,警方通過查閱死者的電腦和手機贰盗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進店門许饿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人舵盈,你說我怎么就攤上這事陋率。” “怎么了秽晚?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵瓦糟,是天一觀的道長。 經(jīng)常有香客問我赴蝇,道長菩浙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任句伶,我火速辦了婚禮劲蜻,結果婚禮上,老公的妹妹穿的比我還像新娘考余。我一直安慰自己先嬉,他們只是感情好,可當我...
    茶點故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布秃殉。 她就那樣靜靜地躺著坝初,像睡著了一般浸剩。 火紅的嫁衣襯著肌膚如雪钾军。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天绢要,我揣著相機與錄音吏恭,去河邊找鬼。 笑死重罪,一個胖子當著我的面吹牛樱哼,可吹牛的內(nèi)容都是我干的哀九。 我是一名探鬼主播,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼搅幅,長吁一口氣:“原來是場噩夢啊……” “哼阅束!你這毒婦竟也來了?” 一聲冷哼從身側響起茄唐,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤息裸,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后沪编,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體呼盆,經(jīng)...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年蚁廓,在試婚紗的時候發(fā)現(xiàn)自己被綠了访圃。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,127評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡相嵌,死狀恐怖腿时,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情平绩,我是刑警寧澤圈匆,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站捏雌,受9級特大地震影響跃赚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜性湿,卻給世界環(huán)境...
    茶點故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一纬傲、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧肤频,春花似錦叹括、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至报咳,卻和暖如春侠讯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背暑刃。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工厢漩, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人岩臣。 一個月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓溜嗜,卻偏偏與公主長得像宵膨,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子炸宵,可洞房花燭夜當晚...
    茶點故事閱讀 45,066評論 2 355

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理辟躏,服務發(fā)現(xiàn),斷路器土全,智...
    卡卡羅2017閱讀 134,667評論 18 139
  • 前端開發(fā)者丨h(huán)ttp請求 https:www.rokub.com 前言見解有限鸿脓, 如有描述不當之處, 請幫忙指出涯曲,...
    麋鹿_720a閱讀 10,922評論 11 31
  • 當 app 和服務器進行通信的時候幻件,大多數(shù)情況下拨黔,都是采用 HTTP 協(xié)議。HTTP 最初是為 web 瀏覽器而定...
    Flysss1219閱讀 1,271評論 0 4
  • 2018年3月22日,我們20名龍學苑杯參賽選手在龍?zhí)秴^(qū)教師進修學校多功能報告廳參加了集體培訓徽曲。 這次培訓讓我覺得...
    琴魔88閱讀 635評論 4 8
  • 說的很好零截,凡事都有個遞進性。聽別人說秃臣,《夢的解析》很好涧衙,不加以思索,一股腦的就去圖書館拿起書就讀奥此,翻了兩頁弧哎,索然無...
    里昂大叔閱讀 131評論 1 1