OAuth2.0

OAuth2.0  开发受权协议安全

四种角色:服务器

Resource Owner 用户: 资源拥有者资源

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

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

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

 

典型应用情景: 密码

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

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

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

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

故如今的问题是怎么获取到Token。

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

受权码

简单模式

用户名、密码方式

客户端模式

 

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

全部Client 都须要在认证服务器中进行注册来代表Client能够从认证服务器中获取Token,其中注册的消息: ClientId 、 ClientSecret、RedirectUri。

受权码模式:

一、Client 访问 Auth Server (stirng GetCode(ClientId,ClientSecret)) 经过ClientId,ClientSecret换取受权Code

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

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

 

简单模式:

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

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

 

用户名、密码模式:

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

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

 

客户端模式:

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

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

 

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

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

相关文章
相关标签/搜索