zoukankan      html  css  js  c++  java
  • 常见的4种认证机制

      本文主要讲的是常用的登陆认证机制。随手的笔记,可以快速了解这几种认证方式的原理。

    1、HTTP Basic Auth

      HTTP Basic Auth ,简单的来说就是每次请求API的时候,都提供用户的username和password。
    用这种方式可以不用登陆,随时请求后台任何一个方法。但如何知道用户是否拥有权限的?可以在每次请求任何一个方法时候,都携带用户名和密码,然后后台每次都对用户名和密码进行校验,并且对角色进行校验,之后再选择是否放行。这就意味着每次都要做校验。
      缺点:容易泄密。只适用于内部使用。

    2、Cookie Auth(也叫Session认证)

      

      登陆请求,当服务端校验通过之后,服务端会创建一个独立的Session来保存用户信息,以作为登陆成功的标记。每一个用户创建一个Session对象。服务端存储完session数据之后,那浏览器是如何知道该用户登陆过?
      首先服务端会将Session对象的id放入Cookie的对象里,Cookie对象是键值对 key=value,对应的键是名字,值是id,然后通过响应头写回给浏览器,浏览器会将响应头信息自动存放到浏览器的缓存里。
      用户登陆成功后,若想访问服务器端的其他需要权限的页面时,该请求必须要携带浏览器之前存储的session id ,也是通过请求头的方式,session id到服务端后会搜索是否有该session id 所对应的对象,有就能拿到,说明用户还处于登陆状态。
      spring-security的流程其实也是一套对上述流程的封装,再到后来的整合CAS,依然还是此方式。
      在分布式系统中,整合CAS的原因:
    session认证的缺陷:利用服务器的内存资源来存储session,而一台服务器的内存是不可以共享的,所以如果要多台服务器之间共享session,所以就有了CAS整合。其实这就是session共享的方案。
     

    3、OAuth 

      OAuth(开放授权)是一个开放的授权标准,允许用户让第三方应用访问该用户在某一个web服务器上的私密资源,而无需将用户名和密码提供给第三方应用。
      Auth 允许用户提供一个令牌,而不是用户名和密码来访问它们存放在特定服务器提供者的数据。每一个令牌授权一个特定的第三方系统,在特定的时间段内访问特定的资源。

     
     

    4、Token Auth

      使用基于Token的身份验证,在服务端不需要存储用户登陆信息。
      流程:
      1、客户端使用用户名和密码请求登陆
      2、服务端收到请求,去验证用户名和密码
      3、验证完后,服务端会签发一个Token(包含用户信息的一个字符串),再把这个Token发送给客户端
      4、客户端收到Token后存储起来,比如存储到Cookie又或者本地
      5、客户端每次向服务端请求资源时,需要携带服务端签发的Token
      6、服务端收到请求,然后去验证客户端请求里带着的Token(使用算法验证),验证成功,就返回数据给客户端。
      其他服务器只要是使用同一套算法,就可以做信息的校验,就不需要做所谓的session共享。
     
      Token Auth 的优点
      Token 机制相对于 Cookie 机制又有什么好处呢?
      支持跨域访问: Cookie 是不允许垮域访问的,这一点对 Token 机制是不存在的,
      前提是传输的用户认证信息通过 HTTP 头传输.

     

  • 相关阅读:
    IDEA新字体出现啦!!!
    Spring学习笔记1---Bean的自动装配
    Spring学习笔记1---Bean的作用域
    Spring学习笔记1---C命名和P命名的注入
    Spring学习笔记1---IoC创建对象的方式
    Spring学习笔记1---IoC容器
    Spring学习笔记1---IOC理论推导
    vfatbGUbLE
    Spring学习笔记1---环境配置(IDEA)
    springboot整合ES
  • 原文地址:https://www.cnblogs.com/qinjunlin/p/13644139.html
Copyright © 2011-2022 走看看