常见的鉴权方式,你真的不想知道吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常见的鉴权方式,你真的不想知道吗相关的知识,希望对你有一定的参考价值。

参考技术A 鉴权是指验证用户是否有权利访问系统的行为。

常见的鉴权方式有以下4种方式:

这是HTTP协议实现的基本认证方式,我们在浏览网页时,从浏览器正上方弹出的对话框要求我们输入账号密码,正是使用了这种认证方式。

认证成功后,客户端每次发送请求都会带上Authorization头部参数,除了使session过期外,客户端如何主动注销登录呢?下面是一种解决方案:
首先需要服务端专门设置一个专门用于注销的账号,客户端主动去修改请求头Authorization信息,当服务端读取到是这个专用于注销的账户,就执行注销流程。

这种认证方式存在缺陷,首先它把加密后的账密直接放在请求头,加上base64加密的方式是可逆的,这样账密就容易泄露。所有这种认证方式一般用于对安全要求性不高的系统上。

token验证比较灵活,适用于大部分场景。
常用的token鉴权方式的解决方案是JWT,JWT是通过对带有相关用户信息的json进行加密,加密的方式比较灵活,可以根据需求具体设计,这里就不做过多介绍。

请看--》 java web cookie和session

session一般是存在内存里的,随着用户的增多,服务器的开销也明显变大了。

以上问题可以通过适当增加服务器来满足需求,但这样session的认证方式就会出现问题,比如已登录的用户session存在服务器A上,可是由于负载均衡,下次请求到了另一台服务器B上,服务器B没有保存session,则又要求用户再次登录,这明显是不合理的。

Tomcat服务器提供了集群之间session共享的解决方案,不同服务器之间通过复制更新session的方式来共享session,但如果集群的数量很多,检查和复制的行为会占去一定资源,因此这种方式在服务器比较多的情况下是不理想的。

如果通过哈希的方式某个用户请求路由到某一台服务器上,那么这个用户只需在这台服务器上保存session,可以解决上述问题,但同时这也限制了集群负载均衡的能力,可能会出现某一时刻,大量的请求到达某一台服务器,但是其他服务器又相对空闲的情况。

最后一点,由于sessionid是基于cookie存储的方式保存,如果cookie被截获,用户就容易受到跨站请求伪造的攻击,这是不安全的。

请看--》 身份认证系统OAuth2的四种模式

以上是关于常见的鉴权方式,你真的不想知道吗的主要内容,如果未能解决你的问题,请参考以下文章

基于token机制鉴权架构

5G UE — USIM Card — 身份鉴权

WebAPI常见的鉴权方法,及其适用范围

接口测试鉴权初了解

微服务中的鉴权该怎么做?

Spring Cloud Gateway + Jwt + Oauth2 实现网关的鉴权操作