使用者身份認證一般有5種方式
因為前後端分離的緣故,現在的後台多數只提供資料部分,一般使用json
格式,所以json web token
是比較流行的認證方式。
jwt
的認證方式相比其他的認證方式有一下優點:
jwt
包含3個部分
header
1234
jwt
的頭部是固定的,alg
是演算法的意思表示該jwt
使用的是何種演算法加密。typ
字段值是固定的jwt
payload
123負載部分就是具體的認證資訊,通過修改這部分的內容來控制認證資訊如使用者許可權等。除了一些保留字段45
exp
(過期時間)、aud
、iss
等外,使用方法跟普通json一樣。
signature
簽名,也就是金鑰,用來保證密文的安全強度
以上3部分都經過base64url處理後用.
分隔再使用hmac sha256
或rsa
加密為一段字串
1234
hmacsha256(具體的使用在jwt.io上有演示base64urlencode(header) + "." +
base64urlencode(payload),
secret)
客戶端post使用者名稱和密碼到服務端,若對安全要求較高可以是加密後的使用者名稱或密碼,服務端把拿到的使用者名稱和密碼與資料庫中的對比,若相同則按照上面的流程生成jwt
,然後返回客戶端。在此之後客戶端的所有請求,可以在authorization http頭或post資料中附帶得到的jwt
。服務端驗證jwt
並解析出payload部分,以此來判斷使用者的許可權。
jwt
的使用方法很簡單,就拿node.js的包node-jsonwebtoken
來說加密和驗證就兩個函式jwt.sign
,jwt.verify
並且jwt.io中提供了很多語言的jwt
包。
Json Web Token身份認證
使用者身份認證一般有5種方式 因為前後端分離的緣故,現在的後台多數只提供資料部分,一般使用json格式,所以json web token是比較流行的認證方式。jwt的認證方式相比其他的認證方式有一下優點 jwt包含3個部分 header 123 4 jwt的頭部是固定的,alg是演算法的意思表示該j...
c WebApi之身份驗證 Basic基礎認證
為什麼需要身份認證 身份認證是為了提高介面訪問的安全性,如果沒有身份驗證,那麼任何只要知道伺服器的url,就可以隨意訪問伺服器,從而訪問或者運算元據庫,這會是很恐怖的事。什麼是basic基礎認證 basic基礎認證是一種簡單的使用者名稱 密碼驗證過程,它的主要原理是加密使用者資訊,生成票據,每次需要...
JSON Web Token入門學習
學習記錄 看了這篇帖子,有時間再來整理 阮一峰的網路日誌 實際上的jwt內容類似下圖 它是乙個很長的字串,中間用點 分隔成三個部分。注意,jwt 內部是沒有換行的,這裡只是為了便於展示,將它寫成了幾行。寫成一行,應該如下 header.payload.signature 客戶端收到伺服器返回的 jw...