• 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这个中间层来达到隔离、安全的效果。

  • 相关阅读:
    linux 打包 压缩
    HDU 2036 改革春风吹满地
    Windows 7 蓝屏代码大全 & 蓝屏全攻略
    Linux Shell參数扩展(Parameter Expansion)
    android不是内部或外部命令,也不是可执行的程序或批处理文件
    Object类
    抽象类中注意事项
    抽象类和接口的区别
    类接口之间的关系
    接口
  • 原文地址:https://www.cnblogs.com/PengQuanfeng/p/9907632.html
Copyright © 2020-2023  润新知