zoukankan      html  css  js  c++  java
  • OAuth的解释

    就是对第三方应用的授权机制,使其获取用户的数据

    数据所有者收到第三方请求授权后,告诉系统通过第三方应用的请求,系统就会自动生成一个令牌(token),用来替代密码,供第三方应用使用。

    令牌的特点

    是短期有效的。因为获取了令牌就相当于获取了密码,所以需要保证安全性,用户也不能进行更改。

    令牌可以被数据所有者撤销,立即失效。

    令牌是有权限范围的,并不是获取了令牌就可以代替密码使用。

    而数据所有者向第三方应用颁发令牌有四种方式,无论哪种方式,客户端申请权限之前,都必须到系统备案,说明自己的身份,然后会获取两个身份识别码:客户端ID(client ID)和客户端密钥(client password)

    第一种授权方式:识别码

    第三方应用先申请一个授权码,再通过授权码请求令牌。这种方式安全性最高,适用于有后端的Web应用。授权码通过前端发送,而令牌储存在后端,而且所有与资源服务器的通信都在后端完成。

    第一步:A网站提供一个链接,用户点击后就会跳转到B网站。此时A网站的请求参数有response_type=code,表示以要求返回授权码。client_id用来向网站B标明身份,redirect_url表示网站B接收或拒绝后跳转的页面,scope表示授权范围

    第二步:用户跳转后,B网站会要求用户登录,然后询问是否同意给A网站授权,同意后会跳转到指定的地址,并带上授权码

    第三步:A网站拿到授权码后,就可以在后端,向B网站请求令牌 参数中的client_id和client_secret用来标明身份,grant_type值为AUTHORIZATION_CODE,表示请求授权的是授权码,code为授权码,redirect_url是返回令牌跳转的地址

    第四步:B网站接受请求后,就会颁发令牌,方法就是向返回的URL上发送json格式的数据。其中aceess_token就是令牌

    第二种授权方式:隐藏式

    有的应用没有后端,就只能将令牌储存在前端

    第一步:网站A提供一个链接,要求用户跳转到网站B,授权令牌给网站A使用。参数中response_type为token,表示直接返回令牌,redirect_url表示同意后的跳转地址

    第二步:网站B接受请求,跳转到之前指定的URL,并在参数中带上令牌。

    注意:令牌是URL的锚点而不是查询字符串,不会发送到服务器,减小泄露的可能

    第三种授权方式:密码式

    如果高度信任某应用,可以将用户名和密码直接告诉该应用,该应用通过其请求令牌

    第一步:A网站要求用户提供B网站的用户名和密码,直接通过用户名和密码请求令牌。参数中grant_type为password,表示为密码式,username和password分别是B 的用户名和密码。

    第二步:B网站验证身份通过后,直接将令牌当做json数据,放在http响应中返回

    第四种方式:凭证式

    适用于没有前端的命令行应用,

    第一步:A应用在命令行上向B网站发送请求。参数中grant_type为client_credentials表示采用凭证式,client_id和client_secret用来标明身份

    第二步:B网站验证身份后向A应用返回令牌

    这种方式给出的令牌是针对应用的,而不是某个用户,因此可能有多个用户使用该令牌

  • 相关阅读:
    Data Visualisation Cheet Sheet
    数据预处理
    算法题目
    集成方法
    Mysql数据库重要知识点(知了堂学习心得)
    Working with Data » Getting started with ASP.NET Core and Entity Framework Core using Visual Studio » 创建复杂数据模型
    Working with Data » Getting started with ASP.NET Core and Entity Framework Core using Visual Studio » 排序、筛选、分页以及分组
    Working with Data » 使用Visual Studio开发ASP.NET Core MVC and Entity Framework Core初学者教程
    ASP.NET Core文档中Work with Data章节的翻译目录
    webpages框架中使用Html.TextArea()在前台显示多行信息时,如何进行大小、样式的设置
  • 原文地址:https://www.cnblogs.com/ashen1999/p/12804408.html
Copyright © 2011-2022 走看看