《常用的Token后台认证机制Token机制相对于Cookie机制的优势.docx》由会员分享,可在线阅读,更多相关《常用的Token后台认证机制Token机制相对于Cookie机制的优势.docx(8页珍藏版)》请在第壹文秘上搜索。
1、我们大家在客户端频繁向服务端请求数据时,服务端就会频繁地去数据库查询用户名和密码并进行对比,判断用户名和密码正确与否,并作出相应提示,也就是在这样的背景卜.Token便应运而生。筒单来说,Token是服务端生成的一串字符串,以作为客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个TOken前来清求数据即可,无需再次带上用户名和密码,其目的是为了减轻服务器的压力,战少频繁的查询数据朦,使服务器更加安全整定。生成Token过程中的敷捐加密任客户湘请求服务器端生成token的过程中,主要涉及的两个数据需要加密的情况。一是首次登陆时需
2、要传用户名和密码,其中密码不能以明文传输,需要RSA进行加密.传到服务器端可通过私的进行解密。二是服务器首次传输token给客户端时可以对token进行RSA加密,客户端再通过私钥进行斛密,如卜.图:第一次登录请求公捐1公捐2.乱胡2用户名、公钥1加定的前科、公仍2用户密码由私钥1解至后得到公钥2加密的token、SeSSiOnld公钥1、私钥1服务器token由私捐2解密后得到筒单了解了Token的生成过程和作用后,我们一起来探讨一下常用的认证机制,主要有HTTPBaSiCAUth(HnP基本身份验证)、OAUth(开放授权)、CookieAuth.Tokenuth四种机制.HTTPBasi
3、cAuthIITTPBasicuth(HTTP基本身份验证,简单点说明就是每次请求APl时都提供用户的username和password,简言之,BaSiCAUth是配合RESTfUlAPI使用的最筒单的认证方式,只需提供用户名密码即可,但由于有把用户名密码暴露给第三方客户端的风险,在生产环境下被使用的越来越少,因此,在开发对外开放的KESTfulAPl时,尽量避免采用HTTPBaSiCAUIhOAUthOAUth(开放授权)是一个开放的授权标准,允许用户让第三方应用访问该用户在某一Web服务上存储的私密的资源(如照片,视顼,联系人列表),而无需将用户名和密码提供给第三方应用。OAUIh允许用
4、户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据。制一个令牌授权一个特定的第三方系统(例如,视频编班网站)在特定的时段(例如,接下来的2小时内)内访问特定的资源(例如仅仅是某一相册中的视频)。这样,OAUth让用户可以授权第三方网站访问他们存储在另外服务提供者的某些特定信息,而非所有内容,这种基于ORUlh的认证机制适用于个人消费者类的互联网产M,如社交类APP等应用,但是不太适合拥有自有认证权限管理的企业应用:CookieAuthCookie(砧存在用户本地终端上的数据)认证机制就是为一次请求认证在服务施创建一个SeSSiOn对象,同时在客户端的浏览器端创建了一个COo
5、kiC对象:通过客户端带上来Cookie对象来与服务器端的SeSSi。”对象匹配来实现状态管理的“我认的.当我们关闭浏览器的时候,cookie会被删除。但可以通过修改cookie的expiretime使CoOkiC在一定时间内有效;COokie主要运用于以下三个方面:1、会话状态管理,如用户登录状态、股物车、游戏分数或其他需要记录的信息:2,个性化设置,如用户自定义设防.、主通等:3、浏览甥行为跟踪。CoOkie工作原理IHTTPlgy,KaWPQi1gk3HTTFgd。曲4樽NUKWkgki-HRIE&内刖MfM中5HTTP窜历欠“农SUVPfM(cocktm).OBffP7HTTP4fiT
6、okenAuth的优点Token机制相对于Cookie机制又有什么好处呢?1.支持涔域访问:Cookie是不允许境域访问的,这一点对TCken机制是不存在的.前提是传输的用户认证信息通过HTTP头传输。2.无状态(也称:服务端可扩展行):Token机制在服务端不需要存储SeSSion信息.因为TOken自身包含了所有登录用户的佶息,只需要在客户端的cookie或本地介质存储状态信息。3.更适用CDX:可以通过内容分发网络请求你眼务端的所有资料(如:javascript,HTM1.,图片等),而你的服务端只要提供APl即可.4.去耦:不需要绑定到一个特定的身份验证方案,Token可以在任何地方生
7、成,只要在你的APl被两用的时候,你可以迸行Token生成调用即可。5.更适用干移动应用:当你的客户端是一个原生平行(iOS.Android,Windows8等)时,COokie是不被支持的(你需要通过CoOkie容器进行处理.),这时采用Token认证机制就会简单得多。6.CSRF:因为不再依赖FCookie,所以你就不需要考虑对CSRF(涔站请求伪造)的防范。7.性能:一次网络往返时间(通过数据底杳询session信息)总比做一次HNACSHA256计算的Token验证和解析要费时汨多。8.不需要为登录页面做特殊处理:如果你使用PrOtrHCtOr做功能测试的时候,不再需要为登录页面做特殊
8、处理.9.基于标准化:你的APl可以采用标准化的JSONWebToken(JWT)e这个标准已经存在多个后端库(NET,Ruby,Java1Pylhon,PHP)和多家公司的支持(如:Firebase,Google,Microsoft).我们大家在客户端频繁向极务端请求数据时,服务端就会频繁地去数据库查询用户名和密码并进行对比,判断用户名和密码正确与否,并作出相应提示,也就是在这样的背景下Token便应运而生。简单来说,Token是服务端生成的一半字符串,以作为客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此TOken返回给客户端,以后客户端只需带上这个TOken前来请
9、求数据即可,无需再次带上用户名和密码,其目的是为了诚轻服务器的压力,然少频繁的杳询数据库,使服务器更加安全称定.生成Token过程中的数据加密在客户端请求服务器端生成token的过程中,主要涉及的两个数据需要加密的情况。一是首次登陆时需要借用户名和密码,其中密码不能以明文传输,需要RSA进行加密,传到服务器端再通过私钥进行解密。二是服务器首次传输token给客户端时可以对token进行RSA加密,客户端再通过私钥进行解密,如下图:第一次签录谓求公钥2、私钥2客户籍公钥1用户名、公钥1加密的鱼科、公钥2公钥2加密的token、sessiold公钥1、私钥1蜃务器token由私物2解密后得到的单了
10、解了Token的生成过程和作用后.我们一起来探讨一口常用的认证机制,主要有HTTPBaSiCAUth(HTTP基本身份验证)、OAUth(开放授权、CookieAuth,TokenAUth四种机制.HTTPBasicAuthIITTPBasicAuth(HTTP基本身份睑证,简单点说明就是每次请求API时都提供用户的username和password,简言之,BaSiCAUth是配合RESTfUlAPl使用的最简单的认证方式,只需提供用户名密码即可,但由于有把用户名密码暴露给第三方客户端的风险,在生产环境下被使用的越来越少.因此,在开发对外开放的RESTfulPI时,尽量避免采用HTTPBaS
11、iCAuthOAuthOAuth(开放授权)是个开放的授权标准,允许用户让第三方应用访问该用户在某一Web服务上存储的私密的资源(如照片.视频,联系人列表),而无需将用户名和密码提供给第三方应用.OAUth允许用户提供一个令牌,而不是用户名和带码来访问他们存放在特定服务提供者的数据。每一个令牌授权一个特定的第三方系统(例如,视频编辑网站)在特定的时段(例如I,接卜.来的2小时内)内访问特定的资源(例如仅仅是某一相册中的视频。这样,OAUth让用户可以授权笫三方网站访问他们存储在另外服务提供者的某些特定信息,而非所有内容.这种基于OAuth的认证机制适用于个人消费者类的互联网产品,如社交类APP
12、等应用,但是不太适合拥有自有认证权限管理的企业应用;CookieAuthCookie(储存在用户本地终端上的数据)认证机制就是为一次请求认证在服务端创建一个SeSSion对望,同时在客户端的浏览器端创建了一个CoOkie对象:通过客户端带上来CoOkie对象来与服务器端的SeSSiOn对象见配来实现状态管理的.欣认的,当我们关闭浏览器的时候.cookie会被删除。但可以通过修改CoUkie的expiretime使Cookie在一定时间内有效:C。Okie主要运用于以下三个方面:1、会话状态管理.如用户登录状态、购物车、游戏分数或其他需要记录的信息:2、个性化设置,加用户自定义设置、主题等:3、
13、浏览器行为跟踪.Cookie工作原理4KSWKgki.M8RmtM!SHTTPaiR.陟人虞浜8上加伯,(COCta彩灵)6MWCoekte.RDIVPTradtxalCookie-BasedAuthModernToken-BasedAutTokenAUth的优点Token机制相时于Cookie机制又有什么好处呢?1.支持跨域访问:Cookie是不允许境域访问的,这一点对TokCn机制是不存在的,前提是传输的用户认证信息通过HTTP头传输,2. 无状态(也称:服务端可扩展行):Token机制在服务端不.而要存偌SeSSion信息,因为TUken自身包含了所有登录用户的信息,只需要在客户端的co
14、okie或本地介质存储状态信息.3. 3.更适用CDN:可以通过内容分发网络请求你服务端的所有资料(如:javascript,HTM1.,图片等),而你的服务端只要提供APl即可。4. 4.去戕:不福要舞定到一个特定的身份验证方案,Token可以在任何地方生成,只要在你的APl被调用的时候,你可以进行Token生成调用即可。5. 5.更适用于移动应用:当你的客户端是一个原生平台(iOS,Android,UindOlrS8等)时,Cookie是不被支持的(你诟要通过Cookie容涔迸行处理),这时采用Token认证机制就会简单得多.6. 6.CSRF:因为不再依赖于Cookie,所以你就不需要考虑对CSRF(跨站请求伪造)的防范。7. 7.性能:一次网络往返时间(通过数据库查询SeSSiOn信息)总比做一次HMACSHA256计算的Token验证和解析要费时得多.8. 8.不需要为登录页面做特殊处理:如果你使用ProtraClOr做功能测试的时候,不再需要为登录页面做特殊处理.9. 9.基于标准化:你的APl可以采用标准化的JSONIebToken(JIT).这个标准已经存在多个后端底(NET,Ruby,Java,Python,PHP)和多家公司的支持(如:Eirebase,Google,Microsoft)。