比如我的SOKET服務(wù)器,希望只給授權(quán)用戶(hù)訪問(wèn),比如登陸成功,我SSO給用戶(hù)分配一個(gè)token,我希望只有擁有合法token的用戶(hù)鏈接我的服務(wù)器。一般如何做這個(gè)驗(yàn)證比較好呢。
如果是長(zhǎng)鏈接,socket服務(wù)器可以要求客戶(hù)端首先把token發(fā)過(guò)來(lái),然后socket服務(wù)端根據(jù)token驗(yàn)證用戶(hù)是否合法,如果合法在服務(wù)端針對(duì)當(dāng)前鏈接記錄一個(gè)標(biāo)記(Gateway/Worker中可以用$_SESSION記錄),這樣每當(dāng)有socket數(shù)據(jù)發(fā)來(lái)時(shí),檢查當(dāng)前鏈接是否有驗(yàn)證標(biāo)記,如果沒(méi)有并且也不是帶token的驗(yàn)證包則視為非法請(qǐng)求,斷開(kāi)鏈接。
如果是短鏈接,則要求每個(gè)請(qǐng)求都帶上token,每個(gè)請(qǐng)求都要根據(jù)token驗(yàn)證是否合法。
密鑰認(rèn)證分為對(duì)稱(chēng)密鑰與非對(duì)稱(chēng)密鑰兩種方式。
對(duì)稱(chēng)密鑰:雙方都知道密鑰,且用改密鑰進(jìn)行加密與解密操作,前提是雙方都知道改密鑰的
非對(duì)稱(chēng)密鑰:發(fā)送方利用公開(kāi)的公鑰進(jìn)行加密,接收方利用自己保存的私鑰進(jìn)行解密。
根據(jù)上訴兩種情況,你不需要把密鑰發(fā)送給對(duì)方,如果需要發(fā)送密鑰,本身就不安全,你是否還要對(duì)該密鑰進(jìn)行加密!MD5?那多此一舉。