jwt、session、oauth 异同

1,jwt 和session机制

首先jwt 和session机制 都是用户认证的,oauth 不是web

session 的流程:json

一、用户向服务器发送用户名和密码。

二、服务器验证经过后,在当前对话(session)里面保存相关数据,  
好比用户角色、登陆时间等等。

三、服务器向用户返回一个 session_id,写入用户的 Cookie。

四、用户随后的每一次请求,都会经过 Cookie,将 session_id 传回服务器。

五、服务器收到 session_id,找到前期保存的数据,由此得知用户的身份。

jwt 的流程:跨域

即 :(json web token)


一、用户向服务器发送用户名和密码。

二、服务器验证经过后,生成jwt,能够有选择的在其中    保存用户信息及数据。也能够加密。    

三、服务器向用户返回jwt。

四、用户随后的每一次请求,都会在 cookie 或者   
   header或参数里,将 jwt 传回服务器鉴权。

五、服务器收到jwt,找到前期保存的数据,由此得知用户的身份。

jwt 长相:安全

分为 头部(header),载荷(payload),签证(signature). 用 “.” 分隔。

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1
NDM0ODg3NjgsImp0aSI6ImFjYzhmZjIzLWM1MjgtNDk3OS04N
TYwLWY0NGFmYWNhNDY4MiIsImlzcyI6ImJpenN2YyIsIm5iZ
iI6NTQzNDgxNTY4LCJzdWIiOiJ0b2tlbi14ajZqOTo3emg1Y
md2OGI1cWZrN2JoNnJxZ3o3djV0OGJ2amhiNHNoazQ5aGh6O
GtjcWN6NmpnNWI3ejIifQ.dRKURNOUFOlgO7zBxMajF7-8Wn
0zYs8x2t0UU6SYtP4

即: session 存数据于server端,而jwt 存数据于client服务器

优缺 :cookie

jwt
没有跨域问题、集群下登陆信息同步的问题。
一旦签发,到期前没法简单废止,最好用https。
server无状态,性能高。

session
扩展性很差,存在跨域 和 集群session同步的问题。
面对csrf 攻击,不如jwt。

2,oauth 用于第三方认证

目的在于让客户端安全可控地获取"用户"的受权session

好比说,登陆微博(客户端)的时候,懒得新建帐号了就用qq帐号登陆,选择qq登陆。这时 就是oauth登场时刻了。 的场景。如今通常是oauth2,版本2.性能

oauth场景,客户端没必要保存登陆用户(qq)的登陆密码。  
更精细的控制权限,即权限的到期时间,提高安全性。

有四种模式:

    受权码模式(authorization code)
    简化模式(implicit)
    密码模式(resource owner password credentials)
    客户端模式(client credentials)
相关文章
相关标签/搜索