zoukankan      html  css  js  c++  java
  • OAuth2.0

    OAuth2.0  开发授权协议

    四种角色:

    Resource Owner 用户: 资源拥有者

    Resource  Server 资源服务器: 资源托管服务器

    Auth Server 授权服务器: 认证授权服务器

    Client 客户端: 需要访问用户资源的第三方应用程序

    典型应用情景: 

    Client 需要访问用户在资源服务器中的私有资源。

    最直接粗暴的方式: Client 中通过用户名、密码来访问资源服务器私有资源。 

    此方式的弱点是:  用户名、密码暴露给Client了, 导致资源服务器不安全。

    所以按照抽象理论则应该抽象出一个抽象层出来,不是直接通过UserName/Password来访问资源服务器, 这个抽象层就是Token, 此Token具有过期时间等设定从而通过这个抽象层来保证资源服务器的安全。 

    故现在的问题是怎么获取到Token。

    在OAuth2.0 中提供了四种方式来获取Token:

    授权码

    简单模式

    用户名、密码方式

    客户端模式

    在OAuth2.0 的体系下首先有个前提条件是:

    所有Client 都需要在认证服务器中进行注册来表明Client可以从认证服务器中获取Token,其中注册的消息: ClientId 、 ClientSecret、RedirectUri。

    授权码模式:

    1、Client 访问 Auth Server (stirng GetCode(ClientId,ClientSecret)) 通过ClientId,ClientSecret换取授权Code

    2、Client 访问 Auth Server (Json GetToken(ClientId,ClientSecret,Code)) 通过Code换取Token

    3、Client 利用Token来访问资源服务器

    简单模式:

    1、Client 访问 Auth Server (Json GetToken(ClientId,ClientSecret))  通过ClientId,ClientSecret换取Token

    2、Client 利用Token来访问资源服务器

    用户名、密码模式:

    1、Client 访问 Auth Server (Json GetToken(ClientId,ClientSecret,UserName,Password))  通过ClientId,ClientSecret,UserName,Password换取Token,注意Client不能保存UserName和Password

    2、Client 利用Token来访问资源服务器

    客户端模式:

    1、Client 访问 Auth Server (Json GetToken(ClientId,ClientSecret))  通过ClientId,ClientSecret换取Token

    2、Client 利用Token来访问资源服务器

    从上面的整个流程来看就是利用ClientId,ClientSecret/UserName,Password/Code 来换取Token,最后利用Token来访问资源。

    所以关键点就是抽象出了Token这个中间层来达到隔离、安全的效果。

  • 相关阅读:
    1009 说反话 (20 分)
    1007 素数对猜想 (20 分)
    Visual Studio2017下载方法
    百词斩和扇贝打卡测试与评估
    创建者模式->工厂模式
    STM32F427|----------IO讲解与应用
    MySQL的索引
    STM32F103RCt6 与 MG996R
    2020物联网实验室的考核题目
    初学数据库-MySQL&IDEA&Navicat
  • 原文地址:https://www.cnblogs.com/PengQuanfeng/p/9907632.html
Copyright © 2011-2022 走看看