认证协议:认证客户端的合法性;
授权协议:认证身份后对受限资源访问的控制;
JWT(json web token)是实现认证协议的一种框架,原理如下:
用户提供用户名和密码给认证服务器,服务器验证用户提交信息信息的合法性;如果验证成功,会产生并返回一个Token(令牌),用户可以使用这个token访问服务器上受保护的资源。
Token由3部分组成:header.claims.signature,
其中header包括认证类型(JWT)和生成token使用的算法;
claims是token的核心,主要包括用户可公开的信息,eg:用户名、手机号;
signature签名:保障header和claims信息不被篡改,实现方式是后台会定义一个私钥,基于一定的规则和算法对header和claims信息进行加密得到signature,在服务端验证合法后可以基于token获取claims里面的信息(用户信息)。
使用场景:
1 无状态的分布式API:JWT的主要优势在于使用无状态、可扩展的方式处理应用中的用户会话;服务端可以通过token方便的获取用户的会话信息,而不需要去访问数据库,在分布式应用中非常实用;
缺点是:无法实现黑名单的token刷新