Go语言网络课程更新专栏Golang语言社区Go语言游戏服务器相关

常见登录验证机制

2019-04-03  本文已影响2人  Golang语言社区

http://www.golang.ltd/forum.php?mod=viewthread&tid=7215&from=portal

| 常见登录验证机制
HTTP Basic Auth

HTTP Basic Auth 简单点说明就是每次请求 API 时都提供用户的 username 和 password,简言之,Basic Auth 是最简单的认证方式,只需提供用户名密码即可,但由于有把用户名密码暴露给第三方客户端的风险,在生产环境下被使用的越来越少。因此,尽量避免采用 HTTP Basic Auth。

OAuth

OAuth(开放授权)是一个开放的授权标准,允许用户让第三方应用访问该用户在某一web服务上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。

OAuth允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据。每一个令牌授权一个特定的第三方系统(例如,QQ,微信)在特定的时段(例如,接下来的2小时内)内访问特定的资源(例如仅仅是某一相册中的视频)。这样,OAuth让用户可以授权第三方网站访问他们存储在另外服务提供者的某些特定信息,而非所有内容

OAuth2.0的流程: image

这种基于OAuth的认证机制适用于个人消费者类的互联网产品,如社交类APP等应用,但是不太适合拥有自有认证权限管理的企业应用。

Cookie Auth

Cookie认证机制就是为一次请求认证在服务端创建一个Session对象,同时在客户端的浏览器端创建了一个Cookie对象;通过客户端带上来Cookie对象来与服务器端的session对象匹配来实现状态管理的。默认的,当我们关闭浏览器的时候,cookie会被删除。但可以通过修改 cookie 的 expiretime 使cookie在一定时间内有效。

Token Auth

对于Token认证机制,简单来说,就是每次客户端输入账号密码后向服务端发起登录请求,服务端在通过登录验证后,给客户端返回一个任意字符串,既token(token必须与用户的账户关联,如用userid和token形成键值对,保存在内存中(redis))。客户端拿到这个token后,在之后所有需要验证登录的请求中,或者参数中带上token或者在header中携带token,然后服务端根据接收到的token来验证用户的登录状态是否存在,是否有效。

出于安全考虑,token在每次登录时重新生成,并可以设置有效期,每次有效操作后更新token的时间戳,保证token有效期往后延续。

为了避免token被截获,伪造非法请求,在每次请求时,可以用userid+token+时间戳+密钥+请求参数,进行签名,服务端验证token,同时验证签名,以保证请求的安全性。

Token于cookie机制:

image

Token Auth相对于Cookie机制的优点

|

上一篇下一篇

猜你喜欢

热点阅读