前后端常见的几种鉴权方式(小结)

时间:2021-05-25

最近在重构公司以前产品的前端代码,摈弃了以前的session-cookie鉴权方式,采用token鉴权,忙里偷闲觉得有必要对几种常见的鉴权方式整理一下。

目前我们常用的鉴权有四种:

  • HTTP Basic Authentication
  • session-cookie
  • Token 验证
  • OAuth(开放授权)
  • 一.HTTP Basic Authentication

    这种授权方式是浏览器遵守http协议实现的基本授权方式,HTTP协议进行通信的过程中,HTTP协议定义了基本认证认证允许HTTP服务器对客户端进行用户身份证的方法。

    认证过程:

    1. 客户端向服务器请求数据,请求的内容可能是一个网页或者是一个ajax异步请求,此时,假设客户端尚未被验证,则客户端提供如下请求至服务器:

    Get /index.html HTTP/1.0
    Host:/oauth2.0/show?which=Login&display=pc&response_type=code&client_id=100270989&redirect_uri=https://passport.csdn.net/account/login?oauth_provider=QQProvider&state=test

    这个url地址我们可以看见Auth2.0常见的几个参数:
    response_type,返回类型
    client_id,第三方应用id,由授权服务器(qq)在第三方应用提交时颁发给第三方应用。
    redirect_uri,登陆成功重定向页面
    oauth_provider,第三方授权提供方
    state,由第三方应用给出的随机码
    第二步. 返回用户凭证(code),并返回一个凭证(code),当用户点击授权并登陆后,授权服务器将生成一个用户凭证(code)。这个用户凭证会附加在重定向的地址redirect_uri的后面

    https://passport.csdn.net/account/login?code=9e3efa6cea739f9aaab2&state=XXX

    第3步. 请求授权服务器授权:

    经过第二部获取code后后面的工作就可以交给后台去处理的,和用户的交互就结束了。接下来我的需要获取Access Token,我们需要用他来向授权服务器获取用户信息等资源。
    第三方应用后台通过第二步的凭证(code)向授权服务器请求Access Token,这时候需要以下几个信息:

    • client_id 标识第三方应用的id,由授权服务器(Github)在第三方应用提交时颁发给第三方应用
    • client_secret 第三方应用和授权服务器之间的安全凭证,由授权服务器(Github)在第三方应用提交时颁发给第三方应用
    • code 第一步中返回的用户凭证redirect_uri 第一步生成用户凭证后跳转到第二步时的地址
    • state 由第三方应用给出的随机码

    第四步. 授权服务器同意授权后,返回一个资源访问的凭证(Access Token)。

    第五步. 第三方应用通过第四步的凭证(Access Token)向资源服务器请求相关资源。

    第六步. 资源服务器验证凭证(Access Token)通过后,将第三方应用请求的资源返回。

    从用户角度来说,第三方授权可以让我们快速的登陆应用,无需进行繁琐的注册,同时不用记住各种账号密码。只需要记住自己常用的几个账号就ok了。
    从产品经理的角度来所,这种授权方式提高用户的体验满意度。另一方面可以获取更多的用户。

    总结:

    授权方式多种多样,主要还是要取决于我们对于产品的定位。如果我们的产品只是在企业内部使用,token和session就可以满足我们的需求,如果是面向互联网的大众用户,那么第三方授权在用户体验度上会有一个很大的提升。

    还是那句话,上面可能有很多‘通假字'勿怪,我写作的目的一方面是希望和大家分享我掌握的点点滴滴,另一方面也是梳理一下掌握的知识。

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

    声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

    相关文章